HyperBid Flutter SDK 在广告产生收益时,会通过 onAdRevenuePaidCallback 回调返回 McAd 对象。您可以从中提取收益相关字段,并上报至 Firebase Analytics、Adjust、AppsFlyer、SolarEngine 等第三方平台,实现广告收益归因与数据分析。
McAd 收益相关字段:
| 字段 | 类型 | 说明 |
|---|---|---|
revenue |
double |
广告展示收益金额 |
currency |
String |
货币单位(如 USD、CNY) |
ecpm |
double |
预估 eCPM |
networkName |
String |
广告平台名称 |
mediationPlacementId |
String |
聚合平台广告位 ID |
adUnitId |
String |
聚合单元 ID |
- ⚠️ 使用Firebase与AdMob关联集成时,需避免AdMob收益重复上报
- 如下示例code仅供参考,详情请参考Firebase官方文档
void onAdRevenuePaidCallback(McAd ad) {
// 防止AdMob重复上报
// if (ad.mediationId == McMediationId.admob) return;
// if (ad.networkFirmId == 2 && !(ad.biddingType == 1 || ad.biddingType == 2)) return;
String mediationPlatform = switch (ad.mediationId) {
McMediationId.topon => "TopOn",
McMediationId.max => "Max",
_ => "custom", // _ 代表 default
};
await FirebaseAnalytics.instance.logAdImpression(
adPlatform: mediationPlatform,
adSource: ad.networkName,
adFormat: ad.adFormat,
adUnitName: ad.mediationPlacementId,
value: ad.revenue,
currency: ad.currency
);
}
⚠️ 示例 code 仅供参考,具体传值请以Adjust官方文档说明为准
void onAdRevenuePaidCallback(McAd ad) {
String mediationPlatform = switch (ad.mediationId) {
McMediationId.topon => "topon_sdk",
McMediationId.max => "applovin_max_sdk",
McMediationId.admob => "admob_sdk",
_ => "custom", // _ 代表 default
};
AdjustAdRevenue adjustAdRevenue = new AdjustAdRevenue(mediationPlatform);
adjustAdRevenue.setRevenue(ad.revenue, ad.currency);
adjustAdRevenue.adRevenueNetwork = ad.networkName;
adjustAdRevenue.adRevenueUnit = ad.mediationPlacementId;
adjustAdRevenue.adRevenuePlacement = ad.adFormat;
Adjust.trackAdRevenue(adjustAdRevenue);
}
📌 Adjust 的字段映射请以 Adjust 官方文档为准,以上示例为常见用法参考。
⚠️ 示例 code 仅供参考,具体传值请以AppsFlyer官方文档说明为准
void onAdRevenuePaidCallback(McAd ad) {
Map<String, dynamic> customParams = {
'adUnitId': ad.networkPlacementId
};
String mediationPlatform = switch (ad.mediationId) {
McMediationId.topon => AFMediationNetwork.topon.value,
McMediationId.max => AFMediationNetwork.applovinMax.value,
McMediationId.admob => AFMediationNetwork.googleAdMob.value,
_ => "custom", // _ 代表 default
};
AdRevenueData adRevenueData = AdRevenueData(
monetizationNetwork: ad.networkName,
mediationNetwork: mediationPlatform,
currencyIso4217Code: ad.currency,
revenue: ad.revenue,
additionalParameters: customParams);
_appsflyerSdk.logAdRevenue(adRevenueData);
}
📌 AppsFlyer 的字段映射请以 AppsFlyer 官方文档为准,以上示例为常见用法参考。
⚠️ 示例 code 仅供参考,具体传值请以SolarEngine官方文档说明为准
void onAdRevenuePaidCallback(McAd ad) {
SEAppImpressionData appImpressionData = SEAppImpressionData();
appImpressionData.adNetworkPlatform = ad.networkName;
// appImpressionData.adType = ...; // 广告样式具体值参考SolarEngine官方文档说明
appImpressionData.adNetworkAppID = "变现平台的应用 ID";
appImpressionData.adNetworkADID = ad.networkPlacementId;
appImpressionData.ecpm = ad.ecpm;
appImpressionData.currencyType = ad.currency;
appImpressionData.isRenderSuccess = true;
String mediationPlatform = switch (ad.mediationId) {
McMediationId.topon => "topon",
McMediationId.max => "max",
McMediationId.admob => "admob",
_ => "custom", // _ 代表 default
};
appImpressionData.mediationPlatform = mediationPlatform;
SolarEngine.trackAppImpress(appImpressionData);
}
📌 SolarEngine 的字段映射请以 SolarEngine 官方文档为准,以上示例为常见用法参考。