Implementierung des IMA SDK in Android-Anwendungen

Angenommen, Sie beschließen eines Tages, eine Anwendung für Kinder zu erstellen und damit Geld zu verdienen. Da Werbung eine der einfachsten Möglichkeiten zur Monetarisierung ist, haben Sie eine offensichtliche Idee, der Anwendung eines der Werbe-SDKs hinzuzufügen und dann nur das Einkommen zu berechnen. Dies könnte der Fall sein, wenn sich die App an ein erwachsenes Publikum richtet. Wenn es für Minderjährige vorgesehen ist, sind verschiedene Gesetzgebungsmechanismen enthalten, die App Stores regeln.



Bei der Veröffentlichung der ivi kids App auf Google Play hatten wir das Problem, dass unser internes Werbe-SDK nicht den Anforderungen von Google entsprachund die App wurde möglicherweise aus dem Store entfernt. Aus diesem Grund haben wir alle Anzeigen deaktiviert, was junge Nutzer sehr glücklich machte, aber die Marketingabteilung war chronisch unzufrieden mit der finanziellen Leistung.



Der logischste Ausweg war die Wiedergabe von Anzeigen, die Google selbst über den Google Ad Manager-Dienst verteilt . Und das mit dem IMA SDK, das auch ein Google-Produkt ist.



In diesem Artikel werde ich darüber sprechen, wie wir das IMA SDK in ivi- und ivi- Kinderanwendungen implementiert haben und auf welche Einschränkungen wir gestoßen sind.



Chips IMA SDK



Ich werde nicht alle Funktionen und Strukturen des IMA SDK beschreiben, da die offizielle Dokumentation auf jeden Fall viel mehr darüber aussagen kann .



Was ist das Hauptmerkmal des IMA SDK? Und warum hat es uns gepasst? Das IMA SDK kann VAST- Videoanzeigen abspielen . Eine der Möglichkeiten dieses Formats ist die Erstellung verschachtelter Anzeigen-Wrapper, und die Anzahl der Wrapper kann formal unendlich sein. Das heißt, um zum echten Video zu gelangen, müssen Sie alle Wrapper in der Kette durchlaufen.







Das IMA SDK kann diese Kette selbstständig ausführen, wenn Sie einfach mithilfe der setAdTagUrl- Methode (String url) einen Link zur ersten VAST-Datei einfügen .



val adsRequest = ImaSdkFactory.getInstance().createAdsRequest()
adsRequest.adTagUrl = advUrl


Wenn Sie diese Methode verwenden, wird die Aufgabe des Entwicklers erheblich vereinfacht. Aber manchmal (auch in unserem Fall) möchte der Anwendungsentwickler seine in den VAST-Dateien enthaltenen Werbestatistiken selbst sammeln. Diese Dateien können nicht mehr als einmal vom Ad-Server angefordert werden, da der Ad-Server zwei verschiedene Antworten auf dieselbe Anfrage senden kann (dies ist die Norm, Anzeigen sollten sich ständig ändern). In diesem Fall muss der Entwickler alle VASTs mit Stiften erfassen, die zum Sammeln von Statistiken erforderlichen Daten extrahieren und daraus ein allgemeines VAST generieren, das mit der Methode setAdsResponce (String vast) an das IMA SDK weitergeleitet werden kann :



val adsResponce = “<VAST>..</VAST>” //xml,   VAST
adsRequest.adsResponse = adsResponce


Ein weiteres nützliches Feature des IMA SDK ist die Möglichkeit, den internen Player der Anwendung zum Abspielen von Anzeigen zu verwenden. Dazu können Sie die VideoAdPlayer- Schnittstelle implementieren und ihre Methoden in Ihrem Player implementieren:



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);
}


Aber selbst wenn die Anwendung keinen eigenen Videoplayer hat oder aus irgendeinem Grund nicht verwendet werden kann, bietet das IMA SDK einen eigenen Player, der auf ExoPlayer basiert :



val adUiContainer: ViewGroup = view
val videoAdPlayer =  ImaSdkFactory.createSdkOwnedPlayer(context, adUiContainer)


IMA SDK-Einschränkungen



Leider ist die Benutzeroberfläche des IMA SDK traurig. Seien Sie darauf vorbereitet, dass Ihr Ad Player immer so aussieht: Es ist







unmöglich, Steuerelemente auf dem Anzeigenbildschirm über das IMA SDK zu ändern. Sie können nur ihre Sprache ändern:



val imaSdkSettings = ImaSdkFactory.getInstance().createImaSdkSettings()
imaSdkSettings.language = "ru"








Unsere Situation wurde durch die Tatsache verschärft, dass ivi und ivi kids existieren und auf einer einzigen Codebasis unterstützt werden. Dies bedeutet, dass Sie mithilfe von Skripten im richtigen Moment aus einem Code verschiedene Anwendungen mit ihren eigenen Schnickschnack (Symbole, Linien, Codeteile) zusammenstellen können. Diese einheitliche Codebasis für die Wiedergabe von Anzeigen verwendet eine proprietäre Engine, die ein bewährtes Tool ist, um Geld für das Unternehmen zu verdienen. Mit der Implementierung des IMA SDK konnte dieser Code nicht einfach weggeworfen werden, da die Anwendung verschiedene Anzeigenformate verwendet, nicht nur VAST.



Die ivi- Anzeigenoberfläche unterscheidet sich grundlegend von der IMA SDK-Oberfläche und kann nicht daran angepasst werden:







Daher sah die naheliegendste Entscheidung wie die Entscheidung aus, unsere Werbe-Engine ( NSD ) zu verlassen und gleichzeitig das IMA-SDK zu implementieren. Wenn eine Anzeige mit Links zu Google-Servern eintrifft, wird IMA und für alle anderen Werbemaßnahmen - NSD - verwendet, die auch Anzeigen im Format abspielen können VAST und durchlaufen die gesamte Kette von Wrappern, erfüllen jedoch nicht die Standards der Google-Familienrichtlinien.





Derzeit werden Anzeigen von Google und Anzeigen aus anderen Quellen in der ivi- Anwendung auf unterschiedliche Weise angezeigt. In der ivi kids App für Kinder werden nur Anzeigen von Google geschaltet, sodass Videos nur mit dem IMA SDK angezeigt werden.



Ergebnis



Das IMA SDK ist ein einfaches und praktisches Tool zum Anzeigen von Videoanzeigen. Wenn Sie bereit sind, dass die Benutzeroberfläche des Advertising Players nicht von Ihnen abhängt, ist das IMA SDK für Sie in Ordnung. Wenn Sie eine Android-App für Kinder mit Anzeigen monetarisieren müssen, verwenden Sie am einfachsten das native Tool von Google - IMA SDK.






All Articles