Introduction et configuration des activités en direct – Partie 1
Introduction
En tant qu’utilisateurs iOS, nous sommes tous familiers avec l’activité en direct. Lorsque nous achetons une pizza via l’une des applications de commande, une activité en direct apparaît (soit sur l’écran de verrouillage, soit dans la région insulaire dynamique) et affiche le statut mis à jour de notre commande. Leur objectif est d’afficher les données les plus récentes de nos applications et de mettre à jour leur contenu.
Dans ce blog, nous nous concentrerons sur les activités en direct d’un point de vue technique avec un exemple approfondi.
- Peu importe que vous soyez un développeur iOS, un concepteur ou n’importe qui d’autre. Si vous recherchez une inspiration pour des activités en direct, c’est un bon endroit.
- J’ai préparé pour vous d’autres contenus dont vous pourrez profiter : des conseils de dépannage, des tests, des limitations et quelques captures d’écran intéressantes d’activités en direct.
Contraintes
Étant donné que nous faisons tous partie de l’écosystème Apple, il n’est pas surprenant que la plupart des produits Apple comportent leurs propres limites.
- Ces limitations commencent par le framework ActivityKit, disponible à partir d’iOS 16.1. Les activités en direct apparaissent sur les appareils compatibles, apparaissant sur l’îlot dynamique et en haut de la liste des notifications de l’écran de verrouillage. Pour les appareils qui ne disposent pas d’îlot dynamique, ils apparaissent uniquement sur l’écran de verrouillage.
- La seule façon de mettre à jour l’interface utilisateur des activités en direct est d’utiliser le framework ActivityKit ou les notifications push. Cela signifie que nous ne pouvons effectuer aucune opération dans le cadre d’une activité en direct, par exemple des requêtes réseau, puis mettre à jour l’interface utilisateur.
- La taille de l’image de l’activité en direct ne doit pas dépasser la taille totale du mode de présentation dans lequel elle est affichée. En mode de présentation minimale, l’image doit avoir la taille maximale de la vue de présentation minimale. S’il est plus grand, il ne sera pas affiché.
- Les activités en direct ont une durée de vie limitée. Si l’utilisateur ou l’application ne met pas fin à l’activité en direct, celle-ci reste visible pendant 8 heures. Après cela, le système les supprime de l’îlot dynamique. Sur l’écran de verrouillage, l’activité en direct peut être affichée pendant 4 heures supplémentaires si l’utilisateur ne la supprime pas manuellement.
- Les données dynamiques d’activité en direct, qui représentent les données mises à jour, doivent rester petites, avec une taille maximale de 4 Ko.
Configuration initiale :
La première étape pour introduire l’activité en direct dans notre application consiste à créer un Extension des widgets. Pour créer une nouvelle extension de widget, procédez comme suit : Fichier → Nouveau → Cible → Extension de widget.
L’étape suivante consiste à examiner la configuration Info.plist. Le Soutenir les activités en direct L’option dans la cible du widget et la cible de l’application doit être activée.
Notre activité en direct prend en charge les mises à jour des notifications push. Nous devons nous assurer que les notifications push sont correctement configurées dans notre application. Les notifications push et leur configuration dépassent le cadre de ce blog, donc si vous avez des doutes, vous pouvez vous référer à la documentation d’Apple : https://developer.apple.com/documentation/usernotifications/registering_your_app_with_apns
Code
Pour afficher les données d’activité en direct, nous créons une structure LiveMatchScoreAttributs qui est conforme à Attributs d’activité protocole. Au sein de l’activité en direct, nous disposons de deux types de données :
- Données statiques – Comme son nom l’indique, elles sont utilisées pour afficher les données qui, une fois affichées, ne changent pas, exemple : contenu de la commande comme une pizza, nom du match en cours, etc.
- Données dynamiques – Les données qui ne cessent de changer dans l’état de la commande de l’exemple d’application, s’exécutent dans un jeu, etc.
Les données dynamiques sont définies en utilisant un type interne du Protocole d’attributs d’activitéque nous appelons État du contenu. Ce type ContentState doit être une structure conforme à la Codable et Hachable protocoles. Ainsi, pour gérer des données dynamiques, nous créons une structure de ce type dans l’implémentation de Attributs d’activité.
Les données statiques sont toute information contenue dans LiveMatchScoreAttributs cela ne fait pas partie du ContentState.
Dans notre cas, nous voulons avoir des éléments statiques : title, teamOneName et teamTwoName. Le reste des données doit être dynamique. Voici à quoi ressemble notre représentation des données d’activité en direct :
Conception de l’interface utilisateur d’activité en direct
Commençons maintenant le processus de création de l’interface d’activité en direct. Notre objectif est d’afficher des mises à jour sur les scores des matchs directement sur l’écran de verrouillage et sur l’île dynamique. Par conséquent, passons en revue les étapes permettant de créer cette présentation pour les deux emplacements.
Dynamic Island propose trois modes de présentation :
- Compact – C’est la présentation standard. L’activité en direct occupe l’espace de début et de fin entre la véritable caméra de profondeur.
- Minimal – Si plusieurs activités en direct sont en cours d’exécution, le système décide quelles sont les deux activités en direct à afficher. L’un d’entre eux est affiché sur le côté avant, attaché à l’îlot dynamique. Le second est affiché du côté arrière, détaché de l’îlot dynamique.
- Étendu – Si vous appuyez longuement sur le mode compact ou minimal, ce mode s’affiche.
Discutons comment construire toutes ces présentations :
- Nous créons une structure conforme à Widget protocole. Nommons-le LiveMatchScoreActivité.
- Pour configurer des présentations, nous utilisons le ActivitéConfiguration structurer et préciser Attributs d’activité tapez, dans notre cas, c’est LiveMatchScoreAttributs. Comme vous pouvez le voir dans le code, chaque présentation a accès au contexte. Cela nous donne des données statiques et dynamiques de l’activité en direct.
Nous pouvons spécifier à quoi ressemble notre activité en direct lorsqu’elle est affichée dans différents modes comme étendu, compact et minimal. Nous définissons la vue compacte en utilisant le compactLeading et compactTrailing fermetures. Nous devrions transmettre ici les déclarations de vue SwiftUI. Il en est de même pour la présentation minimale – nous l’avons définie dans le minimal fermeture.
Pour la présentation étendue, les choses deviennent un peu plus complexes. Nous divisons la vue en différentes régions et décidons de ce qui va où. Par exemple, nous pourrions vouloir placer le logo de notre marque dans une région et le contenu principal dans une autre. Découvrez ces régions dans l’image ci-dessous.
Nous devons nous assurer que l’extension du widget reconnaît notre widget nouvellement créé.
Si le widget est le seul dans l’extension, on peut y ajouter l’attribut @main. Cela informe l’extension que le widget est le seul et sert de point de départ. En cas de plusieurs widgets, nous créons un WidgetBundle. Ce bundle comprend tous les widgets dont nous disposons, y compris celui d’activité en direct.
Cycle de vie des activités en direct
- La gestion du cycle de vie d’une activité en direct implique le démarrage, la mise à jour et la fin. Cela peut être fait dans l’application à l’aide du framework ActivityKit ou via des notifications push.
- Pour les appareils exécutant iOS 17.2 et versions ultérieures, nous pouvons démarrer une activité en direct via des notifications push. Sur les anciennes versions d’iOS, il ne peut être démarré qu’à l’aide du framework ActivityKit.
Utilisation du framework ActivityKit pour les opérations de cycle de vie
Pour démarrer une activité en direct avec le Cadre ActivityKitnous utilisons la fonction request de la classe Activity. Nous fournissons les données statiques comme premier paramètre. Le deuxième paramètre est le contentState, qui est l’état initial des données dynamiques. Enfin, nous fournissons le paramètre facultatif pushType. Si nous voulons activer les mises à jour des notifications push, il doit être défini sur PushType.jeton.
Nous devrions utiliser le fonction de mise à jour sur l’instance d’activité pour mettre à jour l’activité en direct. Nous l’avons eu lorsque l’activité en direct a commencé. Lors de la mise à jour, les nouvelles données dynamiques doivent être spécifiées.
La fin peut être effectuée en appelant la fin sur l’instance d’activité. Vous pouvez également fournir l’état final de l’activité, qui sera présenté à l’utilisateur avant que le système ne supprime l’activité en direct.
La politique de licenciement détermine le moment où l’activité en direct est supprimée. La politique de licenciement par défaut permet à l’activité en direct de rester sur l’écran de verrouillage pendant un maximum de 4 heures si elle n’est pas supprimée manuellement par l’utilisateur. De plus, vous pouvez spécifier la stratégie after(_ date: Date), qui supprime l’activité en direct à une date spécifiée mais dans un intervalle de 4 heures.
Conclusion
C’est tout dans cette partie. Nous avons appris comment gérer le cycle de vie des activités en direct via notre application à l’aide d’ActivityKit. Dans la prochaine partie, nous verrons la magie des notifications push. Comment pouvons-nous démarrer, mettre à jour et mettre fin à une activité en direct via une notification push. Rendez-vous dans la prochaine partie de cette série. Acclamations ..!!
VOUS TROUVEZ CECI UTILE ? PARTAGEZ-LE
Source link