Banner Ad
1. 基本要求
ADX Android SDK添加到项目中。
请使用为Banner Ad专用的 Ad Unit ID。
在请求广告之前先对SDK进行初始化。
SDK 初始化请在应用运行时只调用一次,并且 广告请求必须在初始化完成后进行。
2. 布局设置
在展示广告的 Activity 或 Fragment 的 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设置而直接用代码编写的话,广告展示的 Activity 或 Fragment 里应添加 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);
}
}class BannerActivity : AppCompatActivity() {
private var bannerAd: BannerAd? = null
private var container: RelativeLayout? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_banner)
bannerAd = BannerAd(this, "<BANNER_AD_UNIT_ID>", AdConstants.BANNER_AD_SIZE.AD_SIZE_320x50)
container = findViewById<RelativeLayout>(R.id.container)
container?.addView(bannerAd)
}
}4. 实现
实例化
BannerAd并添加BannerAdListener。呼叫
loadAd()加载广告。广告播放结束后在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;
}
}
}class BannerActivity : AppCompatActivity() {
private var bannerAd: BannerAd? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_banner)
bannerAd = findViewById(R.id.banner)
bannerAd?.setBannerListener(object : BannerAd.BannerListener {
override fun onAdLoaded() {
}
override fun onAdError(errorCode: Int) {
}
override fun onAdClicked() {
}
})
bannerAd?.loadAd()
}
override fun onDestroy() {
super.onDestroy()
bannerAd?.destroy()
bannerAd = null
}
}5. Callback
可通过设置BannerAd的 BannerListener来接收特定事件。根据需要实现。
bannerAd.setBannerListener(new BannerAd.BannerListener() {
@Override
public void onAdLoaded() {
}
@Override
public void onAdError(int errorCode) {
}
@Override
public void onAdClicked() {
}
});bannerAd?.setBannerListener(object : BannerAd.BannerListener {
override fun onAdLoaded() {
}
override fun onAdError(errorCode: Int) {
}
override fun 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
);
}
});bannerAd.setOnPaidEventListener(object : OnPaidEventListener() {
fun onPaidEvent(ecpm: Double) {
val revenue: Double = ecpm / 1000
// Firebase Analytics 示例
firebaseAnalytics = Firebase.analytics
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION) {
param(FirebaseAnalytics.Param.AD_PLATFORM, "AD(X)")
param(FirebaseAnalytics.Param.AD_UNIT_NAME, "ADX Banner Ad")
param(FirebaseAnalytics.Param.AD_FORMAT, "BannerAd")
param(FirebaseAnalytics.Param.VALUE, revenue)
param(FirebaseAnalytics.Param.CURRENCY, "USD")
}
// AppsFlyer 示例
val customParams: MutableMap<String, String> = HashMap()
customParams[Scheme.AD_TYPE] = "BannerAd"
customParams["ad_unit_name"] = "ADX Banner Ad"
AppsFlyerAdRevenue.logAdRevenue(
"AD(X)",
MediationNetwork.customMediation,
Currency.getInstance(Locale.US),
revenue,
customParams
)
}
})最后更新于
这有帮助吗?