Publication d’applications Xamarin.iOS sur l’App Store

Pour publier une application dans l’App Store, un développeur d’applications doit d’abord la soumettre (avec des captures d’écran, une description, des icônes et autres informations) à Apple pour vérification. Une fois qu’Apple a approuvé l’application, il l’ajoute sur l’App Store, où les utilisateurs peuvent l’acheter et l’installer directement sur leurs appareils iOS.

Ce guide décrit les étapes à suivre pour préparer une application à sa publication sur l’App Store et l’envoyer à Apple pour vérification. Plus précisément, il décrit les actions suivantes :

  • Suivre les instructions de vérification de l’App Store
  • Configurer un ID d’application et des droits
  • Fournir une icône de l’App Store et des icônes de l’application
  • Configurer un profil de provisionnement App Store
  • Mettre à jour la configuration de build Release
  • Configurer votre application dans iTunes Connect
  • Générer votre application et la soumettre à Apple

Important

Apple a indiqué qu’à partir de mars 2019 toutes les applications et mises à jour envoyées à l’App Store doivent avoir été créées avec le kit SDK d’iOS 12.1 ou ultérieur, inclus dans Xcode 10.1 ou ultérieur. Les applications doivent aussi prendre en charge les tailles d’écran de l’iPhone XS et de l’iPad Pro 12,9".

Instructions de l’App Store

Avant de soumettre une application pour la publier sur l’App Store, vérifiez qu’elle répond aux standards définis par les instructions de vérification de l’App Store Apple. Lorsque vous soumettez une application à l’App Store, Apple la vérifie pour s’assurer qu’elle répond à ces critères. Si ce n’est pas le cas, Apple la rejette et vous devrez résoudre les problèmes mentionnés avant de la soumettre à nouveau. Par conséquent, il est judicieux de vous familiariser avec les instructions aussitôt que possible dans le processus de développement.

Voici quelques éléments à surveiller quand vous soumettez une application :

  1. Assurez-vous que la description de l’application correspond à sa fonction.
  2. Vérifiez que l’application ne plante pas dans des conditions d’utilisation normales. Cela inclut son utilisation sur tous les appareils iOS qu’elle prend en charge.

Regardez également les ressources associées à l’App Store que fournit Apple.

Configurer un ID d’application et des droits

Chaque application iOS a un ID d’application unique, qui est associé à un ensemble de services d’application appelé droits. Les droits autorisent les applications à effectuer différentes opérations telles que recevoir une notification push, accéder aux fonctionnalités iOS comme HealthKit et plus encore.

Pour créer un ID d’application et sélectionner tous les droits nécessaires, visitez le portail des développeurs Apple et procédez comme suit :

  1. Connectez-vous au portail des développeurs Apple. Si vous n’avez pas encore d’ID Apple, créez d’abord un ID Apple.
  2. Accédez à la section Certificats, ID et profils , puis à la section Identificateurs .
  3. Cliquez sur le + bouton en regard du titre Identificateurs en haut de la page.
  4. Sélectionnez ID d’application , puis cliquez sur Continuer.
  5. Sélectionnez Application , puis cliquez sur Continuer.
  6. Entrez une description et un ID d’offre groupée pour la nouvelle application, puis sélectionnez les fonctionnalités requises par votre application Xamarin.iOS. Les services d’application sont décrits en détail dans le guide Utilisation des fonctionnalités dans Xamarin.iOS. Lorsque vous avez terminé d’effectuer vos sélections, cliquez sur Continuer.
  7. Cliquez sur le bouton Inscrire pour terminer le processus de création de l’ID d’application.

En plus de sélectionner et configurer les services d’application nécessaires quand vous définissez l’ID d’application, vous devez configurer l’ID d’application et les droits dans votre projet Xamarin.iOS en modifiant les fichiers Info.plist et Entitlements.plist. Pour plus d’informations, consultez le guide Utilisation des droits dans Xamarin.iOS, qui explique comment créer un fichier Entitlements.plist et la signification des différents paramètres de droits qu’il contient.

Inclure une icône de l’App Store

Lorsque vous soumettez une application à Apple, veillez à ce qu’elle contienne un catalogue de ressources présentant une icône de l’App Store. Pour savoir comment procéder, consultez le guide Icônes App Store dans Xamarin.iOS.

Définir les icônes et les écrans de lancement de l’application

Avec Apple, pour qu’une application iOS soit mise à disposition sur l’App Store, elle doit présenter des icônes et des écrans de lancement adaptés à tous les appareils iOS sur lesquels elle peut s’exécuter. Pour plus d’informations sur la configuration des icônes et des écrans de lancement d’une application, consultez les guides suivants :

Créer et installer un profil de provisionnement App Store

iOS utilise des profils de provisionnement pour contrôler la façon dont une build d’application particulière peut être déployée. Il s’agit de fichiers qui contiennent des informations sur le certificat utilisé pour signer une application, sur l’ID d’application et sur l’emplacement d’installation de l’application. Pour des tâches de développement et de distribution ad hoc, le profil de provisionnement contient également la liste des appareils autorisés sur lesquels vous pouvez déployer l’application. Toutefois, pour la distribution dans l’App Store, seules les informations sur le certificat et l’ID d’application sont incluses, car l’unique système de distribution publique est l’App Store.

Pour créer et installer un profil de provisionnement App Store, procédez comme suit :

  1. Connectez-vous au portail des développeurs Apple.
  2. Accédez à la section Certificats, ID et profils , puis à la section Profils .
  3. Cliquez sur le + bouton, sélectionnez Développement d’applications iOS et App Store, puis cliquez sur Continuer.
  4. Sélectionnez l’ID d’application de votre application dans la liste et cliquez sur Continue.
  5. Sélectionnez un certificat de signature et cliquez sur Continue.
  6. Sélectionnez les appareils à inclure dans ce profil, puis cliquez sur Continuer.
  7. Entrez un nom de profil d’approvisionnement, puis cliquez sur Générer pour générer le profil.
  8. Utilisez les outils de gestion des comptes Apple de Xamarin pour télécharger le profil de provisionnement nouvellement créé sur votre Mac. Si vous êtes sur Mac, vous pouvez également télécharger le profil de provisionnement directement du portail des développeurs Apple et double-cliquer dessus pour l’installer.

Pour des instructions détaillées, consultez Création d’un profil de distribution et Sélection d’un profil de distribution dans un projet Xamarin.iOS.

Mettre à jour la configuration de build Release

Les nouveaux projets Xamarin.iOS configurent automatiquement les configurations de buildDebug et Release. Pour configurer correctement la build Release, effectuez ces étapes :

  1. Dans le Panneau Solution, ouvrez le fichier Info.plist situé à l’intérieur du projet iOS.

  2. Vérifiez que vous êtes en mode Application . Cela peut être défini en cliquant sur l’option dans la barre de navigation inférieure.

  3. Sélectionnez Provisionnement manuel comme option de signature. Enregistrez le fichier et fermez-le.

  4. Cliquez avec le bouton droit sur le Nom du projet dans le panneau Solutions, sélectionnez Options et accédez à l’onglet Build iOS.

  5. Définissez Configuration sur Release et Plateforme sur iPhone.

  6. Pour générer avec un kit SDK iOS spécifique, sélectionnez-le dans la liste Version du SDK. Sinon, laissez cette valeur sur Par défaut.

  7. L’édition des liens réduit la taille globale de votre application en éliminant le code inutilisé.

    • Dans la plupart des cas, le comportement de l’éditeur de liens doit être défini sur la valeur par défaut Lier les SDK Framework uniquement.
    • L’utilisation de l’option Don’t Link peut entraîner le rejet de l’application par Apple en raison de la présence d’API iOS non publiques dans Xamarin.iOS qui seraient liées avec l’option Sdk Link Framework uniquement
    • Lier tout doit être utilisé avec soin, car il supprime le code de tous les assemblys du projet, y compris les bibliothèques tierces. Il peut supprimer le code que la bibliothèque tierce peut utiliser uniquement via la réflexion que l’éditeur de liens ne peut pas détecter, car il effectue une analyse statique du code pour déterminer le code de la bibliothèque utilisé. Utilisez Link All avec soin, car vous devrez peut-être conserver manuellement certaines classes et/ou méthodes pour éviter les échecs d’exécution en raison d’un code manquant.
    • Pour plus d’informations, reportez-vous au guide Édition des liens des applications Xamarin.iOS.
  8. Pour iOS 11, sélectionnez l’une des architectures d’appareil qui prend en charge ARM64. Pour plus d’informations sur la génération d’applications pour les appareils iOS 64 bits, consultez la section Activation de builds 64 bits d’applications Xamarin.iOS dans la documentation traitant des considérations sur les plateformes 32/64 bits.

  9. Vous pouvez utiliser le compilateur LLVM pour générer du code plus court et plus rapide. Toutefois, cette option allonge la durée de compilation.

  10. Cochez Optimiser les images PNG pour réduire encore davantage la taille de votre application.

  11. Vous ne devez pas activer le débogage, car cela grossit inutilement la build.

  12. En fonction des besoins de votre application, vous pouvez également ajuster le type de Garbage Collection utilisé et configurer l’internationalisation.

    Après avoir défini les options décrites ci-dessus, vos paramètres de build doivent ressembler à ceci :

    iOS Build settings

    Consultez également le guide de mécanique de build iOS, qui décrit plus en détail les paramètres de build.

  13. Accédez à l’onglet Signature de bundle iOS. Si les options ici ne sont pas modifiables, vérifiez que l’approvisionnement manuel est sélectionné dans le fichier Info.plist.

  14. Assurez-vous que Configuration est défini sur Release et que Plateforme est défini sur iPhone.

  15. Définissez Identité de signature sur Distribution (automatique).

  16. Pour Profil de provisionnement, sélectionnez le profil de provisionnement App Store créé ci-dessus.

    Les options de signature du bundle de votre projet doivent maintenant ressembler à ceci :

    iOS Bundle Signing

  17. Cliquez sur OK pour enregistrer les changements apportés aux propriétés du projet.

Configurer votre application dans iTunes Connect

iTunes Connect est une suite d’outils web qui vous permet de gérer vos applications iOS sur l’App Store. Vous devez configurer correctement votre application Xamarin.iOS dans iTunes Connect avant de pouvoir la soumettre à Apple pour vérification et la publier sur l’App Store.

Pour savoir comment procéder, lisez le guide Configuration d’une application dans iTunes Connect.

Générer et soumettre votre application

Avec vos paramètres de build correctement configurés et iTunes Connect en attente de votre soumission, vous pouvez générer votre application et la soumettre à Apple.

  1. Dans Visual Studio pour Mac, sélectionnez la configuration de build Release et un appareil (pas un simulateur) pour lequel effectuer la génération.

    Build configuration and platform selection

  2. Dans le menu Générer, sélectionnez Archiver pour publication.

  3. Une fois l’archive créée, la vue Archives s’affiche. Cliquez sur Signer et distribuer... pour ouvrir l’Assistant de publication.

    Screenshot of the Sign and Distribute button location in the Archives view.

    Remarque

    Par défaut, la vue Archives montre uniquement les archives de la solution ouverte. Pour voir toutes les solutions ayant des archives, cochez la case Afficher toutes les archives. Il est judicieux de conserver les anciennes archives afin que les informations de débogage qu’elles contiennent puissent être utilisées pour générer les symboles de débogage des rapports de plantage si nécessaire.

  4. Sélectionnez le canal de distribution App Store. Sélectionnez Suivant.

  5. Sélectionnez Charger comme destination. Sélectionnez Suivant.

  6. Dans la fenêtre Profil de provisionnement, sélectionnez votre identité de signature, votre application et votre profil de provisionnement. Sélectionnez Suivant.

    Screenshot of the Provisioning profile wizard page showing a valid signing identity, app, and provisioning profile selection.

  7. Dans l’App Store Connecter fenêtre d’informations, sélectionnez un nom d’utilisateur d’ID Apple dans le menu et entrez un mot de passe spécifique à l’application. Sélectionnez Suivant.

    Screenshot of the App Store Connect information wizard page showing an Apple ID user name selected.

  8. Vérifiez les détails de votre package, puis cliquez sur Publier. Après avoir sélectionné un emplacement pour enregistrer le fichier .ipa, l’Assistant charge votre application dans l’App Store Connecter.

    Remarque

    Apple peut rejeter les applications avec iTunesMetadata.plist inclus dans le fichier .ipa, ce qui entraîne une erreur comme la suivante :

    ERROR: ERROR ITMS-90047: "Disallowed paths ( "iTunesMetadata.plist" ) found at: Payload/iPhoneApp1.app"

    Pour résoudre cette erreur, consultez ce post sur les forums Xamarin.

Statut dans iTunes Connect

Pour voir le statut de la soumission de votre application, connectez-vous à iTunes Connect et sélectionnez votre application. Le statut initial doit être En attente de vérification, même si vous pouvez lire temporairement Chargement reçu pendant son traitement.

Waiting For Review

Conseils et astuces

Personnaliser l’emplacement du fichier IPA

Une propriété MSBuild, IpaPackageDir, permet de personnaliser l’emplacement de sortie du fichier .ipa. Si IpaPackageDir est défini sur un emplacement personnalisé, le fichier .ipa se trouve à cet emplacement et non dans le sous-répertoire horodaté par défaut. Cela peut être utile quand vous créez des builds automatisées qui reposent sur un chemin de répertoire spécifique pour fonctionner correctement, par exemple les build d’intégration continue (CI).

Il existe plusieurs façons d’utiliser la nouvelle propriété. Par exemple, pour envoyer le fichier .ipa vers l’ancien répertoire par défaut (comme dans Xamarin.iOS 9.6 et antérieur), vous pouvez affecter à la propriété IpaPackageDir la valeur $(OutputPath) en utilisant l’une des approches suivantes. Les deux approches sont compatibles avec toutes les builds d’API unifiée Xamarin.iOS, notamment les builds d’IDE et les builds de ligne de commande qui utilisent msbuild ou mdtool :

  • La première option consiste à définir la propriété IpaPackageDir dans un élément <PropertyGroup> d’un fichier MSBuild. Par exemple, vous pouvez ajouter le <PropertyGroup> suivant au bas du fichier .csproj du projet d’application iOS (juste avant la balise de fermeture </Project>) :

    <PropertyGroup>
      <IpaPackageDir>$(OutputPath)</IpaPackageDir>
    </PropertyGroup>
    
  • Une meilleure approche consiste à ajouter un élément <IpaPackageDir> au bas du <PropertyGroup> existant, qui correspond à la configuration utilisée pour générer le fichier .ipa. Cette solution est préférable, car elle permet de préparer le projet pour une compatibilité future avec un paramètre planifié de la page de propriétés de projet dans les Options IPA iOS. Si vous utilisez la configuration Release|iPhone pour générer le fichier .ipa, l’ensemble du groupe de propriétés mis à jour peut ressembler à ce qui suit :

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone'">
       <Optimize>true</Optimize>
       <OutputPath>bin\iPhone\Release</OutputPath>
       <ErrorReport>prompt</ErrorReport>
       <WarningLevel>4</WarningLevel>
       <ConsolePause>false</ConsolePause>
       <CodesignKey>iPhone Developer</CodesignKey>
       <MtouchUseSGen>true</MtouchUseSGen>
       <MtouchUseRefCounting>true</MtouchUseRefCounting>
       <MtouchFloat32>true</MtouchFloat32>
       <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
       <MtouchLink>SdkOnly</MtouchLink>
       <MtouchArch>ARMv7, ARM64</MtouchArch>
       <MtouchHttpClientHandler>HttpClientHandler</MtouchHttpClientHandler>
       <MtouchTlsProvider>Default</MtouchTlsProvider>
       <BuildIpa>true</BuildIpa>
       <IpaPackageDir>$(OutputPath)</IpaPackageDir>
    </PropertyGroup>
    

Il existe une autre technique pour les builds de ligne de commande msbuild. Elle consiste à ajouter un argument de ligne de commande /p: pour définir la propriété IpaPackageDir. Dans ce cas, notez que msbuild ne développe pas les expressions $() passées sur la ligne de commande, il est donc impossible d’utiliser la syntaxe $(OutputPath). À la place, vous devez fournir un chemin complet.

msbuild /p:Configuration="Release" /p:Platform="iPhone" /p:ServerAddress="192.168.1.3" /p:ServerUser="macuser" /p:IpaPackageDir="%USERPROFILE%\Builds" /t:Build SingleViewIphone1.sln

Ou sur Mac :

msbuild /p:Configuration="Release" /p:Platform="iPhone" /p:IpaPackageDir="$HOME/Builds" /t:Build SingleViewIphone1.sln

Une fois votre build de distribution créée et archivée, vous êtes prêt à soumettre votre application à iTunes Connect.

Résumé

Cet article a décrit comment configurer, générer et soumettre une application iOS pour la publier sur l’App Store.