Ads Integration

D

Droidspirit

App-Anbieter (In-App)
50
Hallo,

ich habe gerade Madvertise & Admob in meine App integriert. Meine App gibt es in 3 verschiedenen Versionen: Eine Lizenz-, eine Kauf- und eine Testversion.

Die Ads sollen nur in der Lizenz-Version angezeigt werden, in den anderen Versionen sollen die Ads gar nicht erst geladen werden.

Das habe ich darüber gelöst, dass jede Activity, in der Ads angezeigt werden sollen, ein FrameLayout besitzt. Wenn es sich um die Lizenz-Version handelt, dann lade ich mittels LayoutInflater die AdView in das FrameLayout. Die Ads werden dann in einer Singleton-Klasse initialisiert.

Da ich mich vorher noch nicht mit Ads auseinander gesetzt habe wollte ich gerne mal in die Runde fragen, ob meine Umsetzung (speziell die Singleton-Klasse) so okay ist.

Z.B. weiß ich nicht genau, ob ich die überschriebenen Methoden des MadvertiseViewCallbackListeners noch ausprogrammieren muß, ob ich noch etwas vergessen oder ob ich noch etwas nicht berücksichtigt habe. Funktionsfähig ist alles soweit ...zumindest im Testbetrieb.



adview.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:mad="http://schemas.android.com/apk/res/de.xxx"
      xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
    android:background="@color/backgroundCst">
 
    <com.google.ads.AdView
            android:id="@+id/admad"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            ads:adUnitId="myId"
            ads:adSize="BANNER"
            ads:loadAdOnCreate="true"
            android:layout_gravity="bottom"
            />
 
    <de.madvertise.android.sdk.MadvertiseView
            android:id="@+id/madad"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            mad:backgroundColor="@color/backgroundCst"
            mad:bannerType="mma"
            mad:placement_type="inline"
            android:layout_gravity="bottom"/>
 
</FrameLayout>


Initialisierung der Ads in einer Activity
Code:
...
adViewMain = (FrameLayout) findViewById(R.id.adLayoutMain);
 
 
if(VERSION == LIZENZVERSION) { // PseudeCode If-Anweisung   
         LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            adViewMain.addView(layoutInflater.inflate(R.layout.adview, adViewMain, false));
 
            AdAdapter.getInstance().initAds(parentActivity);
        }
...


Singleton-Klasse
Code:
package de.helper;
 
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
 
import com.google.ads.AdRequest;
import com.google.ads.AdView;
 
import de.R;
import de.madvertise.android.sdk.MadvertiseTracker;
import de.madvertise.android.sdk.MadvertiseView;
import de.madvertise.android.sdk.MadvertiseView.MadvertiseViewCallbackListener;
 
public class AdAdapter implements MadvertiseViewCallbackListener {
 
    private static AdAdapter instance;
 
    private FrameLayout adLayout;
 
    private MadvertiseTracker mTracker;
    private MadvertiseView mMadView;
 
    private AdView mAdmView;
    private Activity parentActivity;
 
    public static AdAdapter getInstance() {
        if(instance == null) {
            instance = new AdAdapter();
        }
 
        return instance;
    }
 
    public void initAds(Activity parentActivity) {
 
        this.parentActivity = parentActivity;
 
        mMadView = (MadvertiseView) parentActivity.findViewById(R.id.madad);
        mAdmView = (AdView) parentActivity.findViewById(R.id.admad);
 
        // AdMob initialisieren
        AdRequest adMobRequest = new AdRequest();
        mAdmView.loadAd(adMobRequest);     
 
 
        mTracker = MadvertiseTracker.getInstance(parentActivity);
 
        // Report the application's start.
        mTracker.reportLaunch();
        mMadView.setMadvertiseViewCallbackListener(this);
 
 
    }
 
      public void onLoaded(final boolean succeed, final MadvertiseView madView) {
               if (succeed) {
                 if (mAdmView.getVisibility() == View.VISIBLE) {
                      mAdmView.setVisibility(View.GONE);
                 }
                 mMadView.setVisibility(View.VISIBLE);
            } else {
                 mMadView.setVisibility(View.GONE);
            }
      }
 
      @Override
      public void onError(final Exception exception) {
      }
 
      @Override
      public void onIllegalHttpStatusCode(final int statusCode, final String message) {
      }
 
      @Override
      public void onAdClicked() {
      }
 
      @Override
      public void onApplicationPause() {
      }
 
      @Override
      public void onApplicationResume() {
      }
}


Danke und viele Grüße
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: GENiALi
Wenn ich es richtig verstehe, dann blendest du in deiner Kauf-App die Werbung nur aus bzw. machst sie unsichtbar, aber die ganze Funktionalität läßt du drin?

Ein Benutzer wird sich dann verwundert fragen, wozu er die ganzen Rechte dann akzeptieren muß. Bei der Lizenz(Werbe-)App kann man es ja verstehen.

Es sei denn, deine App beschäftigt sich eh mit Internet, WiFi, etc. dann fällts nicht ins Gewicht.

Ich hab bei mir 2 getrennte Versionen / APKs gemacht, eine mit Admob + Madvertise und eine ganze ohne, also auch ohne die notwendigen Permissions.
 
Danke für die Antwort.

Ich verwende in meiner App Internetzugriff, Positionsbestimmung, GPS, etc. Also von den Rechten her macht das keinen Unterschied. Da hab ich Glück gehabt :)

Ich habe in den xml-Layouts meiner Activities ein leeres FrameLayout definiert (adLayoutMain). Dieses dient als Container.
Dann gibt es die Klasse AdView.xml (ganz oben mein erstes Code-Sample). In dieser stecken die Beschreibungen für Admob und Madvertise.

Wenn es sich nun um die Version der App handelt, in der die Ads angezeigt werden sollen, dann lade ich die AdView ganz einfach über den LayoutInflater in den Layout-Container (adLayoutMain) und dort werden die Ads dann auch initialisiert (2. Code-Sample).

Wenn ich es richtig verstehe, dann blendest du in deiner Kauf-App die Werbung nur aus bzw. machst sie unsichtbar, aber die ganze Funktionalität läßt du drin?
Nein, nicht ganz. Bei meiner Vorgehensweise werden die Ads in den werbefreien Versionen erst gar nicht initialisiert. Der Vorteil ist, dass ich dadurch enorm Rechenleistung spare, was beim "nur Ausblenden" nicht der Fall ist.
 
Zuletzt bearbeitet:

Ähnliche Themen

W
  • woehrer
Antworten
3
Aufrufe
904
JoEntwickler
J
Y
  • YouKnowNow
Antworten
3
Aufrufe
1.021
markus.tullius
markus.tullius
Y
  • YouKnowNow
Antworten
0
Aufrufe
629
YouKnowNow
Y
Zurück
Oben Unten