Comment distribuer son application sans passer par l'App Store ?

illustration de l'article

Pourquoi ne pas passer par l’App Store ?

Si vous cherchez à distribuer votre application privée à un certain nombre de personnes, qu’ils soient des particuliers ou des clients, vous serez amenés à devoir vous affranchir de l’app store. Heureusement, il existe une méthode pour cela.

Ce petit post vous montrera comment signer votre application et la déployer afin de l’installer à travers un site web pour finalement la lancer sur vos appareils.

Prérequis

  • Un Mac avec Xcode
  • Un iPhone ou un iPad
  • Un compte Développeur Apple (99€/an)
  • Un site web avec un certificat SSL

Glossaire

IPA: IPhone Application, il s’agit du package de l’application générée qui sera installé sur vos appareils.
UDID: Unique Device Identifier, c’est un identifiant unique qui représente votre appareil.

Enregistrer votre UDID

Avant de générer votre IPA, nous allons enregistrer l’UDID de votre appareil sur votre compte developpeur. Cela permettra de signer votre application afin qu’elle puisse se lancer sur votre iPhone/iPad.

  • Afin de l’enregistrer il va nous falloir le récupérer. Lorsque votre appareil est connecté à votre ordinateur puis sur Xcode ouvrez la fenêtre « Device et simulateurs » ( + + 2). Sélectionnez votre appareil dans le menu de gauche. Vous retrouverez votre UDID dans le champ «  identifier »

  • Pour cela rendez-vous sur votre compte developer.apple.com puis « Certificates, Identifiers & Profiles » puis « Devices »

  • Sur cette page vous aurez un résumé de tous les appareils que vous avez rajoutés.

  • Ouvrez la fenêtre d’ajout (bouton +)

  • Sélectionnez dans la rubrique platform: “iOS, tvOS, watchOS” Entrez un nom pour votre appareil (ex: “iPhone 6s”) ainsi que l’UDID de votre appareil puis cliquez sur « Continue »

  • Désormais cet appareil sera qualifié pour lancer vos IPA téléchargés depuis votre site web. Cet appareil comptera dans la limite de vos 100 appareils (maximum par plateforme).

  • Attention cet appareil ne pourra pas être supprimé de votre compte avant la fin de la période de validité de votre adhésion au programme développeur (À chaque renouvellement, vous aurez la possibilité de les supprimer).

Générer une IPA de votre application

Avant de générer une nouvelle IPA j’ai dû réimporter les profils de développement, pour cela ouvrez xcode puis accédez aux paramètres ( + ,), onglet “Accounts” puis sélectionnez “Download Manual Profiles” cela ne devrait pas prendre plus d’une dizaine de secondes le temps qu’XCode récupère l’intégralité de vos profils depuis les serveurs Apple.

Vous pouvez désormais fermer la fenêtre et charger votre projet

Afin de générer une IPA pour le déploiement, commencez par sélectionner « Any iOS Device » dans le menu destination de votre application (Product > Destination > Any iOS Device)

puis générez une archive de votre application (Product > Archive). Cela créera un build prêt à être déployé (que ça soit de manière publique via l’app store ou privée). Une fois la compilation terminée une fenêtre (Organizer) s’ouvrira avec la liste de vos archives, la dernière construite sera sélectionnée. Cliquez sur le bouton à droite “Distribute App”

vous pourrez ensuite sélectionner “Ad Hoc” et non “App Store” (défaut) puis suivant.

Note : il est possible de sélectionner Entreprise si vous avez un compte entreprise de ce fait passant outre l’étape de l’UDID (voir partie précédente) mais n’ayant pas de compte entreprise pour tester je n’élaborerais pas plus.

sur la prochaine page vous aurez la possibilité de choisir ou non “App Thinning” qui vous permet d’optimiser la taille de votre IPA. Cette option étant facultative, elle reste à votre discretion.

Vous devrez cocher les deux options suivantes :

  • “Rebuild from Bitcode”
  • “Include manifest for over-the-air installation”

La première option permet de compiler le bitcode de votre app de telle manière à ce qu’il soit identique à une distribution app-store. Cela est recommandé. La seconde nous intéresse, car elle va générer des fichiers qui nous serons utile afin de déployer votre application sur votre site web.

Sur la page suivante, quelques métadonnées vous seront demandées, le nom de votre app (déjà rempli, inutile de s’en occuper), l’url ou votre IPA sera localisé ainsi que deux images (57 par 57 pixels ainsi que 512 par 512 pixels). l’outil d’export vous demande de renseigner toutes ces URL mais vous n’etes pas obligé de fournir les images par la suite. Notez que vous devrez obligatoirement avoir un certificat SSL pour accéder à la page en HTTPs faute de quoi votre appareil refusera d’installer l’application pour des raisons de sécurité.

La prochaine étape concernera la signature de votre application. Vous pouvez laisser “Automatically manage signing” afin qu’XCode s’en occupe à votre place.

à l’issue de cette dernière étape, XCode va compiler, signer et packager votre application. Cette procedure peux prendre un certain temps selon la taille et la complexité de votre application. Puis vous pourrez tout simplement appuyer sur le bouton export afin de sauvegarder les binaires et metadata afin de les déployer.

dans le dossier d’export nous retrouverons :

  • l’archive de votre application au format .ipa
  • le manifest de l’application (manifest.plist)

Nous aurons besoin de ces deux fichiers pour le déploiement sur le site web.

(Optionnel) Vérifier que votre appareil peut lancer l’application

Il existe une méthode simple pour vérifier que votre appareil est autorisé à lancer l’application que vous venez de générer.

En effet l’archive IPA n’est autre qu’un fichier ZIP qui contient les binaires de votre application et les metadata.

faites une copie de votre app et remplacez son extension par .zip, vous pourrez désormais extraire son contenu.

En accédant à l’archive, vous trouverez un dossier Payload puis “votre_app.app” dans ce dossier.

“votre_app.app” est un dossier qui contient le contenu de votre application. Accédez-y et vous devriez trouver un fichier “embedded.mobileprovision”

en prévisualisant ce fichier avec Quicklook sur votre mac (espace en sélectionant le fichier) vous aurez un résumé de la signature de votre application. Dans la section “Provisioned Devices” vous pourrez voir les devices autorisés à lancer votre application et devriez retrouver l’UDID de l’appareil que vous venez d’enregistrer.

Préparer votre site web pour la distribution

Lors de la génération de l’archive, vous avez mentionné une URL pour votre IPA. Uploadez l’IPA que vous avez générée à cet endroit via votre méthode de transfert préférée ainsi que votre fichier manifest.plist.

sur votre site web rajoutez un lien vers le fichier manifest.plist (non l’IPA !) de cette manière : <a href='itms-services://?action=download-manifest&url=https://demo.adinunno.fr/manifest.plist'>Demo</a> n’oubliez pas de remplacer l’URL par le chemin de votre manifest.plist.

Il est important de noter que vous devez utiliser une URL itms-services et non une url classique, et ce, malgré que vous ne passez pas par iTunes Connect ou l’App Store cela indiquera à votre iPhone qu’il doit installer une application et ou il la trouvera.

Il est aussi à noter que votre site web doit servir ces deux fichiers avec les mime-types suivant :

  • application/octet-stream pour l’application IPA
  • text/xml pour le manifest.plist

Si ces mimes-types ne sont pas respectés, votre appareil refusera l’installation de votre application.

Si tout se passe bien vous devriez pouvoir charger votre page web sur votre iPhone et cliquer sur le lien vous informera que le site souhaitera installer l’application.

Acceptez et revenez au menu home de votre iPhone, l’application devrait apparaitre et vous pouvez la lancer.

Concernant les mises à jour de l’application

Cette méthode de déploiement ne vous permettra pas de distribuer des mises à jour de votre application de manière automatique.

Il est possible de mettre à jour l’application en réuplodant la nouvelle version sur le site web et en la réinstallant de la meme manière que précedemment.

Proposition d’amélioration: Vous pouvez si vous le souhaitez, intégrer un message de mise à jour dans votre application et proposer un lien de renvoi vers le manifest en comparant la version de l’application à la version uploadée sur votre serveur.

Pour aller plus loin

Date

Auteur

Avatar Alice DI NUNNO

Alice DI NUNNO

Développeuse iOS et Go

Tags

#ipa #deploiement #web #distribution