{"id":32169,"date":"2025-02-20T16:20:21","date_gmt":"2025-02-20T15:20:21","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/?p=32169"},"modified":"2025-02-20T16:20:23","modified_gmt":"2025-02-20T15:20:23","slug":"como-subir-tus-apps-macos-a-la-appstore-connect","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/","title":{"rendered":"Como subir tus apps macOS a la AppStore Connect"},"content":{"rendered":"\n<p>Desde Xojo 2024r4 el IDE permite aplicar el Sandboxing, Hardened Runtime y notarizar autom\u00e1ticamente las apps macOS. \u00bfNo ser\u00eda genial completar el paso final y ser capaz de enviar el bundle creado directamente a la AppStore Connect? Contin\u00faa leyendo y te mostrar\u00e9 como hacerlo.<\/p>\n\n\n\n<p>Si eres del tipo de persona que le gusta saber &#8220;c\u00f3mo funcionan las cosas bajo el cap\u00f3&#8221; entonces puedes seguir los siguientes pasos para saber c\u00f3mo puedes subir manualmente el bundle de tus apps a la App Store Connect desde la l\u00ednea de comandos (o bien convertir las siguientes instrucciones en los correspondientes scripts de Xojo que se ejecuten como parte de la compilaci\u00f3n desde el IDE). Por supuesto, esto tambi\u00e9n lo puedes aplicar sobre el bundle de app creado mediante cualquier otro entorno de desarrollo.<\/p>\n\n\n\n<p>Ciertamente, existen algunos requerimientos para que todo esto pueda funcionar, pero estoy seguro de que ya los has cumplido en el caso de que hayas le\u00eddo mi anterior art\u00edculo sobre c\u00f3mo aplicar Sandboxing, Hardened Runtime y Notarizaci\u00f3n a tus apps macOS. Quiz\u00e1 el requerimiento m\u00e1s importante sea el de contar con una membres\u00eda de pago en el Programa de Desarrolladores de Apple (lo que supone un coste aproximado de 90 euros anuales).<\/p>\n\n\n\n<p>Por ejemplo, es preciso que Xcode est\u00e9 instalado en tu Mac dado que necesitaremos utilizar las herramientas altool y productbuild desde la l\u00ednea de comandos, y estas se incluyen con Xcode. De igual modo es preciso crear una contrase\u00f1a espec\u00edfica para la aplicaci\u00f3n altool, pero puedes ahorrarte este paso en el caso de que ya la hubieses creado para usar la herramienta notarytool empleada en el mencionado art\u00edculo sobre Sandboxing, Hardened Runtime y Notarizaci\u00f3n.<\/p>\n\n\n\n<p>De igual modo, mientras que a la hora de distribuir tus apps macOS desde tu sitio web estas han de firmarse utilizando el certificado &#8220;Apple Development&#8221;, cuando se trata de compilar tus apps para que se distribuyan en la Mac AppStore, tendr\u00e1s que firmarlas utilizando el certificado &#8220;Apple Distribution&#8221;; de modo que tendr\u00e1s que asegurarte de utilizar dicho valor en el campo macOS &gt; Signing &gt; Developer ID en el IDE de Xojo.<\/p>\n\n\n\n<p>Igualmente importante, para que podamos subir la app a la AppStore Connect tendremos que crear un archivo de paquete a partir del bundle de la app, y dicho archivo de paquete (con la extensi\u00f3n .pkg) ha de firmarse utilizando el certificado &#8220;3rd Party Mac Developer Installer&#8221;. Por tanto, aseg\u00farate de que tengas este certificado instalado tambi\u00e9n en el llavero de tu Mac.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-primero-nbsp-lo-primero\">Primero\u2026&nbsp;lo primero<\/h2>\n\n\n\n<p>Pero antes de que puedas subir tu archivo .pkg al sitio web de la AppStore Connect, hay algunas cosas que debes de tener en cuenta primero, y que son requeridas por Apple para cualquier app que se vaya a distribuir a trav\u00e9s de la Mac AppStore.<\/p>\n\n\n\n<p>Lo primero consiste en registrar un App ID (o Identificado, Identifier en ingl\u00e9s) en el <a href=\"https:\/\/developer.apple.com\/account\/resources\/identifiers\/\">Apple Developer Portal<\/a>. Cuando est\u00e9s en ello, aseg\u00farate de crear un Identificador expl\u00edcito en vez de uno de tipo comod\u00edn (wildcard, en ingl\u00e9s). Tambi\u00e9n importante, aseg\u00farate de que dicho identificador (en la forma de un DNS inverso) es el mismo que vayas a utilizar o est\u00e9s utilizando ya en el campo macOS &gt; Build &gt; Bundle Identifier de tu proyecto Xojo. Si no se corresponden, entonces puedes esperar algunos problemas durante el proceso.<\/p>\n\n\n\n<p>Lo segundo consiste en crear un nuevo registro para la aplicaci\u00f3n propiamente dicha en el <a href=\"https:\/\/appstoreconnect.apple.com\">sitio web de la AppStore Connect<\/a>. Aqu\u00ed es donde tendr\u00e1s que proporcionar toda la informaci\u00f3n requerida por Apple, principalmente en dos \u00e1reas: toda la informaci\u00f3n que ser\u00e1 visible en el registro de la aplicaci\u00f3n cuando el usuario la consulte en la AppStore (tal como descripci\u00f3n, im\u00e1genes, precio, etc.), y la solicitada de forma interna por parte de Apple para el proceso de revisi\u00f3n. En fin, aseg\u00farate de crear el registro para tu app macOS y de rellenar toda la informaci\u00f3n solicitada.<\/p>\n\n\n\n<p>Una vez hayas completado estos pasos ya podr\u00e1s centrarte en la l\u00ednea de comandos para crear el archivo .pkg y subirlo manualmente (o bien utilizando opcionalmente la app Transporter para ello).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-canta-canta-canta-nbsp-la-cancion-de-re-firmar\">Canta, canta, canta\u2026&nbsp;\u00a1la canci\u00f3n de re-firmar!<\/h2>\n\n\n\n<p>Cuando se compila una app macOS desde el IDE de Xojo este se encargar\u00e1 de firmarla correctamente bas\u00e1ndose en los ajustes seleccionados en la secci\u00f3n Build Settings &gt; Sign. Pero dado que Apple requiere que algunas entradas del archivo Info.Plist est\u00e9n formateadas de una forma concreta (especialmente los valores asociados a las claves CFBundleShortVersionString y CFBundleVersion), y el hecho de que tambi\u00e9n se requiere la presencia de la clave LSApplicationCategoryType junto a cualquiera de los <a href=\"https:\/\/developer.apple.com\/documentation\/bundleresources\/information-property-list\/lsapplicationcategorytype?language=objc\">valores correspondientes a la categor\u00eda de producto<\/a>, esto significa que hemos de editar manualmente el archivo Info.Plist generado para la aplicaci\u00f3n compilada.<\/p>\n\n\n\n<p>S\u00ed, claro que podemos crear un archivo de texto adicional con el nombre Info.Plist que contenga las claves y valores esperados\/apropiados junto con sus valores y arrastrarlo sobre el navegador del IDE para nuestro proyecto de forma que dicha informaci\u00f3n sea a\u00f1adida o modificada, como por ejemplo este:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;&lt;!DOCTYPE plist PUBLIC \"-\/\/Apple\/\/DTD PLIST 1.0\/\/EN\" \"https:\/\/www.apple.com\/DTDs\/PropertyList-1.0.dtd\"&gt;\n&lt;plist version=\"1.0\"&gt;\n&lt;dict&gt;\n\t&lt;key&gt;CFBundleShortVersionString&lt;\/key&gt;\n\t&lt;string&gt;1.0.0&lt;\/string&gt;\n\t&lt;key&gt;CFBundleVersion&lt;\/key&gt;\n\t&lt;string&gt;1.0.0&lt;\/string&gt;\n\t&lt;key&gt;LSApplicationCategoryType&lt;\/key&gt;\n\t&lt;string&gt;public.app-category.business&lt;\/string&gt;\n&lt;\/dict&gt;\n&lt;\/plist&gt;\n<\/pre>\n\n\n\n<p>La mala noticia es que el valor correspondiente a la clave CFBundleVersion permanecer\u00e1 inalterado.<\/p>\n\n\n\n<p>\u00bfCu\u00e1l es la desventaja de tener que editar manualmente el archivo Info.Plist en la app ya compilada? Bueno, tan pronto como realices cualquier cambio y lo guardes a disco\u2026&nbsp;se invalidar\u00e1 la firma del bundle. Pero no te asustes\u2026&nbsp;ya sabemos como volver a firmar el bundle, \u00bfverdad? (si no, te sugiero que leas primero el ya mencionado art\u00edculo sobre c\u00f3mo aplicar Sandboxing, Hardened Runtime y Notarizaci\u00f3n a las apps macOS).<\/p>\n\n\n\n<p>Por tanto, adelante, selecciona tu app compilada en el Finder, haz clic sobre su icono y selecciona la opci\u00f3n &#8220;Mostrar Contenidos&#8221; en el men\u00fa contextual. Esta acci\u00f3n te mostrar\u00e1 los &#8220;archivos internos&#8221; del bundle que compone tu app macOS. Dentro de la carpeta Contents podr\u00e1s ver el archivo Info.Plist. Haz clic sobre su icono y selecciona la opci\u00f3n que te permita abrirlo y editarlo con tu editor de textos favorito (personalmente utilizo BBEdit de BareBones Software).<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ubica la clave <strong>CFBundleVersion<\/strong> y cambia su valor de cadena de forma que no tenga m\u00e1s de tres n\u00fameros separados por puntos (tal y como se muestra en el anterior archivo Plist de ejemplo).<\/li>\n\n\n\n<li>Ubica la clave <strong>CFBundleShortVersionString<\/strong> y cambia su valor de cadena para que tenga tres n\u00fameros separados entre s\u00ed por un punto.<\/li>\n<\/ul>\n\n\n\n<p>Por supuesto, y para los valores de ambas claves, aseg\u00farate de que dichos valores de versi\u00f3n se correspondan con la versi\u00f3n de tu App (en el ejemplo he utilizado 1.0.0 como el valor de versi\u00f3n t\u00edpico para el lanzamiento inicial de cualquier app).<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A continuaci\u00f3n, a\u00f1ade la clave requerida <strong>LSApplicationCategoryType<\/strong> con el valor que mejor encaje en la categor\u00eda de producto para tu app de entre las disponibles en la <a href=\"https:\/\/developer.apple.com\/documentation\/bundleresources\/information-property-list\/lsapplicationcategorytype?language=objc\">Documentaci\u00f3n de Apple<\/a> (en el anterior ejemplo de archivo Plist he utilizado la correspondiente a la categor\u00eda Business):<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">\t&lt;key&gt;LSApplicationCategoryType&lt;\/key&gt;\n\t&lt;string&gt;public.app-category.business&lt;\/string&gt;\n<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Guarda los cambios del archivo Info.Plist modificado. Ahora es el momento de volver a firmar el bundle.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-y-que-pasa-con-los-entitlements-de-la-app\">\u00bfY qu\u00e9 pasa con los Entitlements de la app?<\/h2>\n\n\n\n<p>\u00a1Hey\u2026&nbsp;espera! Dado que tenemos que volver a firmar de nuevo el bundle de la app\u2026&nbsp;\u00a1tambi\u00e9n necesitaremos volver a asociar los entitlements esperados y\/o requeridos para su funcionamiento! Esto significa que por lo menos hemos de a\u00f1adir un entitlement requerido-y-muy-importante: \u00a1activar el Sandboxing! (esto es necesario para cualquier app enviada para su distribuci\u00f3n en la Mac AppStore).<\/p>\n\n\n\n<p>Si bien Xojo 2024r4+ se encarga de a\u00f1adir esta informaci\u00f3n autom\u00e1ticamente por nosotros, ahora tendremos que hacerlo manualmente. Esto significa crear nuestro propio archivo .entitlements que se utilizar\u00e1 durante el re-firmado de la app. Por ejemplo, para una app t\u00edpica (y realmente simple), s\u00f3lo tendr\u00eda que activarse la capacidad que permita al usuario abrir y guardar archivos:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;&lt;!DOCTYPE plist PUBLIC \"-\/\/Apple\/\/DTD PLIST 1.0\/\/EN\" \"https:\/\/www.apple.com\/DTDs\/PropertyList-1.0.dtd\"&gt;\n&lt;plist version=\"1.0\"&gt;\n&lt;dict&gt;\n\t&lt;key&gt;com.apple.security.app-sandbox&lt;\/key&gt;\n\t&lt;true\/&gt;\n\t&lt;key&gt;com.apple.security.files.user-selected.read-write&lt;\/key&gt;\n\t&lt;true\/&gt;\n&lt;\/dict&gt;\n&lt;\/plist&gt;\n<\/pre>\n\n\n\n<p>Guarda este archivo con el nombre &#8220;myEntitlements.entitlements&#8221; en el disco de tu Mac. Por supuesto, en el caso de que tu app requiera de m\u00e1s entitlements o capacidades, si\u00e9ntete libre de a\u00f1adirlo sobre la anterior plantilla.<\/p>\n\n\n\n<p>Bien, ahora mismo tenemos nuestro archivo .Plist modificado y el archivo .entitlements requerido\u2026&nbsp;de modo que ya contamos con todo lo necesario para volver a firmar el bundle de la app nuevamente.<\/p>\n\n\n\n<p>Abre una ventana del Terminal y escribe el siguiente comando:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">codesign --force --timestamp --entitlements path-to-your-myEntitlements.entitlements-file  -s \"Apple Distribution: whatever-name-you-use (BZXXXXXXX)\" path-to-the-bundle-of-the-compiled-app.app \n<\/pre>\n\n\n\n<p>Observa como estamos haciendo referencia al archivo de entitlements y que tambi\u00e9n estamos usando el certificado &#8220;Apple Distribution&#8221; en vez del correspondiente a &#8220;Apple Development&#8221;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-paquetes-acme\">Paquetes Acme<\/h2>\n\n\n\n<p>Todo bien hasta ahora. Tenemos el bundle de nuestra app firmado de nuevo, de modo que ya podemos crear el archivo .pkg a partir de \u00e9l. Todo lo que necesitas es escribir el siguiente comando desde una ventana del Terminal:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">productbuild --sign \"3rd Party Mac Developer Installer: whatever-name-you-use (BZXXXXXXX)\"  --component path-to-the-bundle-of-the-compiled-app.app  \/Applications path-to-the-generated-package-file.pkg\n<\/pre>\n\n\n\n<p>Como puedes ver, en este caso estamos utilizando el certificado &#8220;3rd Party Mac Developer Installer&#8221; para firmar el paquete creado.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-hora-de-subirlo\">\u00a1Hora de subirlo!<\/h2>\n\n\n\n<p>Con el paquete creado ya tenemos todos lo necesario para subirlo al sitio web de la AppStore Connect. En este punto puedes tomar dos caminos. El primero consiste en utilizar la app Transporter que puedes descargar desde la Mac AppStore propiamente dicha (en el caso de que no lo tuvieses ya instalado). En este caso:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Abre la app Transporter.<\/li>\n\n\n\n<li>Haz clic sobre el icono &#8220;+&#8221;. Dicha acci\u00f3n mostrar\u00e1 un di\u00e1logo en el que puedes seleccionar el archivo &#8220;.pkg&#8221; creado en el paso anterior.<\/li>\n\n\n\n<li>Una vez que se haya a\u00f1adido, Transporter har\u00e1 algunas comprobaciones iniciales sobre los contenidos del paquete. Si todo va bien, deber\u00edas de ver algo similar a esto:<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/www.aprendexojo.com\/wp-content\/uploads\/2025\/01\/TransporterA.png\"><img decoding=\"async\" src=\"https:\/\/www.aprendexojo.com\/wp-content\/uploads\/2025\/01\/TransporterA.png\" alt=\"\" class=\"wp-image-13145\"\/><\/a><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>Lo interesante de utilizar Transporter es que podr\u00e1s seleccionar la opci\u00f3n &#8220;Verify&#8221; desde el men\u00fa contextual asociado (el que tiene un icono de tres puntos suspensivos). Dicha acci\u00f3n realizar\u00e1 comprobaciones m\u00e1s en profundidad de modo que puedas obtener informaci\u00f3n sobre cualquier problema detectado y puedas corregirlos antes de que la app se env\u00ede a la AppStore Connect. Por ejemplo, intencionado para el prop\u00f3sito de este art\u00edculo:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/www.aprendexojo.com\/wp-content\/uploads\/2025\/01\/TransporterB.png\"><img decoding=\"async\" src=\"https:\/\/www.aprendexojo.com\/wp-content\/uploads\/2025\/01\/TransporterB.png\" alt=\"\" class=\"wp-image-13146\"\/><\/a><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>La segunda opci\u00f3n cosiste en utilizar la herramienta de la l\u00ednea de comandos altool, mencionada anteriormente, para subir manualmente el paquete al sitio web de la AppStore Connect. Si te decides por esta ruta, todo lo que necesitas es escribir el siguiente comando en una ventana del Terminal:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">xcrun altool  --upload-package path-to-the-package-file.pkg -u your-apple-developer-login-id-goes-here -p \"your-app-specific-password-goes-here\" --type osx -apple-id \"6111111111\" --bundle-id \"com.yourcomany.yourIdentifier\" --bundle-short-version-string \"1.0.0\" --bundle-version \"1.0.0\"     \n<\/pre>\n\n\n\n<p>Algunas consideraciones sobre las opciones y valores proporcionados en dicho comando:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>-u<\/strong>: Este es el identificador de logado que utilizas cuando accedes al Portal de Desarrolladores de Apple.<\/li>\n\n\n\n<li><strong>-p<\/strong>: Esta es la contrase\u00f1a espec\u00edfica de la aplicaci\u00f3n que tendr\u00e1s que crear siguiendo los pasos proporcionados en el blog mencionado sobre Sandboxing (o bien utilizar la que ya hubieses creado).<\/li>\n\n\n\n<li><strong>-apple-id<\/strong>: Este es el valor num\u00e9rico que puedes encontrar en la secci\u00f3n General > App Information en el registro de tu app creado en appstoreconnect.apple.com:<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/www.aprendexojo.com\/wp-content\/uploads\/2025\/01\/AppStoreConnectA.png\"><img decoding=\"async\" src=\"https:\/\/www.aprendexojo.com\/wp-content\/uploads\/2025\/01\/AppStoreConnectA.png\" alt=\"\" class=\"wp-image-13147\"\/><\/a><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Dicha informaci\u00f3n tambi\u00e9n se puede obtener utilizando:<code><br>\nxcrun altool --list-apps -u your-apple-developer-login-id-goes-here -p \"your-app-specific-password-goes-here\" --output-format json<br>\n<\/code><\/p>\n<\/blockquote>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>&#8211;bundle-id<\/strong>: Aseg\u00farate de proporcionar el mismo valor que el empleado cuando creaste el Identificador para la app y, por tanto, el mismo utilizado en el campo Build Settings > macOS > Build > Build Identifier de tu proyecto Xojo.<\/li>\n\n\n\n<li><strong>&#8211;bundle-short-version-string<\/strong>: Aseg\u00farate de que sea el mismo valor utilizado en la clave CFBundleShortVersionString del archivo .Plist.<\/li>\n\n\n\n<li><strong>&#8211;bundle-version<\/strong>: Aseg\u00farate de utilizar el mismo valor que el empleado para la clave CFBundleVersion en el archivo .Plist.<\/li>\n<\/ul>\n\n\n\n<p>Una vez que se haya ejecutado el comando, tu archivo de paquete se subir\u00e1 a la AppStore Connect y, una vez completado, estar\u00e1 disponible como nueva Build que puedas a\u00f1adir al registro de tu app para el proceso de revisi\u00f3n y aprobaci\u00f3n por parte del equipo de Apple.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusi\u00f3n<\/h2>\n\n\n\n<p>Como has podido ver, son varios los detalles que debes de considerar\u2026 pero una vez que te acostumbres a ellos se simplifica el proceso a la hora de cubrir &#8220;la \u00faltima milla&#8221; para que tu app compilada se env\u00ede para su revisi\u00f3n en el sitio Web de la AppStore Connect.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Desde Xojo 2024r4 el IDE permite aplicar el Sandboxing, Hardened Runtime y notarizar autom\u00e1ticamente las apps macOS. \u00bfNo ser\u00eda genial completar el paso final y ser capaz de enviar el bundle creado directamente a la AppStore Connect? Contin\u00faa leyendo y te mostrar\u00e9 como hacerlo. Si eres del tipo de persona que le gusta saber &#8220;c\u00f3mo&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/\">Read more<\/a><\/p>\n","protected":false},"author":269,"featured_media":32200,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[10648],"tags":[10747],"collections":[],"class_list":{"0":"post-32169","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-lenguajes-de-programacion","8":"tag-desarrollo-web","9":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Como subir tus apps macOS a la AppStore Connect - Codemotion Magazine<\/title>\n<meta name=\"description\" content=\"Javier te ense\u00f1a c\u00f3mo subir tus apps macOS a App Store Connect desde la l\u00ednea de comandos, aprovechando las funciones de Xojo 2024r4.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Como subir tus apps macOS a la AppStore Connect\" \/>\n<meta property=\"og:description\" content=\"Javier te ense\u00f1a c\u00f3mo subir tus apps macOS a App Store Connect desde la l\u00ednea de comandos, aprovechando las funciones de Xojo 2024r4.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-20T15:20:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-20T15:20:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1792\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Javier\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Bloguintosh\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Javier\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/como-subir-tus-apps-macos-a-la-appstore-connect\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/como-subir-tus-apps-macos-a-la-appstore-connect\\\/\"},\"author\":{\"name\":\"Javier\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/8647944f90883a9526705a0998ffbe1a\"},\"headline\":\"Como subir tus apps macOS a la AppStore Connect\",\"datePublished\":\"2025-02-20T15:20:21+00:00\",\"dateModified\":\"2025-02-20T15:20:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/como-subir-tus-apps-macos-a-la-appstore-connect\\\/\"},\"wordCount\":2068,\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/como-subir-tus-apps-macos-a-la-appstore-connect\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an.webp\",\"keywords\":[\"Desarrollo web\"],\"articleSection\":[\"Lenguajes de programaci\u00f3n\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/como-subir-tus-apps-macos-a-la-appstore-connect\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/como-subir-tus-apps-macos-a-la-appstore-connect\\\/\",\"name\":\"Como subir tus apps macOS a la AppStore Connect - Codemotion Magazine\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/como-subir-tus-apps-macos-a-la-appstore-connect\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/como-subir-tus-apps-macos-a-la-appstore-connect\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an.webp\",\"datePublished\":\"2025-02-20T15:20:21+00:00\",\"dateModified\":\"2025-02-20T15:20:23+00:00\",\"description\":\"Javier te ense\u00f1a c\u00f3mo subir tus apps macOS a App Store Connect desde la l\u00ednea de comandos, aprovechando las funciones de Xojo 2024r4.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/como-subir-tus-apps-macos-a-la-appstore-connect\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/como-subir-tus-apps-macos-a-la-appstore-connect\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/como-subir-tus-apps-macos-a-la-appstore-connect\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an.webp\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an.webp\",\"width\":1792,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/como-subir-tus-apps-macos-a-la-appstore-connect\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lenguajes de programaci\u00f3n\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/lenguajes-de-programacion\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Como subir tus apps macOS a la AppStore Connect\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Codemotion.Italy\\\/\",\"https:\\\/\\\/x.com\\\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/8647944f90883a9526705a0998ffbe1a\",\"name\":\"Javier\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7d8697b4578139fa315e8e8058abaf814935c00af9f9f5faac583bdef6e4c334?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7d8697b4578139fa315e8e8058abaf814935c00af9f9f5faac583bdef6e4c334?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7d8697b4578139fa315e8e8058abaf814935c00af9f9f5faac583bdef6e4c334?s=96&d=mm&r=g\",\"caption\":\"Javier\"},\"description\":\"Software Engineer at Xojo, Inc.\",\"sameAs\":[\"https:\\\/\\\/www.xojo.com\",\"https:\\\/\\\/x.com\\\/Bloguintosh\",\"http:\\\/\\\/youtube.com\\\/goxojo\"],\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/author\\\/javier\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Como subir tus apps macOS a la AppStore Connect - Codemotion Magazine","description":"Javier te ense\u00f1a c\u00f3mo subir tus apps macOS a App Store Connect desde la l\u00ednea de comandos, aprovechando las funciones de Xojo 2024r4.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/","og_locale":"en_US","og_type":"article","og_title":"Como subir tus apps macOS a la AppStore Connect","og_description":"Javier te ense\u00f1a c\u00f3mo subir tus apps macOS a App Store Connect desde la l\u00ednea de comandos, aprovechando las funciones de Xojo 2024r4.","og_url":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2025-02-20T15:20:21+00:00","article_modified_time":"2025-02-20T15:20:23+00:00","og_image":[{"width":1792,"height":1024,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an.webp","type":"image\/webp"}],"author":"Javier","twitter_card":"summary_large_image","twitter_creator":"@Bloguintosh","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Javier","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/"},"author":{"name":"Javier","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/8647944f90883a9526705a0998ffbe1a"},"headline":"Como subir tus apps macOS a la AppStore Connect","datePublished":"2025-02-20T15:20:21+00:00","dateModified":"2025-02-20T15:20:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/"},"wordCount":2068,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an.webp","keywords":["Desarrollo web"],"articleSection":["Lenguajes de programaci\u00f3n"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/","url":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/","name":"Como subir tus apps macOS a la AppStore Connect - Codemotion Magazine","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an.webp","datePublished":"2025-02-20T15:20:21+00:00","dateModified":"2025-02-20T15:20:23+00:00","description":"Javier te ense\u00f1a c\u00f3mo subir tus apps macOS a App Store Connect desde la l\u00ednea de comandos, aprovechando las funciones de Xojo 2024r4.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an.webp","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an.webp","width":1792,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/como-subir-tus-apps-macos-a-la-appstore-connect\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Lenguajes de programaci\u00f3n","item":"https:\/\/www.codemotion.com\/magazine\/es\/lenguajes-de-programacion\/"},{"@type":"ListItem","position":3,"name":"Como subir tus apps macOS a la AppStore Connect"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/8647944f90883a9526705a0998ffbe1a","name":"Javier","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7d8697b4578139fa315e8e8058abaf814935c00af9f9f5faac583bdef6e4c334?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7d8697b4578139fa315e8e8058abaf814935c00af9f9f5faac583bdef6e4c334?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7d8697b4578139fa315e8e8058abaf814935c00af9f9f5faac583bdef6e4c334?s=96&d=mm&r=g","caption":"Javier"},"description":"Software Engineer at Xojo, Inc.","sameAs":["https:\/\/www.xojo.com","https:\/\/x.com\/Bloguintosh","http:\/\/youtube.com\/goxojo"],"url":"https:\/\/www.codemotion.com\/magazine\/author\/javier\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an-600x400.webp","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an-600x600.webp","author_info":{"display_name":"Javier","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/javier\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an.webp",1792,1024,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an-150x150.webp",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an-300x171.webp",300,171,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an-768x439.webp",768,439,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an-1024x585.webp",1024,585,true],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an-1536x878.webp",1536,878,true],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an.webp",1792,1024,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an-100x100.webp",100,100,true],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an-180x128.webp",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an-896x504.webp",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an-400x225.webp",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an-600x400.webp",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/02\/DALL\u00b7E-2025-02-20-16.15.54-A-digital-illustration-showcasing-the-process-of-uploading-macOS-apps-to-App-Store-Connect.-The-image-features-a-MacBook-with-an-open-Xcode-window-an-600x600.webp",600,600,true]},"uagb_author_info":{"display_name":"Javier","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/javier\/"},"uagb_comment_info":0,"uagb_excerpt":"Desde Xojo 2024r4 el IDE permite aplicar el Sandboxing, Hardened Runtime y notarizar autom\u00e1ticamente las apps macOS. \u00bfNo ser\u00eda genial completar el paso final y ser capaz de enviar el bundle creado directamente a la AppStore Connect? Contin\u00faa leyendo y te mostrar\u00e9 como hacerlo. Si eres del tipo de persona que le gusta saber &#8220;c\u00f3mo&#8230;&hellip;","lang":"es","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/32169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/269"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=32169"}],"version-history":[{"count":2,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/32169\/revisions"}],"predecessor-version":[{"id":32201,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/32169\/revisions\/32201"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/32200"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=32169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=32169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=32169"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=32169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}