Distribution d’App Center – Mises à jour dans l’application Unity
Important
La mise hors service de Visual Studio App Center est prévue pour le 31 mars 2025. Bien que vous puissiez continuer à utiliser Visual Studio App Center jusqu’à sa mise hors service complète, il existe plusieurs alternatives recommandées vers lesquelles vous pouvez envisager la migration.
En savoir plus sur les chronologies et les alternatives de support.
La distribution App Center permet à vos utilisateurs/testeurs d’installer de nouvelles versions d’une application une fois que vous l’avez distribuée via App Center. Une fois activé, le Kit de développement logiciel (SDK) présente une boîte de dialogue de mise à jour aux utilisateurs pour télécharger ou reporter l’installation de la dernière mise à jour. Une fois qu’ils choisissent de mettre à jour, le SDK commence à mettre à jour votre application.
Important
Le Kit de développement logiciel (SDK) Distribution pour Unity ne prend pas en charge UWP. Les instructions de cette page couvrent uniquement Android et iOS.
Avertissement
Google Play considère le code de mise à jour dans l’application comme un comportement malveillant, même s’il n’est pas utilisé lors de l’exécution. Supprimez ce code comme indiqué dans cette section avant de soumettre votre application à Google Play. Le fait de ne pas supprimer le code de mise à jour dans l’application peut entraîner une non-conformité et la suppression de l’application de Google Play.
Notes
Si vous exécutez des tests d’interface utilisateur automatisés, les mises à jour dans l’application activées bloquent vos tests d’interface utilisateur automatisés, car ils tenteront de s’authentifier auprès du back-end App Center. Nous vous recommandons de désactiver les mises à jour dans l’application pour vos tests d’interface utilisateur.
Le Kit de développement logiciel (SDK) App Center est conçu avec une approche modulaire : un développeur doit uniquement intégrer les modules des services qui l’intéressent.
Suivez la documentation de prise en main Unity si vous n’avez pas encore configuré et démarré le Kit de développement logiciel (SDK) dans votre application. Veillez à importer le package App Center Distribute. Son nom doit être au format AppCenterDistribute-v{version}.unitypackage
.
Notes
Android 10 ou version ultérieure a des restrictions sur l’activité de lancement en arrière-plan. Consultez l’article sur les restrictions relatives au démarrage des activités à partir de l’arrière-plan.
Notes
Les applications s’exécutant sur Android 10 (édition Go) ne peuvent pas recevoir l’autorisation SYSTEM_ALERT_WINDOW . Consultez l’article sur SYSTEM_ALERT_WINDOW sur les appareils Go.
Notes
À compter d’Android 11, ACTION_MANAGE_OVERLAY_PERMISSION
les intentions amènent toujours l’utilisateur à l’écran Paramètres de niveau supérieur, où l’utilisateur peut accorder ou révoquer les SYSTEM_ALERT_WINDOW
autorisations pour les applications. Consultez l’article sur les mises à jour des autorisations dans Android 11.
Google Play considère le code de mise à jour dans l’application comme un comportement malveillant, même s’il n’est pas utilisé lors de l’exécution. Supprimez ce code avant d’envoyer votre application à Google Play. Le fait de ne pas supprimer le code de mise à jour dans l’application peut entraîner une non-conformité et la suppression de l’application de Google Play. Pour supprimer le code natif des mises à jour dans l’application, décochez la case Utiliser Distribuer sous la section Distribuer sur l’objet de jeu avec AppCenterBehavior attaché.
Par défaut, Distribute utilise un groupe de distribution public. Si vous souhaitez utiliser un groupe de distribution privé, vous devez passer UpdateTrack
à Privé.
Pour ce faire, choisissez Privé dans la liste déroulante Mettre à jour le suivi sous la section Distribuer sur l’objet de jeu avec AppCenterBehavior attaché.
Lors de l’utilisation de la piste privée, une fenêtre de navigateur s’ouvre pour authentifier l’utilisateur. Toutes les vérifications de mise à jour suivantes obtiennent la dernière version sur la piste privée.
Si un utilisateur est sur la piste privée, cela signifie qu’une fois l’authentification réussie, il obtient la dernière version de tous les groupes de distribution privés dont il est membre. Si un utilisateur est sur la voie publique, cela signifie qu’il obtiendra la dernière version de n’importe quel groupe de distribution public.
Par défaut, le Kit de développement logiciel (SDK) recherche automatiquement les nouvelles versions :
- Au démarrage de l’application.
- Lorsque l’application passe en arrière-plan, à nouveau au premier plan.
- Lors de l’activation du module Distribuer s’il est précédemment désactivé.
Si vous souhaitez case activée pour les nouvelles versions manuellement, vous pouvez désactiver la case activée automatique pour la mise à jour.
Pour ce faire, décochez la case Vérification automatique de la mise à jour sous la section Distribuer sur l’objet de jeu avec AppCenterBehavior attaché.
Vous pouvez ensuite utiliser l’API CheckForUpdate
décrite dans la section suivante.
Distribute.CheckForUpdate();
Cette opération envoie une demande à App Center et affiche une boîte de dialogue de mise à jour au cas où une nouvelle version est disponible.
Notes
Une case activée manuelle pour l’appel de mise à jour fonctionne même lorsque les mises à jour automatiques sont activées. Une case activée manuelle de mise à jour est ignorée si une autre case activée est déjà effectuée. La case activée manuelle pour la mise à jour ne sera pas traitée si l’utilisateur a reporté les mises à jour (sauf si la dernière version est une mise à jour obligatoire).
Vous pouvez fournir vos propres chaînes de ressources si vous souhaitez localiser le texte affiché dans la boîte de dialogue de mise à jour. Examinez les fichiers de chaîne pour iOS dans ce fichier de ressources iOS et pour Android dans ce fichier de ressources Android. Utilisez le même nom/clé de chaîne et spécifiez la valeur localisée à refléter dans la boîte de dialogue dans vos propres fichiers de ressources d’application.
Vous pouvez personnaliser l’apparence de la boîte de dialogue de mise à jour par défaut en implémentant le ReleaseAvailable
rappel.
Avertissement
Vous devez inscrire le rappel dans la Awake
méthode d’un MonoBehaviour
dans la première scène que votre application charge pour éviter de manquer des appels de rappel de mise en production.
// In this example, OnReleaseAvailable is a method name in same class
Distribute.ReleaseAvailable = OnReleaseAvailable;
Voici une implémentation de rappel qui remplace la boîte de dialogue sdk par une logique personnalisée :
bool OnReleaseAvailable(ReleaseDetails releaseDetails)
{
// Look at releaseDetails public properties to get version information, release notes text or release notes URL
string versionName = releaseDetails.ShortVersion;
string versionCodeOrBuildNumber = releaseDetails.Version;
string releaseNotes = releaseDetails.ReleaseNotes;
Uri releaseNotesUrl = releaseDetails.ReleaseNotesUrl;
// (Do something with the values if you want)
// On mandatory update, user can't postpone
if (releaseDetails.MandatoryUpdate)
{
// Force user to update (you should probably show some custom UI here)
Distribute.NotifyUpdateAction(UpdateAction.Update);
}
else
{
// Allow user to update or postpone (you should probably show some custom UI here)
// "GetUserUpdateAction()" isn't part of the SDK; it just represents a way of getting user response.
// This blocks the thread while awaiting the user's response! This example shouldn't be used literally
UpdateAction updateAction = GetUserUpdateAction();
Distribute.NotifyUpdateAction(updateAction);
}
// Return true if you're using your own UI to get user response, false otherwise
return true;
}
Notes d’implémentation pour Android :
Comme indiqué dans l’exemple, vous devez appeler Distribute.NotifyUpdateAction(UpdateAction.UPDATE);
ou Distribute.NotifyUpdateAction(UpdateAction.POSTPONE);
si votre rappel retourne true
.
Si vous n’appelez NotifyUpdateAction
pas , le rappel se répète à chaque modification d’activité.
Le rappel peut être appelé à nouveau avec la même version si l’activité change avant que l’action de l’utilisateur ne soit avertie au SDK.
Ce comportement est nécessaire pour couvrir les scénarios suivants :
- Votre application est envoyée à l’arrière-plan (par exemple, en appuyant sur ACCUEIL), puis reprise dans une autre activité.
- Votre activité est couverte par une autre activité sans quitter l’application (comme cliquer sur certaines notifications).
- Scénarios similaires à ce qui précède.
Dans ce cas, l’activité hébergeant la boîte de dialogue peut être remplacée sans intervention de l’utilisateur. Ainsi, le SDK appelle à nouveau l’écouteur afin que vous puissiez restaurer la boîte de dialogue personnalisée.
Dans les cas où le Kit de développement logiciel (SDK) recherche des mises à jour et ne trouve aucune mise à jour disponible plus récente que celle actuellement utilisée, un NoReleaseAvailable
rappel est appelé. Cela vous permet d’exécuter du code personnalisé dans de tels scénarios.
Vous devez inscrire le rappel avant d’appeler AppCenter.Start
, comme indiqué dans l’exemple suivant :
// In this example OnNoReleaseAvailable is a method name in same class
Distribute.NoReleaseAvailable = OnNoReleaseAvailable;
AppCenter.Start(...);
void OnNoReleaseAvailable()
{
AppCenterLog.Info(LogTag, "No release available callback invoked.");
}
## Enable or disable App Center Distribute at runtime
You can enable and disable App Center Distribute at runtime. If you disable it, the SDK won't provide any in-app update functionality but you can still use the Distribute service in the App Center portal.
To disable the Distribute service, use the following code:
```csharp
Distribute.SetEnabledAsync(false);
Pour réactiver App Center Distribute, utilisez la même API, mais passez true
en tant que paramètre.
Distribute.SetEnabledAsync(true);
Cette API est asynchrone. Vous pouvez en savoir plus sur notre guide des API asynchrones App Center .
Vous n’avez pas besoin d’attendre cet appel pour rendre les autres appels d’API (par IsEnabledAsync
exemple) cohérents.
L’état est conservé dans le stockage de l’appareil au cours des lancements d’application.
Vous pouvez également case activée si App Center Distribute est activé :
Distribute.IsEnabledAsync();
Cette API est asynchrone. Vous pouvez en savoir plus sur notre guide des API asynchrones App Center .
Par défaut, les mises à jour dans l’application sont activées uniquement pour les builds de mise en production.
Pour activer les mises à jour dans l’application pour les builds de débogage sur Android et iOS, case activée la case Activer la distribution dans le débogage sous la section Distribuer sur l’objet de jeu avec AppCenterBehavior attaché.
Dans Unity, une build pouvant être déboguée est une build avec une option de build de développement cochée.
Notes
Ce rappel fonctionne uniquement sur iOS.
Inscrivez le rappel comme indiqué dans l’exemple suivant :
// In this example, OnWillExitApp is a method name in same class
Distribute.WillExitApp = OnWillExitApp;
void OnWillExitApp()
{
// Perform clean up here
}
Avec cela, OnWillExitApp()
sera appelé lorsque Distribute est sur le point de se fermer.
Notes
Pour que les mises à jour dans l’application fonctionnent, une build d’application doit être téléchargée à partir du lien. Il ne fonctionne pas s’il est installé à partir d’un IDE ou manuellement.
La fonctionnalité de mises à jour dans l’application fonctionne comme suit :
- Cette fonctionnalité fonctionne uniquement avec les builds RELEASE (par défaut) qui sont distribuées à l’aide du service De distribution App Center . Cela ne fonctionne pas si la fonctionnalité d’accès guidé iOS est activée.
- Une fois que vous avez intégré le Kit de développement logiciel (SDK), créez une version de mise en production de votre application et chargez-la dans App Center. Les utilisateurs du groupe de distribution sont avertis de la nouvelle version par e-mail.
- Lorsque chaque utilisateur ouvre le lien dans son e-mail, l’application est installée sur son appareil. Il est important qu’ils utilisent le lien d’e-mail pour l’installation. Nous ne prenons pas en charge le chargement indépendant. Lorsqu’une application est téléchargée à partir du lien, le Kit de développement logiciel (SDK) enregistre des informations importantes à partir des cookies pour case activée pour des mises à jour ultérieures. Sinon, le SDK ne dispose pas de ces informations clés.
- Si l’application définit la piste sur privée, un navigateur s’ouvre pour authentifier l’utilisateur et activer les mises à jour dans l’application. Le navigateur ne s’ouvre pas à nouveau tant que les informations d’authentification restent valides, même si vous revenez à la piste publique et que vous revenez au mode privé ultérieurement. Si l’authentification du navigateur réussit, l’utilisateur est redirigé automatiquement vers l’application. Si la piste est publique (qui est la valeur par défaut), l’étape suivante se produit directement.
- Une nouvelle version de l’application affiche la boîte de dialogue de mise à jour dans l’application demandant aux utilisateurs de mettre à jour votre application s’il s’agit des éléments suivants :
- iOS :
- une valeur plus élevée de
CFBundleShortVersionString
ou - une valeur égale de
CFBundleShortVersionString
mais une valeur supérieure deCFBundleVersion
. - les versions sont les mêmes, mais l’identificateur unique de build est différent.
- une valeur plus élevée de
- Android :
- une valeur plus élevée de
versionCode
ou - une valeur égale de
versionCode
, mais une valeur différente deversionName
.
- une valeur plus élevée de
- iOS :
Conseil
Si vous chargez le même .apk/.ipa une deuxième fois, la boîte de dialogue ne s’affiche pas, car les fichiers binaires sont identiques. Sur iOS, si vous chargez une nouvelle build avec les mêmes propriétés de version, la boîte de dialogue de mise à jour s’affiche. La raison en est que c’est un binaire différent. Sur Android, les fichiers binaires sont considérés comme identiques si les deux propriétés de version sont identiques.
Vous devez charger les builds de mise en production (qui utilisent le module Distribuer du Kit de développement logiciel (SDK) App Center) sur le portail App Center pour tester les mises à jour dans l’application, en augmentant le nombre de versions à chaque fois.
- Créez votre application dans le portail App Center si ce n’est déjà fait.
- Créez un groupe de distribution et attribuez-lui un nom.
- Ajoutez vous-même (ou toutes les personnes que vous souhaitez inclure lors de votre test de la fonctionnalité de mise à jour dans l’application). Utilisez une nouvelle adresse e-mail ou une adresse e-mail à jeter pour cette étape, une adresse qui n’est pas déjà utilisée avec cette application. Cela garantit que votre expérience est proche de celle de vos testeurs réels.
- Créez une build de votre application qui inclut App Center Distribute et contient la logique d’installation, comme décrit ci-dessous. Si le groupe est privé, n’oubliez pas de définir la piste de mise à jour privée dans l’application avant de commencer à utiliser la
UpdateTrack
propriété . - Cliquez sur le bouton Distribuer une nouvelle version dans le portail et chargez votre build de l’application.
- Une fois le chargement terminé, cliquez sur Suivant et sélectionnez le groupe de distribution que vous avez créé précédemment comme Destination de cette distribution d’application.
- Passez en revue la distribution et distribuez la build à votre groupe de test dans l’application.
- Personnes de ce groupe recevront une invitation à être testeurs de l’application. Une fois qu’ils ont accepté l’invitation, ils peuvent télécharger l’application à partir du portail App Center à partir de leur appareil mobile. Une fois les mises à jour dans l’application installées, vous êtes prêt à tester les mises à jour dans l’application.
- Appuyez sur la version de votre application (
CFBundleShortVersionString
ouCFBundleVersion
pour iOS,versionCode
pour Android). - Générez la version release de votre application et chargez une nouvelle build comme vous l’avez fait à l’étape précédente. Distribuez au groupe de distribution que vous avez créé précédemment. Les membres du groupe de distribution seront invités à entrer une nouvelle version lors du prochain démarrage de l’application.
Conseil
Consultez les informations sur l’utilisation d’App Center Distribute pour obtenir des informations plus détaillées sur les groupes de distribution , etc. Bien qu’il soit possible d’utiliser App Center Distribute pour distribuer une nouvelle version de votre application sans ajouter de code, l’ajout d’App Center Distribute au code de votre application entraînera une expérience plus transparente pour vos testeurs et utilisateurs à mesure qu’ils obtiennent l’expérience de mise à jour dans l’application.