jueves, 12 de febrero de 2015

Como distribuir Apps de iOS en un servidor web - OTA (Over The Air)


Esta semana me han pedido como podríamos distribuir una aplicación de iOS en un servidor web nuestro, firmada con una licencia Enterprise para distribución interna.

Que necesitamos:
- Una licencia de iOS Developer Enterprise, que cuesta unos 299€
https://developer.apple.com/programs/ios/enterprise/
- Un certificado para la distribución iOS Distribution.
- Un App ID para tu aplicación.
- Un Provisioning Profile para empaquetar tu aplicación.
- Un servidor web con certificado SSL firmado por una entidad de confianza.


Crear el .IPA
Todo el proceso de crear los certificados y firmar la aplicación están detallados en el siguiente link, si hace falta más información publicaré alguna otra entrada:
http://johannesluderschmidt.de/provision-ios-ipa-app-for-in-house-enterprise-distribution/2993/

Con todo el perfil de distribución instalado en un Xcode, el siguiente paso es archivar el proyecto iOS:

1. Asegurarnos que en los Build Settings de nuestro proyecto estamos usando nuestro certificado y el provisioning profile que hemos generado para la App.

2. En el menu de Xcode seleccionar Product -> Destination -> iOS Device


3. En el menú de Xcode seleccionar Product -> Archive

4. En el Organizar , en la pestaña de Archives seleccionar Export...



5. En el asistente de exportación indicar la opción "Save for Enterprise Deployment"


6. Seleccionar el Development Team que haya firmado el Provisioning Profile que hemos creado para esta App.

7. Y en la última ventana de Summary ya podemos hacer el Export del proyecto a un .IPA , indicando en que carpeta queremos guardar la App.




Distribuir la App
Una vez tenemos el .IPA el siguiente paso es publicarlo en nuestro servidor web. En versiones anteriores del Xcode, al hacer este paso generaba también el archivo .plist que incluía la información de la App para su instalación, pero a partir del Xcode 6 parece que hay que crear este archivo manualmente. Desconozco si han discontinuado esta función o es algo que Apple vaya a arreglar más adelante.

IMPORTANTE: Si estas intentando publicar la aplicación en un IIS, asegurate de incluir los tipos MIME de los archivos. En la consola de gestión de IIS, clicar con el botón derecho sobre el servidor ir a Propiedades, y dentro de propiedades clicar sobre Tipos MIME ... y añadir los dos tipos que vamos a agregar:

.IPA   - application/octet-stream 
.PLIST -  text/xml

El primer paso para publicar el .IPA es generar el archivo .plist de nuestra APP. Para el archivo necesitamos los siguientes datos:
- URL donde esta el .IPA ( siempre con https:// )
- Bundle ID del proyecto
- Versión que hemos indicado en el Xcode
- Título de la aplicación

Generamos un archivo miapp.plist ( el nombre del archivo tiene que ser el mismo que el nombre del .ipa) .
El código del .plist es el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>items</key>
        <array>
                <dict>
                        <key>assets</key>
                        <array>
                                <dict>
                                        <key>kind</key>
                                        <string>software-package</string>
                                        <key>url</key>
                                        <string>[URL del.IPA]</string>
                                </dict>
                        </array>
                        <key>metadata</key>
                        <dict>
                                <key>bundle-identifier</key>
                                <string>[Bundle ID de nuestra APP]</string>
                                <key>bundle-version</key>
                                <string>[versión de la App]</string>
                                <key>kind</key>
                                <string>software</string>
                                <key>title</key>
                                <string>[Título de la APP]</string>
                        </dict>
                </dict>
        </array>
</dict>
</plist>
Y en nuestra web tenemos que incluir un link a este archivo .plist con el siguiente formato:

<a href="itms-services://?action=download-manifest&url=[URL del .plist]">Instala mi fabulosa iOS APP</a>

Con el link publicado en nuestra web, podemos entrar desde cualquier dispositivo iOS a la web donde tenemos publicado el enlace, al hacer click sobre él nos mostrara una advertencia indicándonos si deseamos instalar la Aplicación. 
La aplicación se instalara, pero no avisará de que se haya completado el proceso, si vamos a la Home, veremos que ya tenemos el icono de la aplicación. Al tratar de iniciarlo por primera vez nos advertirá "Desarrollador no fiable" y si deseamos confiar en el equipo de desarrollo de nuestro certificado. 

Al clicar sobre confianza, ya no volverá a mostrar de nuevo esta advertencia.


Links:
https://longtrieuquang.wordpress.com/2014/08/01/how-to-distribute-your-ios-app-ota-with-enterprise-account/
http://stackoverflow.com/questions/8881609/ios-distribution-parameters-in-itms-services-protocol-link-for-plist
http://stackoverflow.com/questions/25910387/xcode-6-save-for-enterprise-deployment-does-not-create-plist-for-ipa-anymore

No hay comentarios:

Publicar un comentario