如何为Firebase / Admob插页式广告确定`isReady`

时间:2018-01-14 06:24:38

标签: firebase admob cocos2d-x

对于iOS,admob附带isReady字段,以确定广告是否已准备好展示。现在我正在将admob集成到我在cocos2d-x的Android游戏中,我正在关注此官方指南:https://firebase.google.com/docs/admob/cpp/quick-start#set_up_an_interstitial_ad

if (interstitial_ad->LoadAdLastResult().status() ==
    firebase::kFutureStatusComplete &&
    interstitial_ad->LoadAdLastResult().error() ==
    firebase::admob::kAdMobErrorNone) {
  interstitial_ad->Show();
}

该条件与iOS isReady API略有不同。在展示广告后,对于iOS,isReady将为false。但即使展示了广告,LoadAdLastResult仍然是Complete。我需要与isReady类似的内容来决定是否需要申请新广告。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

不要使用bar(/* hints */) // 1/2 bar(args_0: number, args_1: string): void // 2/2 bar(args_0: Record<string, any>, args_1: number): void 。最新的 Admob 更新删除了它实际上是一个糟糕的 API(适用于 iOS 的 v8.0)。

原因是 isReady 很容易导致竞争条件并导致状态不佳。更好的方法是在广告获取回调成功后才保留对广告实例的引用(这是 v8.0 API 中唯一的方法)

答案 1 :(得分:0)

你应该自己实现这个逻辑。例如:变量(interstitialAdShown),表示您需要申请新广告

  // Set up the show interstitial ad button.
  showInterstitialAdBtn = createButton(false, kShowInterstitialText);
  showInterstitialAdBtn->addTouchEventListener(
      [&](Ref* sender, cocos2d::ui::Widget::TouchEventType type) {
        cocos2d::ui::Button* button = static_cast<cocos2d::ui::Button*>(sender);
        switch (type) {
          case cocos2d::ui::Widget::TouchEventType::ENDED:
            // The show intersitial button is enabled in the update() method
            // when the interstial ad has successfully loaded. Here the show
            // interstitial button has been pressed by the user, so we disable
            // the button and display the interstitial ad to the user.
            button->setEnabled(false);
            logMessage("Showing the interstitial ad.");
            interstitialAd->Show();
            // Invalidate all Futures and enable loadInterstitialAdBtn.
            interstitialAdShown = true;
            break;
          default:
            break;
        }
      });
this->addChild(showInterstitialAdBtn);

您可以在此处查看完整示例 - https://github.com/firebase/cocos2dx-cpp-sample/blob/master/admob/Classes/FirebaseAdMobScene.cpp#L441

来自Google的cocos2d-x的其他firebase示例 - https://github.com/firebase/cocos2dx-cpp-sample

答案 2 :(得分:0)

据我所知,对于IOS和Android,在插页式加载方面的行为非常相似。

在Android中,您可以使用此功能检查插页式广告是否已准备就绪:

?

Android的良好做法是在onAdClosed事件中请求新的插页式广告