Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

Desarrollo en iOS

Crear un bundle de un juego para iOS solo está disponible en la versión para Mac del editor Defold.

iOS requiere que cualquier app que crees y quieras ejecutar en tu teléfono o tablet deba estar firmada con un certificado emitido por Apple y un perfil provisional. Este manual explica los pasos necesarios para crear un bundle de tu juego para iOS. Durante el desarrollo, suele ser preferible ejecutar tu juego mediante la app de desarrollo, ya que te permite recargar contenido y código en caliente directamente en tu dispositivo.

Proceso de firmado de código de Apple

La seguridad asociada con las apps iOS consta de varios componentes. Puedes acceder a las herramientas necesarias registrándote en el iOS Developer Program de Apple. Cuando te hayas inscrito, ve al Developer Member Center de Apple.

Apple Member Center

La sección Certificates, Identifiers & Profiles contiene todas las herramientas que necesitas. Desde aquí puedes crear, eliminar y editar:

Certificates
Certificados criptográficos emitidos por Apple que te identifican como desarrollador. Puedes crear certificados de desarrollo o de producción. Los certificados de desarrollo te permiten probar ciertas funcionalidades, como el mecanismo de compras dentro de la app, en un entorno de pruebas sandbox. Los certificados de producción se usan para firmar la app final que se subirá a la App Store. Necesitas un certificado para firmar apps antes de poder instalarlas en tu dispositivo para probarlas.
Identifiers
Identificadores para varios usos. Es posible registrar identificadores wildcard (por ejemplo, some.prefix.*) que pueden usarse con varias apps. Los App IDs pueden contener información de Application Services, por ejemplo si la app activa la integración con Passbook, Game Center, etc. Esos App IDs no pueden ser identificadores wildcard. Para que los Application Services funcionen, el identificador de bundle de tu aplicación debe coincidir con el identificador del App ID.
Devices
Cada dispositivo de desarrollo debe registrarse con su UDID (Unique Device IDentifier, consulta más abajo).
Provisioning Profiles
Los perfiles provisionales asocian certificados con App IDs y una lista de dispositivos. Indican qué app, de qué desarrollador, puede estar en qué dispositivos.

Al firmar tus juegos y apps en Defold, necesitas un certificado válido y un perfil provisional válido.

Algunas de las cosas que puedes hacer en la página de inicio de Member Center también puedes realizarlas desde el entorno de desarrollo Xcode, si lo tienes instalado.

Identificador de dispositivo (UDID)
El UDID de un dispositivo iOS puede encontrarse conectando el dispositivo a una computadora por wifi o cable. Abre Xcode y selecciona Window ▸ Devices and Simulators. El número de serie y el identificador se muestran cuando seleccionas tu dispositivo.

dispositivos xcode

Si no tienes Xcode instalado, puedes encontrar el identificador en iTunes. Haz click en el símbolo de dispositivos y selecciona tu dispositivo.

dispositivos itunes

  1. En la página Summary, localiza el Serial Number.
  2. Haz click una vez en Serial Number para que el campo cambie a UDID. Si haces click varias veces, aparecerán varios datos del dispositivo. Sigue haciendo click hasta que se muestre UDID.
  3. Haz click derecho en la cadena larga del UDID y selecciona Copy para copiar el identificador al portapapeles, de modo que puedas pegarlo fácilmente en el campo UDID al registrar el dispositivo en Developer Member Center de Apple.

Desarrollar con una cuenta gratuita de desarrollador de Apple

Desde Xcode 7, cualquiera puede instalar Xcode y desarrollar en dispositivo de forma gratuita. No tienes que registrarte en el iOS Developer Program. En su lugar, Xcode emitirá automáticamente un certificado para ti como desarrollador (válido durante 1 año) y un perfil provisional para tu app (válido durante una semana) en tu dispositivo específico.

  1. Conecta tu dispositivo.
  2. Instala Xcode.
  3. Agrega una cuenta nueva a Xcode e inicia sesión con tu Apple ID.
  4. Crea un proyecto nuevo. La opción más simple, “Single View App”, funciona bien.
  5. Selecciona tu “Team” (creado automáticamente para ti) y dale a la app un identificador de bundle.

Anota el identificador de bundle, ya que debes usar el mismo identificador de bundle en tu proyecto Defold.

  1. Asegúrate de que Xcode haya creado un Provisioning Profile y un Signing Certificate para la app.

  2. Crea la build de la app en tu dispositivo. La primera vez, Xcode te pedirá activar Developer mode y preparará el dispositivo con soporte para depurador. Esto puede tardar un poco.
  3. Cuando hayas verificado que la app funciona, búscala en tu disco. Puedes ver la ubicación de la build en el Build report del “Report Navigator”.

  4. Localiza la app, haz click derecho sobre ella y selecciona Show Package Contents.

  5. Copia el archivo “embedded.mobileprovision” a algún lugar de tu unidad donde puedas encontrarlo.

Este archivo de perfil provisional puede usarse junto con tu identidad de firmado de código para firmar apps en Defold durante una semana.

Cuando el perfil provisional expire, debes crear la build de la app otra vez en Xcode y obtener un nuevo archivo de perfil provisional temporal como se describió arriba.

Crear un bundle de aplicación iOS

Cuando tengas la identidad de firmado de código y el perfil provisional, estarás listo para crear desde el editor un bundle de aplicación independiente para tu juego. Simplemente selecciona Project ▸ Bundle... ▸ iOS Application... en el menú.

Firmar bundle iOS

Selecciona tu identidad de firmado de código y busca tu archivo de mobile provisioning. Selecciona las arquitecturas (32 bits, 64 bits y el simulador de iOS) para las que quieres crear el bundle, así como la variante (Debug o Release). Opcionalmente puedes desmarcar la casilla Sign application para omitir el proceso de firmado y firmar manualmente en una etapa posterior.

Debes desmarcar la casilla Sign application al probar tu juego en el simulador de iOS. Podrás instalar la aplicación, pero no arrancará.

Pulsa Create Bundle y se te pedirá que especifiques en qué lugar de tu computadora se creará el bundle.

bundle de aplicación ipa iOS

Puedes especificar qué icono usar para la app, el storyboard de pantalla de lanzamiento, etc. en el archivo de configuración del proyecto game.project, en la sección iOS.

Variantes de build

Cuando creas un bundle de un juego, debes elegir qué tipo de motor quieres usar. Tienes tres opciones básicas:

  • Debug
  • Release
  • Headless

Estas diferentes versiones también se denominan Build variants.

Cuando eliges Project ▸ Build, siempre obtendrás la versión de depuración.

Debug

Este tipo de ejecutable se usa normalmente durante el desarrollo de un juego, ya que incluye varias funcionalidades útiles de depuración:

  • Profiler - Se usa para recopilar contadores de rendimiento y uso. Aprende cómo usar el profiler en el manual de profiling.
  • Logging - El motor registrará información del sistema, advertencias y errores cuando el logging esté habilitado. El motor también generará logs desde la función Lua print() y desde el logging de extensiones nativas que use dmLogInfo(), dmLogError() y similares. Aprende cómo leer estos logs en el manual de logs del juego y del sistema.
  • Hot reload - Hot-reload es una funcionalidad potente que permite a un desarrollador recargar recursos mientras el juego se está ejecutando. Aprende cómo usarla en el manual de Hot-Reload.
  • Servicios del motor - Es posible conectarse a una versión de depuración de un juego e interactuar con ella mediante varios puertos TCP abiertos y servicios. Los servicios incluyen la funcionalidad hot-reload, acceso remoto a logs y el profiler mencionado antes, además de otros servicios para interactuar de forma remota con el motor. Aprende más sobre los servicios del motor en la documentación para desarrolladores.

Release

Esta variante tiene las funcionalidades de depuración deshabilitadas. Esta opción debe elegirse cuando el juego esté listo para publicarse en la tienda de aplicaciones o compartirse con jugadores por otros medios. No se recomienda publicar un juego con las funcionalidades de depuración habilitadas por varias razones:

  • Las funcionalidades de depuración ocupan un poco de espacio en el binario, y es una buena práctica intentar mantener el tamaño del binario de un juego publicado lo más pequeño posible.
  • Las funcionalidades de depuración también consumen un poco de tiempo de CPU. Esto puede afectar el rendimiento del juego si un usuario tiene hardware de gama baja. En teléfonos móviles, el aumento del uso de CPU también contribuirá al calentamiento y al consumo de batería.
  • Las funcionalidades de depuración pueden exponer información sobre el juego que no está destinada a los jugadores, ya sea desde una perspectiva de seguridad, trampas o fraude.

Headless

Este ejecutable se ejecuta sin gráficos ni sonido. Esto significa que puedes ejecutar las pruebas unitarias o de humo del juego en un servidor de CI, o incluso usarlo como servidor de juego en la nube.

Instalar y ejecutar un bundle en un iPhone conectado

Puedes instalar y ejecutar el bundle creado usando las casillas “Install on connected device” y “Launch installed app” del editor en el diálogo Bundle:

Instalar y ejecutar bundle iOS

Para que esta funcionalidad funcione, necesitas tener instalada la herramienta de línea de comando ios-deploy. La forma más simple de instalarla es usando Homebrew:

$ brew install ios-deploy

Si el editor no puede detectar la ubicación de instalación de la herramienta ios-deploy, tendrás que especificarla en Preferences.

Crear un storyboard

Creas un archivo storyboard usando Xcode. Inicia Xcode y crea un proyecto nuevo. Selecciona iOS y Single View App:

Crear proyecto

Haz click en Next y continúa para configurar tu proyecto. Ingresa un Product Name:

Configuración del proyecto

Haz click en Create para finalizar el proceso. Tu proyecto ya está creado y podemos continuar para crear el storyboard:

La vista del proyecto

Arrastra y suelta una imagen para importarla al proyecto. Luego selecciona Assets.xcassets y suelta la imagen en Assets.xcassets:

Agregar imagen

Abre LaunchScreen.storyboard y haz click en el botón de suma (+). Escribe “imageview” en el diálogo para encontrar el componente ImageView.

Agregar vista de imagen

Arrastra el componente Image View al storyboard:

Agregar al storyboard

Selecciona la imagen que agregaste previamente a Assets.xcassets desde el desplegable Image:

Posiciona la imagen y realiza cualquier otro ajuste que necesites, quizá agregando un Label u otro elemento de interfaz. Cuando termines, establece el esquema activo en “Build -> Any iOS Device (arm64, armv7)” (o “Generic iOS Device”) y selecciona Product -> Build. Espera a que finalice el proceso de build.

Si solo tienes la opción arm64 en “Any iOS Device (arm64)”, cambia iOS Deployment target a 10.3 en la configuración “Project -> Basic -> Deployment”. Esto hará que tu storyboard sea compatible con dispositivos armv7 (por ejemplo iPhone5c).

Si usas imágenes en el storyboard, no se incluirán automáticamente en tu LaunchScreen.storyboardc. Usa el campo Bundle Resources en game.project para incluir recursos. Por ejemplo, crea la carpeta LaunchScreen en el proyecto Defold y una carpeta ios dentro (la carpeta ios es necesaria para incluir estos archivos solo en bundles de iOS), luego coloca tus archivos en LaunchScreen/ios/. Agrega esta ruta en Bundle Resources.

El último paso es copiar el archivo compilado LaunchScreen.storyboardc a tu proyecto Defold. Abre Finder en la siguiente ubicación y copia el archivo LaunchScreen.storyboardc a tu proyecto Defold:

/Library/Developer/Xcode/DerivedData/YOUR-PRODUCT-NAME-cbqnwzfisotwygbybxohrhambkjy/Build/Intermediates.noindex/YOUR-PRODUCT-NAME.build/Debug-iphonesimulator/YOUR-PRODUCT-NAME.build/Base.lproj/LaunchScreen.storyboardc

El usuario del foro Sergey Lerg preparó un video tutorial que muestra el proceso.

Una vez que tengas el archivo storyboard, puedes referenciarlo desde game.project.

Crear un asset catalog de iconos

Usar un asset catalog es la forma preferida por Apple de gestionar los iconos de tu aplicación. De hecho, es la única forma de proporcionar el icono usado en la ficha de la App Store. Creas un asset catalog de la misma manera que un storyboard, usando Xcode. Inicia Xcode y crea un proyecto nuevo. Selecciona iOS y Single View App:

Crear proyecto

Haz click en Next y continúa para configurar tu proyecto. Ingresa un Product Name:

Configuración del proyecto

Haz click en Create para finalizar el proceso. Tu proyecto ya está creado y podemos continuar para crear el asset catalog:

La vista del proyecto

Arrastra y suelta imágenes en las casillas vacías que representan los distintos tamaños de icono admitidos:

Agregar iconos

No agregues iconos para Notifications, Settings ni Spotlight.

Cuando termines, establece el esquema activo en “Build -> Any iOS Device (arm64)” (o “Generic iOS Device”) y selecciona Product -> Build. Espera a que finalice el proceso de build.

Asegúrate de crear la build para “Any iOS Device (arm64)” o “Generic iOS Device”; de lo contrario, obtendrás el error ERROR ITMS-90704 al subir tu build.

Crear build del proyecto

El último paso es copiar el archivo compilado Assets.car a tu proyecto Defold. Abre Finder en la siguiente ubicación y copia el archivo Assets.car a tu proyecto Defold:

/Library/Developer/Xcode/DerivedData/YOUR-PRODUCT-NAME-cbqnwzfisotwygbybxohrhambkjy/Build/Products/Debug-iphoneos/Icons.app/Assets.car

Una vez que tengas el archivo asset catalog, puedes referenciarlo a él y a los iconos desde game.project:

Agregar icono y asset catalog a game.project

No es necesario referenciar el icono de la App Store desde game.project. Se extrae automáticamente del archivo Assets.car al subir a iTunes Connect.

Instalar un bundle de aplicación iOS

El editor escribe un archivo .ipa, que es un bundle de aplicación iOS. Para instalar el archivo en tu dispositivo, puedes usar una de las siguientes herramientas:

  • Xcode mediante la ventana “Devices and Simulators”
  • La herramienta de línea de comando ios-deploy
  • Apple Configurator 2 desde el macOS App Store
  • iTunes

También puedes usar la herramienta de línea de comando xcrun simctl para trabajar con los simuladores de iOS disponibles mediante Xcode:

# mostrar una lista de dispositivos disponibles
xcrun simctl list

# arrancar un simulador de iPhone X
xcrun simctl boot "iPhone X"

# instalar your.app en un simulador arrancado
xcrun simctl install booted your.app

# iniciar el simulador
open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app

Manifiesto de privacidad de Apple

El manifiesto de privacidad es una lista de propiedades que registra los tipos de datos recopilados por tu app o por un SDK de terceros, y las API con razones requeridas que usa tu app o el SDK de terceros. Para cada tipo de dato que recopila tu app o el SDK de terceros, y para cada categoría de API con razones requeridas que utiliza, la app o el SDK de terceros debe registrar los motivos en su archivo de manifiesto de privacidad incluido en el bundle.

Defold proporciona un manifiesto de privacidad predeterminado mediante el campo Privacy Manifest del archivo game.project. Al crear un bundle de la aplicación, el manifiesto de privacidad se fusionará con cualquier manifiesto de privacidad de las dependencias del proyecto y se incluirá en el bundle de la aplicación.

Lee más sobre los manifiestos de privacidad en la documentación oficial de Apple.

Información de cumplimiento de exportación

Cuando envíes tu juego a la App Store, se te pedirá que proporciones información de cumplimiento de exportación con respecto al uso de cifrado en tu juego. Apple explica por qué esto es necesario:

“Cuando envías tu app a TestFlight o a la App Store, subes tu app a un servidor en Estados Unidos. Si distribuyes tu app fuera de EE. UU. o Canadá, tu app está sujeta a las leyes de exportación de EE. UU., sin importar dónde tenga sede tu entidad legal. Si tu app usa, accede, contiene, implementa o incorpora cifrado, esto se considera una exportación de software de cifrado, lo que significa que tu app está sujeta a los requisitos de cumplimiento de exportación de EE. UU., así como a los requisitos de cumplimiento de importación de los países donde distribuyes tu app.”

El motor de videojuegos Defold usa cifrado para los siguientes propósitos:

  • Realizar llamadas a través de canales seguros (por ejemplo, HTTPS y SSL)
  • Protección contra copia del código Lua (para evitar duplicación)

Estos usos de cifrado en el motor Defold están exentos de los requisitos de documentación de cumplimiento de exportación según las leyes de Estados Unidos y de la Unión Europea. La mayoría de los proyectos Defold seguirán exentos, pero agregar otros métodos criptográficos puede cambiar este estado. Es tu responsabilidad asegurarte de que tu proyecto cumpla con los requisitos de estas leyes y las reglas de la App Store. Consulta el Export Compliance Overview de Apple para obtener más información.

Si crees que tu proyecto está exento, define la clave ITSAppUsesNonExemptEncryption como False en el Info.plist del proyecto. Consulta Manifiestos de aplicación para obtener más detalles.

FAQ

Q: Soy incapaz de instalar mi juego Defold utilizando una cuenta gratuita de Apple Developer.

A: Asegúrate de que utilizas el mismo identificador de bundle en tu proyecto Defold así como el que usaste en el proyecto Xcode cuando generaste el perfil provisional del móvil.

Q: ¿cómo puedo verificar los derechos de una aplicación empaquetada??

A: Desde Inspect the entitlements of a built app:

codesign -d --ent :- /path/to/the.app

Q: ¿Cómo puedo verificar los derechos de un perfil provisional?

A: Desde Inspecting a profile’s entitlements:

security cms -D -i /path/to/iOSTeamProfile.mobileprovision