onAdEvent static method

dynamic onAdEvent({
  1. required Map arguments,
})

广告事件

Implementation

static onAdEvent({required Map<dynamic, dynamic> arguments}) {
  var adLoaderId = arguments[ProAdCore.keyAdLoaderId];
  var proAdLoader = _findBwtAdLoader(adLoaderId);
  if (proAdLoader == null) return;

  var adEvent = arguments[ProAdCore.keyAdEvent];
  if (adEvent == null) return;

  var adId = arguments[ProAdCore.keyAdId];
  var proAd = proAdLoader.findBwtAd(adId: adId);
  if (proAd == null) return;

  /// TODO 还有_eventOnAdRender、_eventOnAdReward没做
  switch (adEvent) {
    case _eventOnAdLoad:
      var method = arguments["method"];
      if (method == "loadNativeAd") {
        var nativeData = Map<String, dynamic>.from(arguments['nativeData']);
        //加载自渲染的onload 需要把自渲染数据抛给开发者
        ProNativeAdData model = ProNativeAdData.fromMap(nativeData);
        proAdLoader as ProNativeAdLoader;
        proAdLoader.onNativeAdLoadCallback(proAd as ProNativeAd, model);
      } else {
        proAdLoader.onAdLoadCallback(proAd);
      }
    case _eventOnAdFailed:
      proAdLoader.onAdFailedCallback(arguments[ProAdCore.keyAdMsg]);
    case _eventOnAdMeasured:
      if (proAdLoader is ProNativeExpressAdLoader &&
          proAd is ProNativeExpressAd) {
        double adWidth = arguments[ProAdCore.keyAdWidth] ?? 0;
        double adHeight = arguments[ProAdCore.keyAdHeight] ?? 0;
        proAdLoader.onAdMeasured(proAd, adWidth, adHeight);
      }
      break;
    case _eventOnAdExpose:
      proAdLoader.onAdExposeCallback(proAd);
    case _eventOnAdClick:
      proAdLoader.onAdClickCallback(proAd);
    case _eventOnAdClose:
      proAdLoader.onAdCloseCallback(proAd);
  }
}