shouldShowOpenAppAd method

  1. @override
void shouldShowOpenAppAd(
  1. bool shouldShow, {
  2. Object? blocker,
})
override

是否应该显示开屏广告

blocker 用于标识当前这次“禁止展示”来源。 嵌套页面场景建议传入页面私有 blocker,避免不同页面互相覆盖状态。

Implementation

@override
void shouldShowOpenAppAd(bool shouldShow, {Object? blocker}) {
  final previousState = _shouldShowAppOpenAd;

  if (blocker != null) {
    if (shouldShow) {
      _blockers.remove(blocker);
    } else {
      _blockers.add(blocker);
    }
    LogUtils.d('$adsType blocker updated: ${shouldShow ? "remove" : "add"}, total:${_blockers.length}');
  } else if (shouldShow) {
    if (_legacyBlockCount > 0) {
      _legacyBlockCount -= 1;
    }
    LogUtils.d('$adsType legacy blocker released, remaining:$_legacyBlockCount');
  } else {
    _legacyBlockCount += 1;
    LogUtils.d('$adsType legacy blocker added, total:$_legacyBlockCount');
  }

  if (previousState != _shouldShowAppOpenAd) {
    // 这里只改变展示意图,不主动清理当前缓存,也不停止后台补缓存
    LogUtils.d('$adsType should show changed: $_shouldShowAppOpenAd');
  }
}