Android – AdMob Activity erstellen
Mit dem Tutorial erstellt ihr spielend leicht eine AdMob Activity für eure Android App. Mein aktuelles Projekt soll eine gratis Spiele-App werden, jedoch darauf optimiert auch ein paar Einnahmen durch Werbung zu erzielen. Dabei ist die Standard Herangehensweise das AdMob Service von Google – die mobile Variante von AdSense.
Android – AdMob Activity erstellen
Im folgenden erstelle ich eine einfache Activity in der AdMob integriert ist. Das ist nur ein Basistutorial um zu zeigen wie man das Service nutzt. Für eure eigene App könnt ihr dieses an geeigneter Stelle einbauen und bei kluger Positionierung Einnahmen generieren. Hoffentlich nicht zum Ärger eurer Nutzer!
Ich gehe in diesem Tutorial davon aus, dass ihr bereits eine einfache Activity erstellt habt. Falls nicht erstellt eine neue App (Empty Project) und führt das Projekt aus. Ihr solltet am Endgerät eine Ausgabe wie die Hello World Seite des Empty Projekts sehen.
AdMob Activity
Um AdMob effektiv nutzen zu können benötigen wir zwei Dinge:
- AdMob Account
- Firebase Console Account
Für meine App habe ich mir zuerst mit dem bestehenden Google Account bei AdMob angemeldet (dabei wird ein AdMob Account erstellt und gegebenenfalls gleich mit dem AdSense Account verknüpft). Bei AdMob erstellt man für die App ein neues Projekt. Danach kann man in der Firebase Console ebenfalls einen neuen Account erstellen der sich mit dem AdMob Projekt verlinken. Hat man das alles erledigt sind die Rahmenbedingungen erfüllt. Es geht weiter im AndroidStudio.
Konfiguration
Im app/ Verzeichnis erstellen wir im ersten Schritt eine neue Datei google-services.json. Den Inhalt für diese Datei beziehen wir aus Firebase Console. Unter Projekteinstellungen findet sich dazu ein Download Button:
Wir ersetzen damit die google-services.json Datei oder kopieren den kompletten inhalt dort hinein.
Achtung: dabei handelt es sich bereits eine Live Datei. Alle geklickten Ads werden dort bereits gezählt. Google bestraft Konten die auf eigene Werbung klicken. Damit das eigene Account nicht gelöscht oder gesperrt wird sollte man dringend davon abraten auf die Werbung zu klicken.
build.gradle
Im zweiten Schritt müssen wir das AdMob Service für unsere App verfügbar machen. Zu diesem Zweck müssen wir beide build.gradle Dateien des Projekts bearbeiten. Man muss darauf achten, dass man die Änderung in der korrekten Datei durchführt!
Wir fügen der Datei build.gradle (PROJEKTNAME/build.grade) folgende Zeile unter den dependencies hinzu classpath ‚com.google.gms:google-services:3.0.0‘. Bei mir sieht der relevante Teil der Datei so aus:
dependencies { classpath 'com.android.tools.build:gradle:2.1.2' classpath 'com.google.gms:google-services:3.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }
Auf App Level (PROJEKTNAME/app/build.gradle) fügen wir der build.gradle folgende Zeile bei den dependencies hinzu compile ‚com.google.firebase:firebase-ads:9.4.0‘, der relevante Bereich der Datei sieht so aus:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.google.firebase:firebase-ads:9.4.0' } apply plugin: 'com.google.gms.google-services'
am Ende der Datei wird apply plugin: ‚com.google.gms.google-services‘ hinzugefügt.
Wir können die App nun kompilieren bekommen wir bei der Ausführung aber folgende Fehlermeldung:
Error:Execution failed for task ‚:app:processDebugGoogleServices‘.
> No matching client found for package name ‚com.example.PROJEKTNAME‘
Wir benötigen für unsere App noch eine Werbeanzeige, eine Ad Unit Id.
Werbung erstellen
Eine Werbung wird in unserer App durch eine eindeutige Id definiert. Diese ad unit id findet man unter der in AdMob erstellten Werbeanzeige. Eine solche Id hat folgende Form:
ca-app-pub-XXXXXXXXXXXXXXXX/NNNNNNNNNN
Wir können für die App beliebig viele Anzeigen erstellen. Die Ids für die Werbeanzeigen speichern wir in derPROJEKTNAME/app/src/main/res/values/strings.xml Datei unserer Android App ab. In meinem Fall habe ich folgende Zeile eingefügt:
<string name="banner_ad_unit_id">ca-app-pub-XXXXXXXXXXXXXXXX/NNNNNNNNNN</string>
Werbung platzieren
Uns fehlt nun noch ein Container im Design in dem die Werbung angezeigt werden soll. Dafür bearbeiten wir die Layout xml Datei, bei einem Empty Projekt mit MainActivity wäre das die Datei main_activity.xml. Wir fügen dort einen Ad View Container ein, in meinem Fall sieht das Layout File so aus:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:ads="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="at.ziegelwanger_edv.worldsoccermanager.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!"/> <com.google.android.gms.ads.AdView android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" ads:adSize="BANNER" ads:adUnitId="@string/banner_ad_unit_id"> </com.google.android.gms.ads.AdView> </RelativeLayout>
Wir haben einen neuen XML Namespace hinzugefügt (xmlns:ads=“http://schemas.android.com/apk/res-auto“) und einen Container mit der Id adView für die Werbung definiert. Im Code der Activity wird AdMob noch in der letzten Zeile der onCreate Methode initialisiert:
MobileAds.initialize(getApplicationContext(),getResources().getString(R.string.banner_ad_unit_id)); AdView mAdView = (AdView) findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest);
Danach wird die Werbung im Container geladen und angezeigt.
Achtung: die Werbung wird über das Internet geladen. Deshalb kann es ein paar Momente dauern bis diese angezeigt wird. Man muss in der App für die Anzeige der Werbung noch korrekte Rechte setzen.
Rechte setzen
In der AndroidManifest.xml Datei muss man der App noch Rechte für die Verbindung mit dem Internet geben. Das ist auch völlig klar, da die Werbung darüber geladen werden muss. Das ganze geht mit der zusätzlichen Zeile:
<uses-permission android:name="android.permission.INTERNET" />
Finalisieren
Ich habe in meiner Activity einen Schalter eingebaut um die Werbung ein- beziehungsweise auszuschalten. Das klappt in meinem Test sehr gut. Man kann nun hergehen und die App bei deaktivierter Werbung fertigstellen und im letzten Feinschliff vor der Übernahmen in den Play Store noch einmal mit aktivierten Ads testen.
Fazit
Mit der AdMob Activity hat man es relativ einfach Werbung in der eigenen App zu schalten um diese zu monetisieren. Werbung muss dabei pro Layout definiert werden, die eindeutige Ad Id bekommt man vom unter AdMob angelegten Anzeigenblock. Mit einer globalen Variable kann Man Werbung in der ganzen App spielend leicht de- beziehungsweise aktivieren um damit nicht Gefahr zu laufen beim Testen irrtümlich auf die eigene Werbung zu klicken und dann von Google gesperrt zu werden.
Im nächsten Tutorial zeige ich wie man am effektivsten globale Variablen für eine App definiert und darauf zugreift. Dabei werde ich dieses Tutorial erweitern, damit man mit einem Schalter die Werbung komplett aktivieren oder deaktivieren kann. Ideal für eine Lite und eine kostenpflichtige Version der App für den App Store.