<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Xcode on hobbyworker취미생활자</title>
    <link>https://hobbyworker.me/es/tags/xcode/</link>
    <description>Recent content in Xcode on hobbyworker취미생활자</description>
    <generator>Hugo</generator>
    <language>es</language>
    <copyright>2026 hobbyworker</copyright>
    <lastBuildDate>Tue, 19 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://hobbyworker.me/es/tags/xcode/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Publicar una app de macOS en la Mac App Store (3): ajustes de subida y registro en App Store Connect</title>
      <link>https://hobbyworker.me/es/dev/2026-05-19-distribute-macos-app-mas-3-export-and-app-store-connect/</link>
      <pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/es/dev/2026-05-19-distribute-macos-app-mas-3-export-and-app-store-connect/</guid>
      <description>Una vez terminados el target de compilación para MAS y la separación de configuración y código, llega el momento de preparar el camino para subir esa compilación a la App Store. En este artículo, tomando como ejemplo la app FocusTimer, cerramos la serie explicando cómo escribir un ExportOptions-MAS.plist para la subida, registrar el registro de la app en App Store Connect y verificar la compilación para que ambos canales no se rompan.</description>
    </item>
    <item>
      <title>Publicar una app de macOS en la Mac App Store (2): separar configuración y código entre canales</title>
      <link>https://hobbyworker.me/es/dev/2026-05-18-distribute-macos-app-mas-2-build-config-and-code/</link>
      <pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/es/dev/2026-05-18-distribute-macos-app-mas-2-build-config-and-code/</guid>
      <description>Una vez creado el target de compilación para MAS, ahora hay que separar los archivos de configuración y el código para que ese target cumpla realmente las reglas de la App Store. En este artículo, tomando como ejemplo la app FocusTimer, explicamos paso a paso cómo crear unos entitlements y un Info.plist exclusivos para MAS, ajustar los ajustes de compilación y bifurcar el código de actualizaciones automáticas con #if canImport(Sparkle).</description>
    </item>
    <item>
      <title>Publicar una app de macOS en la Mac App Store (1): crear un target de compilación aparte</title>
      <link>https://hobbyworker.me/es/dev/2026-05-17-distribute-macos-app-mas-1-target-setup/</link>
      <pubDate>Sun, 17 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/es/dev/2026-05-17-distribute-macos-app-mas-1-target-setup/</guid>
      <description>Para publicar una app de macOS en la Mac App Store necesitas un target de compilación distinto del que usas para la distribución directa. El motivo es que la revisión de la App Store prohíbe sistemas de actualizaciones automáticas propios como Sparkle. En este artículo, tomando como ejemplo la app FocusTimer, explicamos paso a paso cómo registrar un Bundle ID exclusivo para MAS, duplicar el target de compilación en Xcode y resolver el trabajo de limpieza que deja esa duplicación.</description>
    </item>
    <item>
      <title>Distribuir una app de macOS por tu cuenta (3): alojar el feed de actualizaciones y ajustes de compilación</title>
      <link>https://hobbyworker.me/es/dev/2026-05-16-distribute-macos-app-3-update-hosting-and-build/</link>
      <pubDate>Sat, 16 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/es/dev/2026-05-16-distribute-macos-app-3-update-hosting-and-build/</guid>
      <description>El feed de actualizaciones automáticas de una app de macOS que distribuyes por tu cuenta debe alojarse en una ubicación pública, accesible sin autenticación. En este artículo, tomando como ejemplo la app FocusTimer, alojamos el repositorio de actualizaciones con GitHub Pages, lo conectamos a un dominio personalizado que controlamos directamente y terminamos el ExportOptions.plist y la configuración del lado de la app para concluir la configuración inicial de la distribución directa.</description>
    </item>
    <item>
      <title>Distribuir una app de macOS por tu cuenta (2): crear la clave de firma de Sparkle para actualizaciones automáticas</title>
      <link>https://hobbyworker.me/es/dev/2026-05-15-distribute-macos-app-2-sparkle-signing-key/</link>
      <pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/es/dev/2026-05-15-distribute-macos-app-2-sparkle-signing-key/</guid>
      <description>Para las actualizaciones automáticas de una app de macOS que distribuyes por tu cuenta, lo estándar de facto es implementarlas con el framework Sparkle. En este artículo, tomando como ejemplo la app FocusTimer, explicamos paso a paso cómo generar la clave de firma EdDSA que Sparkle usa para verificar los archivos de actualización, cómo incrustar la clave pública en la app y cómo hacer una copia de seguridad de la clave privada y restaurarla de forma segura.</description>
    </item>
    <item>
      <title>Distribuir una app de macOS por tu cuenta (1): certificado Developer ID y notarización</title>
      <link>https://hobbyworker.me/es/dev/2026-05-14-distribute-macos-app-1-developer-id-certificate/</link>
      <pubDate>Thu, 14 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/es/dev/2026-05-14-distribute-macos-app-1-developer-id-certificate/</guid>
      <description>Para distribuir una app de macOS por tu cuenta, sin pasar por la Mac App Store, primero necesitas tener listos el certificado Developer ID y la configuración de notarización. En este artículo, tomando como ejemplo la app FocusTimer, te guiamos paso a paso por la configuración inicial que solo hay que hacer una vez: la instalación de herramientas de línea de comandos, la emisión del certificado Developer ID Application y el registro de una contraseña específica de la app y de un perfil de notarytool para la notarización.</description>
    </item>
  </channel>
</rss>
