Rewarded Ad
1. 基本要求
ADX Android SDK添加到项目中。
请使用为Rewarded Ad专用的 Ad Unit ID。
在请求广告之前先对SDK进行初始化。
SDK 初始化请在应用运行时只调用一次,并且 广告请求必须在初始化完成后进行。
2. 实现
实例化
RewardedAd并添加RewardedAdListener。呼叫
loadAd()加载广告。广告加载已完成并
onAdLoaded()回调收到后show()或,isLoaded()检查是否有要显示的广告后,show()用于展示广告。广告播放结束后在
onDestroy()中呼叫RewardedAd的destroy(),移除RewardedAd。
public class RewardedAdActivity extends AppCompatActivity {
private com.adxcorp.ads.RewardedAd rewardedAd;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
rewardedAd = new RewardedAd(this, "<REWARDED_AD_UNIT_ID>");
rewardedAd.setRewardedAdListener(new RewardedAd.RewardedAdListener() {
@Override
public void onAdLoaded() {
}
@Override
public void onAdError(int errorCode) {
}
@Override
public void onAdClicked() {
}
@Override
public void onAdImpression() {
}
@Override
public void onAdClosed() {
}
@Override
public void onAdRewarded() {
}
@Override
public void onAdFailedToShow() {
}
});
rewardedAd.loadAd();
}
void show() {
if (rewardedAd != null && rewardedAd.isLoaded()) {
rewardedAd.show();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (rewardedAd != null) {
rewardedAd.destroy();
rewardedAd = null;
}
}
}class RewardedAdActivity : AppCompatActivity() {
private var rewardedAd: RewardedAd? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_fullscreen)
rewardedAd = RewardedAd(this, "<REWARDED_AD_UNIT_ID>")
rewardedAd?.setRewardedAdListener(object : RewardedAd.RewardedAdListener {
override fun onAdLoaded() {
}
override fun onAdError(errorCode: Int) {
}
override fun onAdClicked() {
}
override fun onAdImpression() {
}
override fun onAdClosed() {
}
override fun onAdRewarded() {
}
override fun onAdFailedToShow() {
}
})
rewardedAd?.loadAd()
}
fun show() {
if (rewardedAd?.isLoaded == true) {
rewardedAd!!.show()
}
}
override fun onDestroy() {
super.onDestroy()
rewardedAd?.destroy()
rewardedAd = null
}
}3. Callback
可通过设置RewardedAd的 RewardedAdListener来接收特定事件。
rewardedAd.setRewardedAdListener(new RewardedAd.RewardedAdListener() {
@Override
public void onAdLoaded() {
}
@Override
public void onAdError(int errorCode) {
}
@Override
public void onAdClicked() {
}
@Override
public void onAdImpression() {
}
@Override
public void onAdClosed() {
}
@Override
public void onAdRewarded() {
}
@Override
public void onAdFailedToShow() {
}
});rewardedAd?.setRewardedAdListener(object : RewardedAd.RewardedAdListener {
override fun onAdLoaded() {
}
override fun onAdError(errorCode: Int) {
}
override fun onAdClicked() {
}
override fun onAdImpression() {
}
override fun onAdClosed() {
}
override fun onAdRewarded() {
}
override fun onAdFailedToShow() {
}
})4. Ad Revenue (OnPaidEvent)
您可以收到广告展示期间预期的广告收益。
由于该值可能混合了在中介设置过程中手动设置的值,建议作为预估值使用。
ecpm 的货币为 USD。
如下
OnPaidEvent注册回调后使用即可。可以将广告收入数据与 MMP 对接。详细信息请参阅下面的 SDK 对接指南。
rewardedAd.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, "RewardedAd");
params.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, "ADX Rewarded 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, "RewardedAd");
customParams.put("ad_unit_name", "ADX Rewarded Ad");
AppsFlyerAdRevenue.logAdRevenue(
"AD(X)",
MediationNetwork.customMediation,
Currency.getInstance(Locale.US),
revenue,
customParams
);
}
});rewardedAd.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 Rewarded Ad")
param(FirebaseAnalytics.Param.AD_FORMAT, "RewardedAd")
param(FirebaseAnalytics.Param.VALUE, revenue)
param(FirebaseAnalytics.Param.CURRENCY, "USD")
}
// AppsFlyer 샘플
val customParams: MutableMap<String, String> = HashMap()
customParams[Scheme.AD_TYPE] = "RewardedAd"
customParams["ad_unit_name"] = "ADX Rewarded Ad"
AppsFlyerAdRevenue.logAdRevenue(
"AD(X)",
MediationNetwork.customMediation,
Currency.getInstance(Locale.US),
revenue,
customParams
)
}
})5. SSV (Server-side verification) 设置
SSV 设置是 选择项,需要时设置并使用即可。
SSV 设置是在奖励事件发生时,用于以 Server to Server 方式调用开发商注册的 Callback URL 的设置。
关于 SSV 设置的调用条件如下。
通过仪表板
Rewarded Video类型中 回调 URL 必须已注册。观看视频完成后必须发生奖励事件。
如有需要,可在请求广告之前通过 SDK 设置
用户 ID或自定义数据信息。
客户端设置的
User ID和自定义数据信息如果存在, 回调 URL会包含在调用中发送。(示例)https://callback_url?param=value&userid=<valule>&customdata=<value>
该设置必须在广告请求之前调用,数据才会被正确 回调 URL包含。
请参考服务器端 SSV 回调验证对奖励进行验证。
// SSV 设置 (optional)
rewardedAd.setUserIdForSSV("<USER_ID>");
rewardedAd.setCustomDataForSSV("<CUSTOM_DATA>");
// 广告请求
rewardedAd.loadAd();// SSV 设置 (optional)
rewardedAd?.setUserIdForSSV("<USER_ID>")
rewardedAd?.setCustomDataForSSV("<CUSTOM_DATA>")
// 广告请求
rewardedAd?.loadAd()最后更新于
这有帮助吗?