initialize method

Future<void> initialize({
  1. required String bannerAdUnitId,
  2. required String interstitialAdUnitId,
  3. int? maxInterstitialAdCount,
  4. required VoidCallback onSuccess,
  5. required VoidCallback onFailed,
})

初始化广告SDK 在应用启动获取到网络权限之后调用 @param bannerAdUnitId Banner广告单元ID @param interstitialAdUnitId 插屏广告单元ID @param maxInterstitialAdCount 最大插屏广告显示次数,默认值为null @param onSuccess 初始化成功回调 @param onFailed 初始化失败回调

Implementation

Future<void> initialize({
  required String bannerAdUnitId,
  required String interstitialAdUnitId,
  int? maxInterstitialAdCount,
  required VoidCallback onSuccess,
  required VoidCallback onFailed,
}) async {
  // 设置广告单元ID
  _bannerAdUnitId = bannerAdUnitId;
  _interstitialAdUnitId = interstitialAdUnitId;
  _maxInterstitialAdCount = maxInterstitialAdCount;

  // 已经成功初始化
  if (_initializationStatus == AdapterInitializationState.ready) {
    onSuccess();
    return;
  }

  // 获取ATT权限
  var isAttAuth = await _authorizationManager.requestAppTrackingAuthorization();
  if (!isAttAuth) {
    onFailed();
    return;
  }

  if (await _authorizationManager.isPrivacyOptionsRequired()) {
    onFailed();
    return;
  }

  _authorizationManager.gatherConsent((consentGatheringError) {
    if (consentGatheringError != null) {
      // Consent not obtained in current session.
      debugPrint("${consentGatheringError.errorCode}: ${consentGatheringError.message}");
      onFailed();
      return;
    }

    _authorizationManager.showPrivacyOptionsForm((formError) {
      if (formError != null) {
        debugPrint("${formError.errorCode}: ${formError.message}");
      }

      // 初始化广告SDK
      MobileAds.instance.initialize().then((InitializationStatus status) {
        debugPrint("广告SDK初始化完成: ${status.adapterStatuses}");
        final initialized = status.adapterStatuses.values.any(
          (adapter) => adapter.state == AdapterInitializationState.ready,
        );
        if (initialized) {
          _initializationStatus = AdapterInitializationState.ready;
          onSuccess();
        } else {
          onFailed();
        }
      });
    });
  });
}