Einbau des Google Mobile Ads SDK: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Markierung: Manuelle Zurücksetzung
 
(47 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Diese Dokumentation dient dazu den Einbau des Google Mobile Ads SDK (GMA SDK) und die Werbeintegration der iq digital zu erklären. Sie geht dabei auf notwendige und wichtige Eigenheiten ein und versucht übliche Missverständnisse aufzuklären.
Die Dokumentation beginnt dabei mit dem GMA SDK und allgemeinen Informationen, welche für alle Werbeformen gelten, die in der App laufen sollen. Darauf folgen Werbeform spezifische Erklärungen und zum Abschluss werden werbeform spezifische Events erklärt, welche die App berücksichtigen muss.
==Offizielle Dokumentation zum Google Mobile Ads SDK==
==Offizielle Dokumentation zum Google Mobile Ads SDK==
Das Google Mobile Ads SDK (GMA SDK) bringt alles mit, was für eine Werbeausspielung in nativen Apps benötigt wird.
Das Google Mobile Ads SDK (GMA SDK) bringt alles mit, was für eine Werbeausspielung in nativen Apps benötigt wird.
Zeile 5: Zeile 9:
[https://developers.google.com/ad-manager/mobile-ads-sdk/ios/quick-start GMA SDK iOS Getting Started]
[https://developers.google.com/ad-manager/mobile-ads-sdk/ios/quick-start GMA SDK iOS Getting Started]


[https://developers.google.com/ad-manager/mobile-ads-sdk/android/quick-start GMA SDK iOS Getting Started]
[https://developers.google.com/ad-manager/mobile-ads-sdk/android/quick-start GMA SDK Android Getting Started]


===Download des Google Mobile Ads SDK===
===Download des Google Mobile Ads SDK===
Zeile 22: Zeile 26:
Am Beispiel einer Banner-Werbeausspielung wird hier kurz der Lebens-Zyklus einer Werbeausspielung erklärt.
Am Beispiel einer Banner-Werbeausspielung wird hier kurz der Lebens-Zyklus einer Werbeausspielung erklärt.


[[Datei:GMA_SDK.png|800px]]
[[Datei:GMA_SDK.png|800px|thumbnail|Übersicht Workflow der Werbeausspielung mit GMA SDK]]


===Request===
===Request===
Zeile 31: Zeile 35:
;Keywords (optional):Keywords sind Key-Value Paare und können eine Werbeplatzierung um weitere Informationen anreichern, die für eine gezielte Werbeausspielung notwendig sind. Die Werbeplatzierungen der iq digital enthalten alle eine bestimmte Bezeichnung, welche über die Keywords dem Adserver mitgegeben wird. Beispiel: kw=iqadtile1,digtransfrom&tile=1&doc=homepage
;Keywords (optional):Keywords sind Key-Value Paare und können eine Werbeplatzierung um weitere Informationen anreichern, die für eine gezielte Werbeausspielung notwendig sind. Die Werbeplatzierungen der iq digital enthalten alle eine bestimmte Bezeichnung, welche über die Keywords dem Adserver mitgegeben wird. Beispiel: kw=iqadtile1,digtransfrom&tile=1&doc=homepage


===Adserver===
===Adserver Google Admanager 360===
Wenn der Adserver gültigen Consent besitzt, prüft ein Verteilungsalgorithmus, ob eine oder mehrere Werbebuchungen für die Adunit, Creative sizes und Keywords vorliegen. Ist dies der Fall wählt der Adserver die beste dafür aus. Sind mehrere Buchungen gleich wichtig, wählt er zufällig eine davon aus. Nur im Falle keiner Buchung würde er eine '''no ad''' oder '''no fill''' Meldung ausgeben, die besagt, dass für die Kombination aus adunit, creative size und Keywords keine Buchung existiert.
Wenn der Adserver gültigen Consent besitzt, prüft ein Verteilungsalgorithmus, ob eine oder mehrere Werbebuchungen für die Adunit, Creative sizes und Keywords vorliegen. Ist dies der Fall wählt der Adserver die beste dafür aus. Sind mehrere Buchungen gleich wichtig, wählt er zufällig eine davon aus. Nur im Falle keiner Buchung würde er eine '''no ad''' oder '''no fill''' Meldung ausgeben, die besagt, dass für die Kombination aus adunit, creative size und Keywords keine Buchung existiert.


Zeile 51: Zeile 55:
====Begriffserklärung====
====Begriffserklärung====
;netzwerkId:Hier ist immer die Netzwerk ID der iq digital einzugeben: 183
;netzwerkId:Hier ist immer die Netzwerk ID der iq digital einzugeben: 183
;level1:Dies ist die Bezeichnung der App im Google Ad Manager und wird von der iq digital vorgegeben. Die Bezwichnung besteht aus <appname>_app_<plattform>_<gerätetyp>.
;level1:Dies ist die Bezeichnung der App im Google Ad Manager und wird von der iq digital vorgegeben. Die Bezeichnung besteht aus <appname>_app_<plattform>_<gerätetyp>.
:;appname:Der Name der App
:;appname:Der Name der App
:;plattform:Das Betriebsystem, also ''ios'' oder ''android''
:;plattform:Das Betriebsystem, also ''ios'' oder ''android''
:;gerätetyp:Der Gerätetyp, also '''phone''' oder ''tablet''
:;gerätetyp:Der Gerätetyp, also '''phone''' oder ''tablet''
;level2:Dies ist die Bezeichnung einer Rubrik der App, z.B. ''politik''
;level2:Dies ist die Bezeichnung einer Rubrik der App oder der Startseite, z.B. ''politik'', ''openingpage''
;level3 (usw.):Dies ist die Bezeichnung für eine Unterrubrik, z.B. im Falle von ''politik'' als level2 wäre ''ausland'' eine Unterrubrik für level3. Level4 und höher sind weitere tiefere Verzweigungen der App, diese werden im Normalfall nicht also Adunits angelegt und solche Seiten würden unter dem level3 angelegt werden.
;level3 (usw.):Dies ist die Bezeichnung für eine Unterrubrik, z.B. im Falle von ''politik'' als level2 wäre ''ausland'' eine Unterrubrik für level3. Level4 und höher sind weitere tiefere Verzweigungen der App, diese werden im Normalfall nicht als Adunits angelegt. Solche Seiten würden dann über das übergeordnete level3 vermarktet werden. Beispiel: Eine Seite ''politik/ausland/usa'' ist zu speziell, um sie einzeln zu vermarkte. In so einem Fall ist es sinnvoll, dass sie nur bis level3, also als ''politik/ausland'', vertaggt wird.
;seitentyp:In Apps mit Banner-Anzeigen (z.B. News Apps) bezeichnet ''seitentyp'' die unterschiedlichen Seitentypen, also ob es sich z.B. um eine Übersichts-, Artikel- oder Bildergalerieseite handelt. Übliche Werte dafür sind ''homepage'', ''index'', ''artikel'', ''bildgal''. In Apps mit Fullscreen-Anzeigen (z.B. epaper oder Zeitungs Apps) werden mit ''seitentyp'' die unterschiedlichen Anzeigeplätze innerhalb der Rubrik gemeint, also ob es sich z.B. erste, zweite oder dritte Swipe Anzeige handelt. Übliche Werte sind ''openingpage'', ''swipe_1'', ''swipe_2'', ''swipe_3'' usw.
;seitentyp:In Apps mit Banner-Anzeigen (z.B. News Apps) bezeichnet ''seitentyp'' die unterschiedlichen Seitentypen, also ob es sich z.B. um eine Übersichts-, Artikel- oder Bildergalerieseite handelt. Übliche Werte dafür sind ''homepage'', ''index'', ''artikel'', ''bildgal''. In Apps mit Fullscreen-Anzeigen (z.B. epaper oder Zeitungs Apps) werden mit ''seitentyp'' die unterschiedlichen Anzeigeplätze innerhalb der Rubrik gemeint, also ob es sich z.B. erste, zweite oder dritte Swipe Anzeige handelt. Übliche Werte sind ''swipe_1'', ''swipe_2'', ''swipe_3'' usw.


====Beispiel für die fiktive Rheinischer Kurier News App mit Banner-Anzeigen:====
====Beispiel für die fiktive Rheinischer Kurier News App mit Banner-Anzeigen:====
Zeile 72: Zeile 76:
*/183/Rheinischer_Kurier_epaper_app_ios_tablet
*/183/Rheinischer_Kurier_epaper_app_ios_tablet
*/183/Rheinischer_Kurier_epaper_app_ios_tablet/preloading_ad
*/183/Rheinischer_Kurier_epaper_app_ios_tablet/preloading_ad
*/183/Rheinischer_Kurier_epaper_app_ios_tablet/openingpage
*/183/Rheinischer_Kurier_epaper_app_ios_tablet/openingpage/swipe_1
*/183/Rheinischer_Kurier_epaper_app_ios_tablet/politik/swipe_1
*/183/Rheinischer_Kurier_epaper_app_ios_tablet/politik/swipe_1
*/183/Rheinischer_Kurier_epaper_app_ios_tablet/politik/swipe_2
*/183/Rheinischer_Kurier_epaper_app_ios_tablet/politik/swipe_2
Zeile 82: Zeile 86:


===Creative Sizes===
===Creative Sizes===
Im Google Ad Manager stehen die creative sizes für die Werbemittel-Größen. Dabei ist es möglich dass die tatsächlich ausgespielte Größe eines Werbemittels von der creative size abweicht. Die App muss für ein Adrequest der entsprechenden Platzierung alle zugehörigen Creative Sizes abfragen. Die lange Liste bei der Platzierung "Oben" ergibt sich aus den creative sizes für Direkt- und Programmatische Vermarktung. Diese Platzierung ist ein Beispiel für Banner-Platzierungen und dort wird nie nach Portrait und Landscape in den creative sizes unterschieden.
Im Google Ad Manager stehen die Creative Sizes für die Werbemittel-Größen. Dabei ist es möglich dass die tatsächlich ausgespielte Größe eines Werbemittels von der CreativeSize abweicht (in so einem Fall wird von Pseudogröße gesprochen). Die App muss für ein Adrequest der entsprechenden Platzierung alle zugehörigen Creative Sizes abfragen. Die oft lange Liste aus Größen ergibt sich aus den vielen möglichen unterschiedlichen Werbeformen und den Unterschieden in direkter und programmatischer Vermarktung.
Bei der Platzierung "Richmedia" ergibt sich die Liste für 7Zoll Tablets und 10 Zoll Tablets und dort jeweils für Portrait und Landscape. Diese Platzierung ist ein Beispiel für ein Fullscreen Ad und hier wird in den creative sizes zwischen Portrait und Landscape Modus unterschieden. Unterstützt eine App nur Portrait-Modus, reicht es aus, dass sie nur die Portrait creative-sizes benutzt. Tablets mit einer Auflösung kleiner als 750x1024 müssen die 7Zoll Tablet creative-sizes benutzen, da das Google SDK es nicht erlaubt Anzeigen mit einer creative-size größer als die Geräte Auflösung abzurufen.
 
Zur Info: In beiden Beispielen gilt, dass wir die Größen nur als Pseudogrößen benutzen und skalieren die deutlich größeren Anzeigen für eine optimale Darstellung.
Bei Fullscreen Ad und Preloading Ad Platzierungen werden meist Größen für Portrait- und Landscape-Modus gemeinsam abgefragt.
Eine vollständige Übersetzungstabelle der Smart FormatIds zu GPT creative sizes befindet sich in der Tabelle Adslot_Ids_Uebersetzung_Smart_nach_GPT.xslx


====Beispiele für Creative Sizes einer Banner Platzierung:====
====Beispiele für Creative Sizes einer Banner Platzierung:====
320x1, 320x50, 320x53, 320x80, 320x160, 320x320, 300x50, 300x75, 300x100, 300x150, 300x250
99x1, 320x1, 320x50, 320x53, 320x80, 320x160, 320x320, 300x50, 300x75, 300x100, 300x150, 300x250
(In diesem Beispiel sind 99x1 und 320x1 Pseudogrößen. 99x1 ruft eine Ausbuchung vom Adserver, die die Werbeplatzierung ausblenden lässt. 320x1 ist eine historische Pseudogröße, welche in seltenen Fällen für von der Norm abweichende Werbemittel auf der Platzierung iqadtile1 verwendet wird. Jede Banner-Platzierung hat eine vergleichbare Pseudogröße der Form 320xY mit Y als Platzierungsbezeichnung, z.B. 320x1, 320x3, 320x4, 320x8 etc.


====Beispiele für Creative Sizes einer Fullscreen Platzierung auf einem Android Tablet:====
====Beispiele für Creative Sizes einer Fullscreen Platzierung auf einem Android Tablet:====
Zeile 112: Zeile 116:
;doc:Die Bezeichnung des Seitentyps. Gültige Werte sind homepage, index, artikel, bildgal
;doc:Die Bezeichnung des Seitentyps. Gültige Werte sind homepage, index, artikel, bildgal
;iqadtype:Die Angabe der Plattform. Gültige Werte sind online, mew, app, amp
;iqadtype:Die Angabe der Plattform. Gültige Werte sind online, mew, app, amp
;appver:Die Bezeichnung der Appversions-Nummer (s.u.)
;appver:Die Bezeichnung der Appversions-Nummer. Beispiel: Version 4.01 sollte dann appver=4_01 sein. Es sollte eine sinnvolle Bezeichnung sein, damit im Problemfall eine bestimmte Appversion von der Vermarktung ausgeschlossen werden kann.


Angaben welche Keywords für welche Platzierung verwendet werden sollen, finden sich in der creative_sizes_and_keywords.xlsc Tabelle, die von der iq digital zu Projektstart zur Verfügung gestellt wird.
Angaben welche Keywords für welche Platzierung verwendet werden sollen, finden sich in der creative_sizes_and_keywords.xlsc Tabelle, die von der iq digital zu Projektstart zur Verfügung gestellt wird.
Zeile 119: Zeile 123:
*https://developers.google.com/ad-manager/mobile-ads-sdk/ios/targeting#custom_targeting
*https://developers.google.com/ad-manager/mobile-ads-sdk/ios/targeting#custom_targeting
*https://developers.google.com/ad-manager/mobile-ads-sdk/android/targeting#custom_targeting
*https://developers.google.com/ad-manager/mobile-ads-sdk/android/targeting#custom_targeting
===Content-Url Parameter im Adrequest===
Damit programmatische Partner (z.B. Adexchange, Headerbidding oder Backfill) möglichst hoch um eine Werbeplatzierung bieten, muss dieser App-Werbeplatzierung mitgeteilt werden, zu welcher stationären Webseite sie tatsächlich gehört. Dies geschieht über den content-url Parameter im Adrequest. Hier ist als Wert die URL der Webseite zu übergeben, die möglichst genau zu dem Inhalt in der App passt. Beispiel: Ein App-Artikel sollte im content-url Parameter auf seinen stationären Webartikel verlinken, eine App Startseite auf die Homepage usw.
Das GMA SDK besitzt dazu eine setContentUrl-Funktion.
Dies wird hier genauer beschrieben:
*https://developers.google.com/ad-manager/mobile-ads-sdk/ios/targeting?hl=de#content_url
*https://developers.google.com/ad-manager/mobile-ads-sdk/android/targeting?hl=de#content_url


===Debugging===
===Debugging===
Es muss eine "Easter-Egg"-Funktion eingebaut in die App eingebaut werden, damit die iq digital Probleme und neue Werbeformen innerhalb der Live App (Version aus dem App- bzw. Playstore) testen kann. Der Adserver DFP bietet die Möglichkeiten Testschaltungen über ein Keyword in der App auszuspielen.  
[[Datei:Easteregg dialog.png|300px|thumbnail|Beispiel aus einer Android App mit Textfeld für Keywords und Checkbox für USB Debugging]]
Es muss eine "Easter-Egg"-Funktion in die App eingebaut werden, damit die iq digital Probleme und neue Werbeformen innerhalb der Live App (Version aus dem App- bzw. Playstore) testen kann. Der Adserver DFP bietet die Möglichkeiten Testschaltungen über ein Keyword in der App auszuspielen.  
 
In einem selten frequentierten Bereich der App, wie z.B. dem Impressum, sollte es daher die Möglichkeit für Eingeweihte geben, einen kleinen Dialog aufzurufen. Durch diesen kann man ein selbst gewähltes Keyword jedem zukünftigen Adrequest anhängen. Gleichzeitig oder durch das Aktivierung einer Checkbox kann der USB-Debug-Modus, um die Werbe Webviews in der Android App auf dem Desktop Chrome zu inspizieren, aktiviert werden.  
In einem selten frequentierten Bereich der App, wie z.B. dem Impressum, sollte es daher die Möglichkeit für Eingeweihte geben, einen kleinen Dialog aufzurufen. Durch diesen kann man ein selbst gewähltes Keyword jedem zukünftigen Adrequest anhängen. Gleichzeitig oder durch das Aktivierung einer Checkbox kann der USB-Debug-Modus, um die Werbe Webviews in der Android App auf dem Desktop Chrome zu inspizieren, aktiviert werden.  
<pre>
<pre>
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { //frühere Versionen haben dies noch nicht unterstützt, evtl. kann darauf verzichtet werden
WebView.setWebContentsDebuggingEnabled(true);
    WebView.setWebContentsDebuggingEnabled(true);
}
</pre>
</pre>
Danach kann man unter Android die Webviews der App im Desktop Chrome mit chrome://inspect einsehen.  
Danach kann man unter Android die Webviews der App im Desktop Chrome mit chrome://inspect einsehen.  
Zeile 139: Zeile 150:


Es gibt vielfältige Optionen, wie das Easter-Egg aktiviert werden kann. Mehrfache/unsinnige Taps auf UI-Elemente oder eine ganz spezielle Eingabe ins Suchfeld seien hier beispielhaft genannt. Die iq digital erlaubt sich aber die Vorgabe, dass unter Android und iOS das  Debug-Easter-Egg identisch aktiviert wird. Bei der Art der Aktivierung des Debug-Easter-Egg stehen wir gerne beratend zur Seite.
Es gibt vielfältige Optionen, wie das Easter-Egg aktiviert werden kann. Mehrfache/unsinnige Taps auf UI-Elemente oder eine ganz spezielle Eingabe ins Suchfeld seien hier beispielhaft genannt. Die iq digital erlaubt sich aber die Vorgabe, dass unter Android und iOS das  Debug-Easter-Egg identisch aktiviert wird. Bei der Art der Aktivierung des Debug-Easter-Egg stehen wir gerne beratend zur Seite.
===App-Versions-Targeting===
Es soll die Möglichkeit geben, dass wir ältere App-Versionen, die noch im Spiel sind, aber einen in Hinblick auf die Werbung relevanten Bug aufweisen, von der Werbeausspielung ausschließen können.
Die addCustomTargeting Methode (siehe oben Punkt "Anhängen von Key-Value-Paaren"), müsste dazu benutzt werden. Nur würde hier nicht als Key "kw" sondern "appver" benutzt werden.
Damit das Ganze auch praktikabel ist, bedarf es hier ein bisschen Fingerspitzengefühl, was das Value angeht.
Das Problem ist, dass wir diese Werte lediglich als Zeichenketten im AdServer sehen und daraufhin operieren können. Wir können zwei Strings lediglich abgleichen.
Was leider nicht geht, ist eine Bedingung wie "Wenn die Appversion kleiner oder gleich 3, dann dort keine Werbe-Ausspielung".
Es darf also nicht inflationär viele verschiedene Versionsnummern gleichzeitig in der Gesamtheit der Nutzer geben.
Sinnvoll wäre also eine Major-Versionsnummer und ein oder zwei "Nachkommastellen", getrennt mit einem Unterstrich. Also z.B. "1_12". Gewünscht ist nicht eine extra Versionsnummer nur für die Werbung, sondern ein sinnvoller Substring der internen Versionierung.
Entscheidend ist aber, dass dieser Wert zumindest dann inkrementiert wird, wenn sich irgendwie Auswirkungen auf die Werbeintegration ergeben könnten.
Mit Fingerspitzengefühl meine ich konkret, dass man sich die Frage stellt...
• Wird das Google Ads SDK in einer neuen Version benutzt? -> immer inkrementieren
• Wurde etwas an den Aufrufen der Methoden des Google Ads SDK verändert, z.B. Timings? -> immer inkrementieren
• Wurde etwas an der Swipe-View-Struktur verändert? -> besser inkrementieren
• Wurde etwas am Layout verändert? -> vielleicht inkrementieren
Bei den beiden erst genannten Punkten gehen wir davon aus, dass das nicht ohne Rücksprache mit uns erfolgt.


===Wichtige Hinweise zu dieser Anleitung===
===Wichtige Hinweise zu dieser Anleitung===
Die Zonen (Adunits) für die Werbeplatzierungen werden von uns erst zu Projektstart erstellt und mit Testwerbung belegt. Anschließend werden die Adunits an den Mandanten übermittelt.
Die Adunits für die Werbeplatzierungen werden von uns erst zu Projektstart erstellt und mit Testwerbung belegt. Anschließend werden die Adunits an den Mandanten übermittelt.
Bitte nicht mit der im SDK fest eingebauten Logik für Test-Werbemittel arbeiten:
Bitte nicht mit der im SDK fest eingebauten Logik für Test-Werbemittel arbeiten. Diese entspricht nicht der Art und Weise wie die von der iq digital vermarktete Werbung funktioniert und führt zu Missverständnissen.
request.testDevices = @[ kGADSimulatorID ]; (iOS)
Stattdessen sind auf den Adunits permanent Buchungen mit Test-Werbemitteln aktiv welche über ein spezielles Test-Keyword im Adrequest vom Adserver ausgeliefert werden.
oder
addTestDevice(String);  (Android)
Stattdessen sind auf den Zonen Buchungen mit Test-Werbemitteln aktiv. Die werden zum Launch einfach gestoppt. Die Zonen selbst ändern sich zum Live-Betrieb nicht.
 
 
 
 


===Ansprechpartner iq digital===
===Ansprechpartner iq digital===
Die iq digital steht für Fragen und Kommentare gerne zur Verfügung. Sollten wir einmal nicht weiterhelfen können, ist es uns möglich einen Entwickler von Google als Ansprechpartner in die Diskussion mit einzubeziehen.
Die iq digital steht für Fragen und Kommentare gerne zur Verfügung. Sollten wir einmal nicht weiterhelfen können, ist es uns möglich einen Entwickler von Google als Ansprechpartner in die Diskussion mit einzubeziehen.
Tim Lohmann (Mobile Developer)
Telefon  +49 211 887 2336
E-Mail    tim.lohmann@iqdigital.de


====Tim Lohmann (Mobile Developer Ad Technology)====
;Telefon:+49 211 887 2336
;E-Mail:tim.lohmann@iqdigital.de


===Wichtige Dokumente===
===Wichtige Dokumente===
Zeile 210: Zeile 197:
*im Falle einer Buchung:  
*im Falle einer Buchung:  
**erzeugt das Interstitial mit Hilfe des GMA SDKs
**erzeugt das Interstitial mit Hilfe des GMA SDKs
**vergößert den Werbecontainers auf Display-Größe
**vergrößert den Werbecontainers auf Display-Größe
*bei Orientationchange- oder Resize-Event: passt die Werbeseite und den Werbecontainer an die neuen Display-Maße an
*bei Orientationchange- oder Resize-Event: passt die Werbeseite und den Werbecontainer an die neuen Display-Maße an
*bereitet im Hintergrund weiter den Content vor
*bereitet im Hintergrund weiter den Content vor
Zeile 295: Zeile 282:
*erstellt den Werbecontainer mit Größe, welche in der Antwort vom Andserver auf das Adrequest mitgeliefert wird
*erstellt den Werbecontainer mit Größe, welche in der Antwort vom Andserver auf das Adrequest mitgeliefert wird
*lauscht mit dem EventListener auf mögliche setsize- oder noad-Events und verändert den Werbecontainer entsprechend.
*lauscht mit dem EventListener auf mögliche setsize- oder noad-Events und verändert den Werbecontainer entsprechend.
*im Falle einer Ausbuchung: empfängt sie ein noad-Event, muss sie die Werbeplatzierung und die zugehörige Anzeigenkennzeichnung komplett entfernen bzw. ausblenden
*im Falle einer Ausbuchung:
**empfängt sie ein setsize-Event muss sie die Werbeplatzierung und den Werbecontainer an die neue Größe anpassen, sofern sich diese von der aktuellen Größe unterscheidet
**empfängt sie ein noad-Event, muss sie die Werbeplatzierung und die zugehörige Anzeigenkennzeichnung komplett entfernen bzw. ausblenden
|workflowad=
|workflowad=
#App sendet Adrequest an Adserver
#App sendet Adrequest an Adserver
#Adserver antwortet mit Werbebuchung
#Adserver antwortet mit Werbebuchung
#App erzeugt dynamisch die Werbeseite
#App erzeugt Werbecontainer mit der Größe, die in der Response des Adservers enthalten ist
#Werbecontainer wird auf die Display-Abmaße aufgezogen
#eventuell muss der Werbecontainer auf Grund eines setsize-Events angepasst werden
#Werbetemplate skaliert Werbemittel in dem Container
|workflownoad=
|workflownoad=
#App sendet Adrequest an Adserver
#App sendet Adrequest an Adserver
#Adserver antwortet, dass er keine Werbebuchung hat
#Adserver antwortet mit Ausbuchung als Werbebuchung
#App erzeugt '''keine''' Werbeseite bzw. entfernt eine zuvor erzeugte Werbeseite aus dem Seitenfluss
#App empfängt eine Response mit der Größe 99x1 und erhält kurze Zeit später ein noad-Event
#App blendet Werbeplatzierung und Anzeigenkennzeichnung bis zum nächsten Pagerequest aus
|creativesizes=
|creativesizes=
320x50, 320x53, 320x80, 320x106, 320x160, 320x320, 320x416, 320x460, 300x50, 300x75, 300x100, 300x150, 300x200, 300x250, 300x600
320x50, 320x53, 320x80, 320x106, 320x160, 320x320, 320x416, 320x460, 300x50, 300x75, 300x100, 300x150, 300x200, 300x250, 300x600
Zeile 318: Zeile 307:
}}
}}


===Beschreibung===
==Dokumentation der iq digital App Events==
Die Werbeplatzierungen sind Banner-Platzierungen innerhalb der Content-Seite, die üblicherweise 320px Breite und eine bestimmte Höhe einnehmen. Sollte keine Werbung gebucht sein, wird die Platzierung ausgeblendet, es sollte kein Weißraum entstehen.
Die Werbetemplates der iq digital senden in bestimmten Situationen Events an die App. Die App muss auf diese Events reagieren und gemäß der folgenden Spezifikation den Werbecontainer verändern. Die App Events bestehen dabei immer aus dem Namen und einem "data"-String.
Die  Adrequests für diese Platzierungen sollten initial beim Pagerequest erfolgen. Bei sehr langen Seiten, ist es auch möglich weiter unten liegende Banner Platzierungen erst zu laden, wenn der untere Content generiert wird. Jedoch sollte dabei immer berücksichtigt werden, dass das Ad genug Zeit hat, rechtzeitig angezeigt zu werden.
Für Banner-Platzierungen benutzen wir Pseudo-größen (z.B. 310x1, 310x4, 310x8 usw.). Damit das Banner in der korrekten Größe dargestellt wird, rufen die iq digital Templates ein bestimmtes Event auf. Dazu stellt die iq digital ein EventHandler-Klasse für Android zur Verfügung, die in die App integriert werden muss. Für iOS muss diese Klasse von den Appentwicklern portiert werden. Die EventHandler-Klasse benutzt eine spezielle Syntax für ein resize-Event. Die App muss bei Erhalt des Events dann entsprechend der Logik die Größe des Ad entsprechend ändern.
Die App Events, die von der EventHandler-Klasse behandelt werden müssen, sind im Anhang A dokumentiert. Für Android gibt es mit der PublisherAdAppEventListener.java eine Vorlage, die nur noch um appspezifischen Code erweitert werden muss.


==Dokumentation der iq digital App Events==
===Wichtige Links in der GMA SDK Dokumentation===
Die App Events bestehen aus dem Namen und einem "data"-String
*[https://developers.google.com/ad-manager/mobile-ads-sdk/ios/banner#app_events GMA SDK iOS App Events]
*[https://developers.google.com/ad-manager/mobile-ads-sdk/android/banner#app_events GMA SDK Android App Events]


===setsize – Event===
===setsize – Event===
Zeile 335: Zeile 322:
;width:Die neue Breite des Adviews in Pixel  (Device-Independent-Pixel) als ganze Zahl.
;width:Die neue Breite des Adviews in Pixel  (Device-Independent-Pixel) als ganze Zahl.
;height:Die neue Höhe des Adviews in Pixel  (Device-Independent-Pixel) als ganze Zahl.
;height:Die neue Höhe des Adviews in Pixel  (Device-Independent-Pixel) als ganze Zahl.
{{Warnung|text=Ausnahme: Für eine Anpassung auf die maximal verfügbare Breite oder Höhe wird der Wert '''max''' verwendet.}}
{{Warnung|text=Ausnahme: Für eine Anpassung auf die maximal verfügbare Breite oder Höhe wird der Wert '''max''' verwendet. Mit maximaler verfügbare Breite bzw. Höhe ist im Normalfall die Displaybreite bzw. -Höhe gemeint. Sollte eine App hier zwingende Abweichungen haben, wie einen notwendigen Rand, muss dies unbedingt '''frühzeitig mit iq digital''' besprochen werden.}}
 


Beispielaufrufe:
Beispielaufrufe:
Zeile 346: Zeile 334:
Das noad-Event wird von den Werbetemplates der iq digital aufgerufen, um der App zu signalisieren, dass für die Platzierung keine Buchung vorliegt und die App die Werbeplatzierung '''und die zugehörige Anzeigenkennzeichnung''' entfernen soll.
Das noad-Event wird von den Werbetemplates der iq digital aufgerufen, um der App zu signalisieren, dass für die Platzierung keine Buchung vorliegt und die App die Werbeplatzierung '''und die zugehörige Anzeigenkennzeichnung''' entfernen soll.


Der "data"-String hat für dieses Event keine Bedeutung und kann ignoriert werden.
Der "data"-String hat für dieses Event keine Bedeutung und kann ignoriert werden. Da das AppEventListener Interface von Google eine @NonNull Annotation für data hat, wird beim noad-Event einfach der Wert "noad" für data übergeben, da der leere String von Google als null umgewandelt wird.
 


[[Kategorie:Ad Technology]][[Kategorie:APP]]
[[Kategorie:Ad Technology]][[Kategorie:APP]]
[[en:Integration of the Google Mobile Ads SDK]]
[[en:Integration of the Google Mobile Ads SDK]]