Banner Ad

1. 基本要求

  • ADX Android SDK添加到项目中。

  • 请使用为Banner Ad专用的 Ad Unit ID。

  • 在请求广告之前先对SDK进行初始化。

    • SDK 初始化请在应用运行时只调用一次,并且 广告请求必须在初始化完成后进行。

2. 布局设置

在展示广告的 ActivityFragment 的 layout中添加 BannerAd

  • 输入Ad Unit ID 和广告的尺寸。

  • 支持以下的广告尺寸,并且广告尺寸为必须输入的项。

AD_SIZE_320x50, AD_SIZE_728x90, AD_SIZE_320x100, AD_SIZE_300x250
<com.adxcorp.ads.BannerAd
    android:id="@+id/banner"
    android:layout_width="320dp"
    android:layout_height="50dp"
    app:ADX_UNIT_ID="<BANNER_AD_UNIT_ID>"
    app:BANNER_AD_SIZE="AD_SIZE_320x50">
</com.adxcorp.ads.BannerAd>

3. 创建广告对象

如果不使用layout设置而直接用代码编写的话,广告展示的 ActivityFragment 里应添加 BannerAd

  • 输入Ad Unit ID 和广告的尺寸。

  • 支持以下的广告尺寸,并且广告尺寸为必须输入的项。

  • AD_SIZE_320x50, AD_SIZE_728x90, AD_SIZE_320x100, AD_SIZE_300x250
public class BannerActivity extends AppCompatActivity {

    private com.adxcorp.ads.BannerAd bannerAd;
    private RelativeLayout container;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_banner);

        bannerAd = new BannerAd(this, "<BANNER_AD_UNIT_ID>", AdConstants.BANNER_AD_SIZE.AD_SIZE_300x250);
        container = (RelativeLayout) findViewById(R.id.container);

        container.addView(bannerAd);
    }
}

4. 实现

  1. 实例化 BannerAd 并添加 BannerAdListener

  2. 呼叫 loadAd() 加载广告。

  3. 广告播放结束后在onDestroy()中呼叫 []BannerAd的destroy(),移除 BannerAd。

public class BannerActivity extends AppCompatActivity {

    private com.adxcorp.ads.BannerAd bannerAd;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_banner);

        bannerAd = findViewById(R.id.banner);
        bannerAd.setBannerListener(new BannerAd.BannerListener() {
            @Override
            public void onAdLoaded() {
            }

            @Override
            public void onAdError(int errorCode) {
            }

            @Override
            public void onAdClicked() {
            }
        });

        bannerAd.loadAd();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        if (bannerAd != null) {
            bannerAd.destroy();
            bannerAd = null;
        }
    }
}

5. Callback

可通过设置BannerAdBannerListener来接收特定事件。根据需要实现。

bannerAd.setBannerListener(new BannerAd.BannerListener() {
    @Override
    public void onAdLoaded() {
    }

    @Override
    public void onAdError(int errorCode) {
    }

    @Override
    public void onAdClicked() {
    }
});

6. Ad Revenue (OnPaidEvent)

  • 您可以收到广告展示期间预期的广告收益。

  • 由于该值可能混合了在中介设置过程中手动设置的值,建议作为预估值使用。

  • ecpm 的货币为 USD

  • 按照下面的示例回调 OnPaidEvent 后使用即可。

  • 可以将广告收入数据与 MMP 对接。详细信息请参阅下面的 SDK 对接指南。

 bannerAd.setOnPaidEventListener(new OnPaidEventListener() {
    @Override
    public void onPaidEvent(double ecpm) {
        double revenue = ecpm / 1000;
        
        // Firebase Analytics 示例
        mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
        Bundle params = new Bundle();
        params.putString(FirebaseAnalytics.Param.AD_PLATFORM, "AD(X)");
        params.putString(FirebaseAnalytics.Param.AD_FORMAT, "BannerAd");
        params.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, "ADX Banner Ad");
        params.putDouble(FirebaseAnalytics.Param.VALUE, revenue);
        params.putString(FirebaseAnalytics.Param.CURRENCY, "USD");
        mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, params);
        
        // AppsFlyer 示例
        Map<String, String> customParams = new HashMap<>();
        customParams.put(Scheme.AD_TYPE, "BannerAd");
        customParams.put("ad_unit_name", "ADX Banner Ad");

        AppsFlyerAdRevenue.logAdRevenue(
              "AD(X)",
              MediationNetwork.customMediation,
              Currency.getInstance(Locale.US),
              revenue,
              customParams
        );
    }
});

最后更新于

这有帮助吗?