Déploiement d’une application IOS – Généralités

lundi 14 janvier 2013

Il existe deux types de programme de développement chez Apple pour IOS.

IOS Developer Enterprise program qui coûte 299$, qui ne permet pas de distribuer sur app store mais qui permet de créer un réseau d’entreprise (In house) pour « pusher » des applications uniquement à son réseau d’entreprise et contrôler tous les devices (limiter les devices, gérer les devices, etc..). Il y a aussi un système de distribution Ad hoc de 100 devices idéal pour les béta testeurs.

IOS Developer program qui coûte 99$, quant à lui permet de distribuer sur l’Appstore, a aussi le système de distribution Ad Hoc sur 100 devices mais ne peut pas créer son réseau d’entreprise. Pour avoir un compte Enterprise, il faut remplir un certain nombre d’exigence auprès de chez Apple pour l’obtenir.

IOS PROGRAM

Pour déployer une application sur « app store » ou sur un device, il faut suivre une certaine procédure.

En voici une légère théorie:

Cette procédure consiste a identifier plusieurs éléments (développeur via certificat, devices, application) et de les lier entre eux pour autoriser l’accès à l’application sur nos téléphones. On appelle cela un « provisioning profile », c’est le document final nécessaire pour autoriser l’installation et l’utilisation d’une application IOS.

Portal

Cette procédure se fait à l’aide du système de sécurité « clé privé/clé public ». Ces clés privés sont générées avec le trousseau de clé de Mac (Applications > Trousseau de clé), en faisant une demande de certificat à une autorité de certificat. Il suffit de donner le nom et l’adresse e-mail que vous avez utilisé lors de l’inscription au programme developer d’Apple. Attention, il faut spécifier une clé privé RSA de 2048 bits.

Dans le « portal de provisioning d’Apple », il existe deux types de certificats:
-Certificat de développement qui certifie le développeur
-Certificat de distribution qui certifie un éditeur (entreprise) pour la distribution sur Appstore.
Pour obtenir ces certificats, on fait les demandes CSR via le « portal d’Apple » (accessible via le site developper.apple.com) avec la clé privé créé précédemment.

Pour la création d’une AppId, il faut définir un reverse DNS qui permet d’identifier une ou plusieurs application(s) dans une entreprise.
Grâce au wilcard *, on peut rendre plusieurs applications accessibles ce qui peut être très utile mais rend la sécurité moins performante car elle s’applique aussi de manière plus générique.
L’Appid comporte un BundleSeeID généré par Apple avec votre compte développeur suivi de notre reverse DNS qu’on a composé nous même et qui représente le BundleID.

Attention, car il n’est pas possible de supprimer une AppID.

AppID

Le provisioning profile est donc le fichier nécessaire qu’on doit inclure dans notre application pour qu’elle soit signée et acceptée sur nos devices ou distribuée.
Ce fichier va donc rassembler les certificats identifiant les comptes développeur, les devices qui peuvent installer l’application et enfin l’APPID représentant notre application.
Pour le provisioning, on peut utiliser le wildcard * pour pouvoir étendre notre provisioning à plusieurs APPID.

PRovisionning

Pour résumer:

Portal summary

Pour une distribution sur l’apple store, uniquement le team agent (le compte qui a été utilisé pour l’inscription au IOS developer Program) peut créer un certificat de distribution. Si le client a un compte developpeur et fait principalement de l’administratif et ne sait pas utiliser Xcode et faire toutes les manipulations, il peut le demander à un développeur en lui communiquant sa clé privé mais cela est très dangereux car cette clé privé identifie le client.
Bien sûr, il faut intégrer le « provisioning profile » dans le projet Xcode via Build settings> code sign > release.

Attention: J’ai eu le cas avec un client qui avait créé lui même son compte développeur, d’avoir l’impossibilité de créer un certificat de distribution sur le site d’Apple et via Xcode car il avait introduit un Team Name de plus de 55 caractères. A surveiller !

code signing

Ensuite dans Xcode, il faut générer une archive et ensuite faire un Validate dans l’organizer qui va vérifier que l’application est correctement signée et valide auprès d’Apple. Pour terminer, on peut faire un submit pour la soumettre à Apple quand on a bien tout complété sur Itunes Connect.

Il est aussi possible de faire deux autres type de distribution:

-AdHoc: limiter à 100 devices. Dans Xcode, Product>Archive, ensuite dans Organizer > Archive > share , on définit le provisioning profile de distribution et on obtient un fichier IPA qu’on peut transmettre aux personnes dont le device se retrouvent dans le provisioning profile. Ceux-ci peuvent l’intégrer via Itunes et synchroniser l’application.
-OTA: Dans Xcode, Product >Archive, ensuite Organizer > archives > share. Cliquez ensuite sur save for entreprise Distribution . Il génère un fichier IPA et un fichier plist qu’on doit mettre sur un serveur. Enfin il ne reste plus qu’à envoyer au client un lien vers l’ipa pour l’installer depuis le lien fourni par email par exemple.

Pour la pratique: Xcode nous aide énormément pour l’obtention de ces certificats et provisioning profiles:
Allez dans Organizer, dans Provisioning Profiles cliquez sur Refresh, ensuite une demande d’AppleID inscrit au IOS developer Program vous est demandé et il va générer directement sur le Portal d’Apple les certificats de développement et de Distribution.

Xcode

Attention: sous Xcode5, les certificats et provisionning profiles ne se trouvent plus dans Organizer, mais dans les préférences d’Xcode, onglet Account et quand vous cliquez sur votre apple-id, vous trouverez les certificats.
Plus besoin de télécharger et de faire un glisser / coller du provisionning profile dans Xcode, car il suffit de cliquer sur le bouton refresh et Xcode met à jour tous les provisionning profiles depuis votre portail Appel dans Xcode. Il ne reste plus que de changer dans Build settings les certificats.

Pour réaliser cet article je me suis basé sur une excellente vidéo présentée ici. On y retrouve même une démonstration.

Tags: AppStore , Archive , Certificat , Développement , Distribution , IOS , program , provisioning profile , Xcode