VISITAS:

martes, 15 de julio de 2014

Unity 3D: Publicación para iOS en Apple App Store

Introducción

Desarrollar un juego 3D ó 2D en Unity no es demasiado difícil, aunque requiere una capacidad de programación (en C# o Unity script) relativamente importante.
Cuando se desarrolla con Unity, las pruebas se realizan en el mismo entorno Unity, ya sea Windows o Mac OS X.
Sin embargo, al final, queremos publicar nuestro juego en una plataforma móvil tal como Android o iOS. La publicación en Android la trataré dentro de poco, pero hoy quiero explicar cómo publicar para iOS (por cierto, bastante más complejo que para Android).

Requisitos previos

Para poder publicar en la Apple AppStore es necesario cumplir unos requisitos previos:
  • Tener el Apple developer. Para ello hay que registrarse en http://developer.apple.com. Apple cobra 99$ al año.
  • Tener un ordenador Mac. Apple no permite generar aplicaciones para iOS desde Windows u otros sistemas operativos
  • Tener instalado XCode
  • Tener un juego desarrollado y probado en Unity (esto es fundamental)

Pasos


  1. Probar con el simulador en XCode
  2. Probar en un dispositivo
  3. Subir app al store
  4. Actualizar la app

Esta guía es muy sencilla y describe paso a paso cómo publicar un juego en la tienda de aplicaciones de Apple. Los pasos que aquí se describen están realizados en julio de 2014. Si cuando leas este post, ha pasado mucho tiempo desde entonces, puede ser que algunos pasos hayan cambiado ligeramente, aunque los cambios no suelen ser muy importantes.

PROBAR CON EL SIMULADOR

UNITY


1. File > Build Settings…

2. En la sección Platform, seleccionar iOS

3. Si el botón Switch Platform está activo, pulsarlo para adaptar los assets del proyecto a iOS (esto puede tardar un rato)

4. Pulsar en Player Settings

5. Preparar icono de la aplicación para App Store

     - Preparar el icono en PNG 1024x1024 (también vale JPG, pero no tiene transparencia)
     - Este icono debe utilizarse como icono de la aplicación en Player Settings, si no, Apple puede rechazarlo


6. En el Inspector:
     - En la sección Resolución and Presentation, seleccionar Default Orientation (normalmente se pone Auto Rotation, para que pueda girar). Marcar Use Animated Rotation para que los giros sean animados. Seleccionar Allowed Orientations (si debe ser landscape, seleccionar sólo Landscape Left y Landscape Right)
     - En la sección Icon, seleccionar un icono de 1024x1024 para la aplicación
     - En la sección Other Settings, lo más importante se encuentra en Identification, donde hay que poner el bundle id, por ej, com.joseanquiles.laberinto. También hay que especificar bundle versión, que en la primera versión será 1.0. El resto de valores se pueden dejar por defecto. En Optimization es muy importante elegir SDK Version. Las dos opciones son: Simulator SDK, Device SDK. Como ahora vamos a probar en el simulador de XCode, seleccionamos Simulator SDK.

7. Pulsar el botón Build para generar el proyecto de XCode. Si ya se ha generado antes, es mejor reemplazar. Se genera un proyecto XCode (por defecto dentro del directorio del proyecto Unity). Se recomienda añadir como sufijo al directorio _iOS o similar, para reconocer rápidamente el contenido de este directorio

XCODE


1. Con el Finder entrar en el directorio del proyecto Unity/Proyecto XCode generado en el paso anterior

2. Si XCode está abierto, cerrarlo.

3. Doble click en el fichero Unity-iPhone.xcodeproj Se abrirá XCode

4. En la parte superior izquierda, seleccionar el dispositivo y después la versión de iOS (no elegir iOS 6.1, porque no funciona, no sé porqué)

5. Pulsar el botón Run (similar a Play) en la parte superior izquierda

6. Para capturar screenshots con el simulador, compilar la app para Simulator SDK (tal y como se explicó anteriormente), ejecutar en XCode y en el menú del simulador: Archivo > Guardar captura de pantalla. La captura se guarda en el escritorio

     - Screenshots para iPhone 4: PNG 960x640 -> utilizar el device iPhone 3.5"

     - Screenshots para iPhone 5: PNG 1136x640 -> utilizar el device iPhone 4”

     - Screenshots para iPad: PNG 1024x768 -> utilizar el device iPad



PROBAR EN UN DISPOSITIVO


Requisitos: Estar registrado en iOS Developer Program de Apple

Portal del desarrollador de Apple: http://developer.apple.com/membercenter/index.action


PORTAL DE DESARROLLO


1. Registrar un dispositivo de test (si ya se ha registrado antes, esto no es necesario)

     - Portal del desarrollador > Certificates, Identifiers & Profiles
     - iOS Apps > Devices > All
     - Pulsar el botón + para añadir un nuevo dispositivo
     - Name: dar un nombre al dispositivo
     - UDID -> para descubrir el UDID del dispositivo, pasar al siguiente punto

2. Descubrir el UDID del dispositivo

     - Conectar el dispositivo por USB
     - Abrir XCode
     - Window > Organizer
     - En DEVICES, seleccionar el dispositivo
     - En el apartado Identifier se muestra el UDID (copiarlo al clipboard)

3. Volver al portal del desarrollador para continuar el registro del dispositivo:

     - UDID: copiar el UDID cogido en el punto anterior
     - Pulsar en Continue
     - Pulsar en Register

4. Registrar el ID de la aplicación

     - Portal del desarrollador > Certificates, Identifiers & Profiles
     - iOS Apps > Identifiers > App IDs
     - Pulsar el botón +
     - App ID description: Patri Labyrinth
     - App ID prefix: generado automáticamente
     - App ID suffix:
               seleccionar Explicit App ID
               Bundle ID: com.joseanquiles.laberinto
     - App services: no cambiar nada
     - Pulsar el botón Continue
     - Confirm your App ID
     - Pulsar el botón Confirm
     - Registration complete
     - Pulsar el botón Done

5. Crear un perfil de provisión para desarrollo

Es necesario que XCode y el dispositivo tengan un perfil de provisión de desarrollo de la aplicación para poder testear en el dispositivo

     - Portal del desarrollador > Certificates, Identifiers & Profiles
     - iOS Apps > Provisioning profiles > All
     - Pulsar el botón +
     - Seleccionar iOS App Development
     - Pulsar el botón Continue
     - App ID: Patri Labyrinth
     - Pulsar el botón Continue
     - Select Certificate: José Antonio Quiles (iOS development)
     - Pulsar el botón Continue
     - Devices: Select All
     - Pulsar el botón Continue
     - Profile Name: Patri Labyrinth Development
     - Pulsar el botón Generate
     - Pulsar el botón Download
     - El fichero con el perfil de provisión se guarda en Descargas (se puede mover a otro directorio)


XCODE


1. Cargar el perfil de provisión de desarrollo en XCode

     - Conectar el dispositivo por USB
     - Si XCode está abierto, cerrarlo.
     - Doble click en el fichero Unity-iPhone.xcodeproj Se abrirá XCode
     - Window > Organizer
     - Pulsar sobre el dispositivo
     - Si está activo, pulsar Use for development
     - En el frame izquierdo seleccionar Provisioning profiles en el dispositivo conectado
     - Pulsar el botón + Add
     - Seleccionar el fichero del perfil de provisión de desarrollo que hemos generado y descargado anteriormente

2. Instalar el perfil de provisión de desarrollo en el dispositivo

     - Arrastrar el perfil de provisión al dispositivo conectado en la sección Provisioning profiles
     - Para confirmar que el dispositivo tiene el perfil instalado: en el dispositivo entrar en Ajustes > General > Perfil y comprobar que está el perfil que hemos instalado.

UNITY

1. Si XCode está abierto, cerrarlo

2. File > Build Settings…

3. Pulsar el botón Player Settings

4. En el Inspector, en la sección Other Settings, elegir SDK Version: Device SDK

5. Pulsar el botón Build. Elegir Replace

XCODE


     - Conectar el dispositivo por USB
     - Si XCode está abierto, cerrarlo.
     - Doble click en el fichero Unity-iPhone.xcodeproj Se abrirá XCode
     - Asegurarse que el dispositivo no está locked
     - Pulsar en Run (parecido a Play)
     - El programa se ejecutará en el dispositivo




SUBIR APLICACIÓN AL APP STORE


iTUNES CONNECT


http://itunesconnect.apple.com

1. Añadir la aplicación a iTunes Connect

     - Entrar en iTunes connect
     - Pinchar en Manage your Apps
     - Pulsar el botón Add New App
     - Idioma por defecto: English
     - App Name: Patri’s Labyrinth
     - SKU Number: Patri_Labyrinth_01
     - Bundle ID: seleccionar el de la app que generamos en Unity
     - Pulsar el botón continue
     - Elegir el precio (Free si es gratis)
     - Desmarcar Discount for educational institutions
     - Pulsar el botón Continue
     - Version number: 1.0
     - Copyright: @Quilart
     - Category: Games
     - Subcategory: elegir una
     - Rating: marcar None en todos
     - Description: …..
     - Keywords: …. separadas por comas
     - Support URL: http://joseanquiles.blogspot.com
     - Meter los datos en Contact Information
     - Sección Uploads:
          - Large App icon: elegir el PNG 1024x1024
          - 3.5 inch retina: elegir los screenshots de 3.5”
          - 4 inch retina: elegir los screenshots de 4”
          - iPad screenshots: elegir los screenshots de iPad
     - Pulsar el botón Save
     - Pulsar el botón View Details
     - Pulsar el botón Ready for Upload Binary
     - Responder No a todas las preguntas
     - Pulsar el botón Save
     - Pulsar el botón Continue

PORTAL DEL DESARROLLADOR


1. Crear un perfil de provisión para distribución

Portal del desarrollador de Apple: http://developer.apple.com/membercenter/index.action

     - Portal del desarrollador > Certificates, Identifiers & Profiles
     - iOS Apps > Provisioning profiles > All
     - Pulsar el botón +
     - Seleccionar App Store
     - Pulsar el botón Continue
     - App ID: Patri Labyrinth
     - Pulsar el botón Continue
     - Select Certificate: José Antonio Quiles (iOS development)
     - Pulsar el botón Continue
     - Profile Name: Patri Labyrinth Distribution
     - Pulsar el botón Generate
     - Pulsar el botón Download
     - El fichero con el perfil de provisión se guarda en Descargas (se puede mover a otro directorio)

XCODE


1. Cambiar settings

     - En el frame izquierdo seleccionar el proyecto
     - En la pestaña capabilities, en la sección Game Center, si aparece algún aviso, pulsar Fix issues
     - En la pestaña Build Settings, pulsar el botón All para ver todas las opciones
     - Sección code signing, Provisioning profile, elegir el perfil adecuado

2. Recompilar el proyecto

     - Product > Clean
     - Product > Archive (este proceso es largo)
     - Al final se abrirá el Organizer
     - Pulsar el botón Validate (esto validará la app antes de subirla) NOTA: Si diera un error "no identities were available”, entrar en el portal y descargar de nuevo el perfil de provisión de distribución, luego darle doble click para que lo coja XCode.
     - Pulsar el botón Distribute
     - Elegir Submit to the iOS App Store
     - Pulsar el botón Next
     - Elegir el perfil de distribución
     - Pulsar el botón Next
     - La aplicación comenzará a subirse al App Store

3. Con este termina el proceso. Ahora habrá que esperar unos 7 días a que Apple acepte la aplicación y la haga disponible en el AppStore.

4. En iTunes Connect se puede ver el estado de la aplicación. El primer estado será: Upload Received


     

SUBIR ACTUALIZACIÓN AL APP STORE     


iTUNES CONNECT


http://itunesconnect.apple.com

Nota: no actualizar una app si todavía no está en estado Ready for Sale. Es posible hacerlo, pero retrasará el proceso.

1. Preparar la actualización en iTunes Connect

     - Entrar en iTunes Connect
     - Manage your Apps
     - Pulsar sobre la app que se desea actualizar
     - En el apartado Versions, apuntar el número de versión actual, para generar una nueva. Por ejemplo, si la actual es la 1.0, la siguiente puede ser la 2.0
     - En el apartado Versions, pulsar el botón Add Version
     - Version number: la nueva versión (por ejemplo, 2.0)
     - What’s new: cambios en esta versión (en inglés)
     - Pulsar el botón Save
     - Ahora el status debería ser: Prepare for Upload
     - Pulsar el botón Ready for Upload Binary
     - Responder a todas las preguntas y pulsar el botón Continue
     - Seleccionar: Automatically release “App” once it has been approved
     - Pulsar el botón Save
     - Ahora el status debería ser: Waiting for Upload

2. Generar la nueva versión en Unity

     - File > Build Settings
     - Seleccionar plataforma iOS
     - Pulsar Switch Platform
     - Pulsar el botón Player Settings
     - En la sección Other Settings, poner Bundle Version = nueva versión
     - Pulsar el botón Build para generar el proyecto XCode
     - Marcar Enable replace, y pulsar el botón Replace
     

XCODE


1. Con el Finder entrar en el directorio del proyecto Unity/Proyecto XCode generado en el paso anterior

2. Si XCode está abierto, cerrarlo.

3. Doble click en el fichero Unity-iPhone.xcodeproj Se abrirá XCode

4. Cambiar settings

     - En el frame izquierdo seleccionar el proyecto
     - En la pestaña capabilities, en la sección Game Center, si aparece algún aviso, pulsar Fix issues
     - En la pestaña Build Settings, pulsar el botón All para ver todas las opciones
     - Sección code signing, Provisioning profile, elegir el perfil adecuado

5. Recompilar el proyecto

     - Product > Clean
     - Product > Archive (este proceso es largo)
     - Al final se abrirá el Organizer
     - Pulsar el botón Validate (esto validará la app antes de subirla) NOTA: Si diera un error "no identities were available”, entrar en el portal y descargar de nuevo el perfil de provisión de distribución, luego darle doble click para que lo coja XCode.
     - Pulsar el botón Distribute
     - Elegir Submit to the iOS App Store
     - Pulsar el botón Next
     - Elegir el perfil de distribución
     - Pulsar el botón Next
     - La aplicación comenzará a subirse al App Store

3. Con este termina el proceso. Ahora habrá que esperar unos 7 días a que Apple acepte la aplicación y la haga disponible en el AppStore. 

4. En iTunes Connect se puede ver el estado de la aplicación. El primer estado será: Upload Received en New Version (la versión anterior estará Ready for Sale)