Lors de la publication de l'application ivi kids sur Google Play, nous avons été confrontés à un problème: notre SDK publicitaire interne ne répondait pas aux exigences de Google.et l'application a peut-être été supprimée du magasin. Par conséquent, nous avons désactivé toutes les publicités, ce qui a rendu les jeunes utilisateurs très heureux, mais le service marketing était chroniquement mécontent des performances financières.
Le moyen le plus logique de sortir de la situation était de diffuser des annonces que Google lui-même distribuait à l'aide du service Google Ad Manager . Et faites-le en utilisant le SDK IMA, qui est également un produit Google.
Dans cet article, je parlerai de la façon dont nous avons implémenté le SDK IMA dans les applications ivi et ivi kids et des limitations que nous avons rencontrées.
Puces IMA SDK
Je ne décrirai pas toutes les fonctionnalités et la structure du SDK IMA, car dans tous les cas la documentation officielle pourra en dire beaucoup plus à leur sujet .
Quelle est la fonctionnalité principale du SDK IMA? Et pourquoi cela nous convenait-il? Le SDK IMA peut lire des annonces vidéo VAST . Une des possibilités de ce format est la création de wrappers imbriqués pour les publicités, et le nombre de wrappers peut formellement être infini. Autrement dit, pour accéder à la vraie vidéo, vous devez parcourir tous les wrappers de la chaîne.
Le SDK IMA peut exécuter cette chaîne de manière autonome si vous insérez simplement un lien vers le premier fichier VAST à l'aide de la méthode setAdTagUrl (String url) .
val adsRequest = ImaSdkFactory.getInstance().createAdsRequest()
adsRequest.adTagUrl = advUrl
Si vous utilisez cette méthode, la tâche du développeur est grandement simplifiée. Mais parfois (y compris dans notre cas) le développeur de l'application souhaite collecter ses statistiques publicitaires contenues dans les fichiers VAST eux-mêmes. Ces fichiers ne peuvent pas être demandés au serveur publicitaire plus d'une fois, car le serveur publicitaire peut envoyer deux réponses différentes à la même demande (c'est la norme, les annonces doivent changer constamment). Dans ce cas, le développeur doit collecter tous les VAST avec stylos, extraire les données nécessaires à la collecte de statistiques à partir de là et générer un VAST général basé sur eux, qui peut être alimenté au SDK IMA à l'aide de la méthode setAdsResponce (String vast) :
val adsResponce = “<VAST>..</VAST>” //xml, VAST
adsRequest.adsResponse = adsResponce
Une autre fonctionnalité utile du SDK IMA est la possibilité d'utiliser le lecteur interne de l'application pour lire des publicités. Pour ce faire, vous pouvez implémenter l'interface VideoAdPlayer et implémenter ses méthodes dans votre lecteur:
public interface VideoAdPlayer extends AdProgressProvider, VolumeProvider {
void loadAd(AdMediaInfo var1, AdPodInfo var2);
void playAd(AdMediaInfo var1);
void pauseAd(AdMediaInfo var1);
void stopAd(AdMediaInfo var1);
void release();
void addCallback(VideoAdPlayer.VideoAdPlayerCallback var1);
void removeCallback(VideoAdPlayer.VideoAdPlayerCallback var1);
}
Mais même si l'application ne possède pas son propre lecteur vidéo ou qu'elle ne peut pas être utilisée pour une raison quelconque, le SDK IMA fournit son propre lecteur basé sur ExoPlayer :
val adUiContainer: ViewGroup = view
val videoAdPlayer = ImaSdkFactory.createSdkOwnedPlayer(context, adUiContainer)
Limitations du SDK IMA
Malheureusement, l'interface utilisateur du SDK IMA est triste. Soyez prêt à ce que votre lecteur d'annonces ressemble toujours à ceci: il est
impossible de modifier les commandes de l'écran publicitaire à partir du SDK IMA. Vous ne pouvez changer leur langue que:
val imaSdkSettings = ImaSdkFactory.getInstance().createImaSdkSettings()
imaSdkSettings.language = "ru"
Notre situation a été aggravée par le fait que les enfants ivi et ivi existent et sont pris en charge sur une base de code unique. Cela signifie qu'avec l'aide de scripts de construction, au bon moment, à partir d'un code, vous pouvez assembler différentes applications avec leurs propres cloches et sifflets (icônes, lignes, morceaux de code). Cette base de code unifiée pour la lecture de publicités utilise un moteur propriétaire qui est un outil éprouvé pour gagner de l'argent pour l'entreprise. Avec la mise en œuvre du SDK IMA, ce code ne pouvait pas être simplement jeté, car l'application utilise différents formats d'annonces, pas seulement VAST.
L'interface publicitaire ivi est complètement différente de l'interface du SDK IMA et ne peut pas y être adaptée:
Par conséquent, la décision la plus évidente a été de quitter notre moteur de publicité ( NSD ) et d'implémenter simultanément le SDK IMA, de sorte que lorsqu'une publicité contenant des liens vers des serveurs Google arrive, elle utilise IMA, et pour toutes les autres publicités, NSD, qui peut également lire des publicités au format VAST et fonctionne sur toute la chaîne de wrappers, mais ne répond pas aux normes de la politique familiale de Google.
Actuellement, les publicités de Google et les publicités d'autres sources dans l'application ivi sont affichées de différentes manières. Dans l'application ivi kids pour enfants, seules les publicités de Google sont ciblées, de sorte que les vidéos ne sont affichées qu'à l'aide du SDK IMA.
Résultat
Le SDK IMA est un outil simple et pratique pour afficher des publicités vidéo. Si vous êtes prêt pour le fait que l'interface utilisateur du lecteur publicitaire ne dépendra pas de vous, alors le SDK IMA vous convient. Si vous avez besoin de monétiser une application Android pour enfants avec des annonces, le moyen le plus simple consiste à utiliser l'outil natif de Google - IMA SDK.