集成展现级收入数据
开始之前
-
确保已集成 OpenMediation SDK v2.1.0 或更高版本。
展现级收入数据
展现级收入数据作为 ImpressionData 对象的一部分返回。这是相关数据字段的列表,包括说明和类型。
Field Name | Datatype | Description |
---|---|---|
impression_id | String | 广告展现 id |
instance_id | String | 聚合系统内分配给 instance 的唯一 id |
instance_name | String | 在聚合前台设置的 instance 名称 |
instance_priority | Integer | Instance 在当前 mediation rule 下的优先级顺序 |
ad_network_name | String | Instance 所属的ad network的名称 |
ad_network_unit_id | String | Instance中填写的ad network的unit/placement/zone的id (Rewarded Video/Interstitial/Banner/Native/Splash/Cross Promote) |
mediation_rule_id | String | 聚合系统内分配给mediation rule的唯一id |
mediation_rule_name | String | mediation rule的名称 |
mediation_rule_type | String | mediation rule的优化类型,Manual(手动排序)或者Auto(自动排序) |
mediation_rule_priority | Integer | mediation rule在聚合前台的排序顺序 |
placement_id | String | 聚合系统内分配给广告位的唯一id |
placement_name | String | 广告位名称 |
placement_ad_type | String | 广告位类型: Banner/Native/Rewarded Video/Interstitial/Splash/CrossPromote |
scene_name | String | 场景名称,Banner/Native/Splash 则为空 |
currency | String | 货币单位,固定值,“USD” |
revenue | Double | 本次展现带来的收益 |
precision | String | 收益精度: undisclosed - 非公开数据,例如FAN要求不得存储收益数据 exact - 精准值,一般是in-app bidding类型的instance带来的收益 estimated - 预估值,由普通instance历史收益数据预估得出 |
ab_group | String | 平台使用了A / B测试 |
lifetime_value | Double | 当前用户生命周期内已经产生的广告收益 |
实现回调接口
OpenMediation SDK v2.1.0 及更高版本增加了公共接口 ImpressionDataListener。当任何格式的广告内容触发一次展示时,将通知此 Listener。
请注意,您需要先在 OpenMediation 前台启用了 ILRD 功能,否则 onImpression() 回调中的 ImpressionData 参数将会是空数据。
1. 实现 ImpressionDataListener 接口,并调用 OmAds.addImpressionDataListener(listener) 订阅事件以接收详细的展现数据。 我们建议您在应用程序启动时就订阅事件。
import com.openmediation.sdk.OmAds;
import com.openmediation.sdk.ImpressionData;
import com.openmediation.sdk.ImpressionDataListener;
import com.openmediation.sdk.utils.error.Error;
ImpressionDataListener listener = new ImpressionDataListener() {
@Override
public void onImpression(Error error, ImpressionData impressionData) {
if (impressionData != null) {
// To make it easy to use, you can refer to each field separately,
// or get all information using the allData method:
impressionData.getAllData();
} else {
// impression data not available
}
}
});
2. 调用 OmAds.addImpressionDataListener(listener) 以开始监听展现级别的收入数据事件。
3. 调用 OmAds.removeImpressionDataListener(listener) 以取消订阅展现级别的收入数据事件。
OmAds.addImpressionDataListener(listener);
OmAds.removeImpressionDataListener(listener);
确保 ImpressionDataListener 不会产生内存泄漏。如果您的 Listener 与 Activity 生命周期相关联,请确保在销毁 Activity 时移除 Listener。
示例
import com.openmediation.sdk.OmAds;
import com.openmediation.sdk.ImpressionData;
import com.openmediation.sdk.ImpressionDataListener;
private ImpressionDataListener mImpressionListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mImpressionListener = new ImpressionDataListener() {
@Override
public void onImpression(Error error, ImpressionData impressionData) {
}
};
// subscribe to start listening for impression data
OmAds.addImpressionDataListener(mImpressionListener);
}
@Override
protected void onDestroy() {
// Remove the listener to unsubscribe
OmAds.removeImpressionDataListener(mImpressionListener);
super.onDestroy();
}
将数据发送到其他工具或供应商
收到展示数据后,您可以将其提供给内部商务智能(BI)工具,或将其发送给第三方归因和分析提供商以进行进一步分析。
示例
以下示例显示了如何将ILRD发送到 Google Analytics for Firebase。 您可以进行一些必要的更改,以便与第三方报告工具或您自己专有的优化工具和数据库集成。
@Override
public void onImpression(Error error, ImpressionData impressionData) {
if (impressionData != null) {
// Feed impression data into internal tools or send to third-party analytics
FirebaseAnalytics firebaseAnalytics = FirebaseAnalytics.getInstance(context);
Bundle params = new Bundle();
params.putString(FirebaseAnalytics.Param.AD_PLATFORM, "OpenMediation");
params.putString(FirebaseAnalytics.Param.AD_SOURCE, impressionData.getAdNetworkName());
params.putString(FirebaseAnalytics.Param.AD_FORMAT, impressionData.getPlacementAdType());
params.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.getPlacementName());
params.putDouble(FirebaseAnalytics.Param.VALUE, impressionData.getRevenue());
params.putString(FirebaseAnalytics.Param.CURRENCY, impressionData.getCurrency());
params.putString("precision", impressionData.getPrecision());
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, params);
}
}
评论
文章评论已关闭。