Prise en charge des activités pour les annonces plein écran

Envoyer un commentaire

Le SDK Runtime impose des restrictions sur la façon dont les SDK peuvent lancer de nouvelles activités. Cela peut poser un problème pour les formats d'annonces plein écran qui reposent généralement sur le lancement d'une activité distincte pour améliorer le contrôle et l'expérience utilisateur. Pour résoudre ce problème, SDK Runtime introduit un nouveau mécanisme pour les activités en bac à sable.

Les SDK chargés dans l'environnement SDK Runtime ne peuvent pas définir directement des balises <activity> dans leur fichier manifeste ni lancer leurs propres activités. À la place, une nouvelle action d'intent, START_SANDBOXED_ACTIVITY, est introduite.

Bien que les SDK ne puissent pas lancer d'intents avec cette action, ils peuvent demander à l'application cliente de lancer cet intent. Le système crée ensuite une activité définie par la plate-forme et la transmet au SDK. Cette activité sera exécutée dans le même processus que pour le SDK.

Le SDK peut ensuite utiliser cette activité pour implémenter et gérer l'annonce plein écran. expérience.

L'activité fournie par la plate-forme est un android.app.Activity standard, lancées dans le cadre de la tâche de l'application cliente.

Création d'activités dans le SDK Runtime

Il existe deux méthodes principales pour créer des activités: utiliser les bibliothèques Activity simplifiées de Jetpack ou interagir directement avec les API Platform.

Nous vous recommandons d'utiliser les bibliothèques d'activité, car elles simplifient la création d'activités en éliminant la complexité sous-jacente.

Bibliothèques d'activités

Activité bibliothèques fournissent plusieurs avantages:

  • Extraire les détails internes liés à l'enregistrement des gestionnaires d'activité et au partage de leurs identifiants avec les applications clientes
  • Permet aux développeurs d'applications de mieux contrôler la façon dont les SDK créent des activités dans leurs applications en leur permettant de définir des conditions (prédicats) à remplir.
  • Créez une méthode unifiée permettant aux SDK de définir les API qui lancent des activités.

Il existe trois bibliothèques d'activités: principale, client et fournisseur.

  • La bibliothèque core fournit les interfaces utilisées par les applications clientes et bibliothèques de fournisseurs.
  • La bibliothèque provider fournit des API permettant aux SDK de lancer des activités.
  • La bibliothèque cliente fournit des API permettant aux applications clientes de créer un lanceur d'activités, que les SDK peuvent utiliser pour demander aux applications de lancer des activités.

Ces bibliothèques introduisent les API suivantes:

Pour lancer des activités avec les bibliothèques d'activités, procédez comme suit:

  1. Le SDK ajoute un paramètre du type SdkActivityLauncher à toutes les API qui lanceront des activités.
  2. L'application cliente appelle createSdkActivityLauncher sur l'une de ses activités pour créer un lanceur d'applications pouvant être transmis au SDK lors des appels d'API.
  3. Le SDK appelle SdkSandboxControllerCompat.registerSdkSandboxActivityHandler(SdkSandboxActivityHandlerCompat) et récupère le jeton d'identification.
  4. Le SDK appelle launchSdkActivity pour lancer l'activité.

Le schéma suivant illustre la procédure à suivre en cas d'utilisation de bibliothèques d'activités.

<ph type="x-smartling-placeholder">
</ph> Schéma de séquence de la bibliothèque d&#39;activités
Schéma séquentiel illustrant le processus de démarrage d'une activité à l'aide d'une activité bibliothèques.

API de la plate-forme

La plate-forme présente les API suivantes pour faciliter la création et Gestion des activités en bac à sable dans le SDK Runtime:

Pour démarrer une activité à l'aide des API Platform, les SDK doivent suivre ce flux:

  1. Le SDK enregistre un gestionnaire d'activité à l'aide des API fournies et obtient un identifiant.
  2. Le SDK partage cet identifiant avec son application cliente.
  3. L'application cliente appelle la méthode pour démarrer une activité dans le SDK Runtime avec l'API de la plate-forme startSdkSandboxActivity(Activity, IBinder), en transmettant comme paramètres l'activité de départ choisie pour cette nouvelle activité, ainsi que l'identifiant du gestionnaire d'activités.
  4. La plate-forme démarre une activité et notifie le SDK via un rappel dans le gestionnaire d'activités (SdkSandboxActivityHandler.onActivityCreated(Activity)).
  5. Le SDK utilise l'activité pour y insérer une annonce.

L'utilisation d'API Platform rend le SDK responsable du partage L'objet SdkSandboxActivityHandler avec l'application cliente via ses API au moment opportun ; à guider les applications clientes sur la façon de l’utiliser.

Dans le diagramme de flux suivant, l'exemple de SDK comporte une méthode launchActivity(AppCallback) qui attend une (défini dans le cadre de l'API du SDK). Ce rappel est utilisé par la SDK permettant de partager l'événement du gestionnaire d'activités (SdkSandboxActivityHandler) avec l'application cliente.

<ph type="x-smartling-placeholder">
</ph> Schéma de séquence des API de la plate-forme
Schéma séquentiel illustrant le processus de démarrage d'une activité à l'aide des API de la plate-forme

Visibilité

Dans le SDK Runtime, les annonces intégrées à la hiérarchie des vues de l'application cliente utilisent côté canaux pour afficher les vues du SDK depuis le processus du SDK jusqu'au processus de l'application cliente.

Le SDK ne peut pas utiliser les mêmes API View en dehors du SDK Runtime pour déterminer si l'annonce est visible pour l'utilisateur, car son visionnage n'est pas associée à la fenêtre de l'application (visibilité).

En revanche, l'activité fournie par la plate-forme s'exécute de manière native dans le processus du SDK Runtime, ce qui élimine le besoin de versions secondaires et permet aux SDK d'utiliser les API Android Activity et View standards.

Compte tenu de ces différentes implémentations, nos efforts continus visent à unifier pour récupérer les signaux de visibilité, quel que soit le contexte de chargement de l'annonce.

Cycle de vie

La ActivityHolder transmis au SDK via SdkSandboxActivityHandlerCompat.onActivityCreated(ActivityHolder) implements LifecycleOwner et peuvent être utilisés pour connaître Lifecycle.Event.

Navigation vers l'arrière

La méthode ActivityHolder.getOnBackPressedDispatcher() retours OnBackPressedDispatcher qui peut être utilisée pour enregistrer OnBackPressedCallback pour gérer le retour arrière.