菜单

三方收益回传

1. 概述

HyperBid Flutter SDK 在广告产生收益时,会通过 onAdRevenuePaidCallback 回调返回 McAd 对象。您可以从中提取收益相关字段,并上报至 Firebase Analytics、Adjust、AppsFlyer、SolarEngine 等第三方平台,实现广告收益归因与数据分析。

McAd 收益相关字段:

字段 类型 说明
revenue double 广告展示收益金额
currency String 货币单位(如 USDCNY
ecpm double 预估 eCPM
networkName String 广告平台名称
mediationPlacementId String 聚合平台广告位 ID
adUnitId String 聚合单元 ID

2.Firebase

dart 复制代码
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
    );
}

3. Adjust

⚠️ 示例 code 仅供参考,具体传值请以Adjust官方文档说明为准

dart 复制代码
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 官方文档为准,以上示例为常见用法参考。


4. AppsFlyer

⚠️ 示例 code 仅供参考,具体传值请以AppsFlyer官方文档说明为准

dart 复制代码
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 官方文档为准,以上示例为常见用法参考。


5. SolarEngine

⚠️ 示例 code 仅供参考,具体传值请以SolarEngine官方文档说明为准

dart 复制代码
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 官方文档为准,以上示例为常见用法参考。


上一个
自定义流量分组
下一个
查询广告状态信息
最近修改: 2026-06-25Powered by