【问题标题】:Detect close of Interstitial Ad in AdMob using iOS RoboVM/libgdx使用 iOS RoboVM/libgdx 检测 AdMob 中的插页式广告的关闭
【发布时间】:2014-10-23 13:15:12
【问题描述】:

我正在为我的 iOS 应用程序使用 RoboVM 绑定来显示 AdMob 插页式广告。当我关闭插页式广告时,我失去了所有的触摸控制。有没有办法检测广告被关闭,以便我可以将触摸恢复到游戏中?还是有更好的方法来实现插页式广告?下面是我的代码:

public class IOSLauncher extends IOSApplication.Delegate implements IActivityRequestHandler{
private static final Logger log = new Logger(IOSLauncher.class.getName(), Application.LOG_DEBUG);
private IOSApplication iosApplication;

//interstitial
private static final String INTERSTITIAL_AD = "MY_AD_ID";
private GADInterstitial interstitial;
private UIWindow window;
private UIViewController rootViewController;

@Override
protected IOSApplication createApplication() {
    IOSApplicationConfiguration config = new IOSApplicationConfiguration();
    config.orientationLandscape = true;
    config.orientationPortrait = false;

    iosApplication = new IOSApplication(new PaperPig(this), config);
    return iosApplication;
}

public static void main(String[] argv) {
    NSAutoreleasePool pool = new NSAutoreleasePool();
    UIApplication.main(argv, null, IOSLauncher.class);
    pool.close();
}

@Override
public void initializeAds() {
    intializeInterstitial();
}

public void intializeInterstitial () {
    rootViewController = new UIViewController();

    interstitial = new GADInterstitial();
    interstitial.setAdUnitID(INTERSTITIAL_AD);

    interstitial.setDelegate(new GADInterstitialDelegateAdapter() {
        @Override
        public void didReceiveAd (GADInterstitial ad) {
            System.out.println("Did receive ad.");
        }

        @Override
        public void didFailToReceiveAd (GADInterstitial ad, GADRequestError error) {
            System.out.println(error.description());
            System.out.println(error.getErrorCode());
        }
    });

    window = new UIWindow(UIScreen.getMainScreen().getBounds());
    window.setRootViewController(rootViewController);
    window.addSubview(rootViewController.getView());

    interstitial.loadRequest(GADRequest.create());
}

@Override
public void showOrLoadInterstital() {
    if (interstitial.isReady()) {
        if (rootViewController == null) {
            rootViewController = new UIViewController();
        }
        if (window == null) {
            window = new UIWindow(UIScreen.getMainScreen().getBounds());
            window.setRootViewController(rootViewController);
        }
        window.makeKeyAndVisible();
        interstitial.present(rootViewController);
    }

//将触摸返回到游戏
//UIApplication.getSharedApplication().getKeyWindow().setRootViewController(rootViewController); } }

【问题讨论】:

  • 您可以通过覆盖 GADInterstitialDelegateAdapter 中的 didDismissScreen 来检测关闭。你在那一点上做的事情也是我被卡住的地方。如果我解决了,我会告诉你的。

标签: ios admob ads interstitial robovm


【解决方案1】:

您需要致电:

        window.setHidden(true);

将您创建的 GADInterstitialDelegateAdapter() 更改为以下内容

   interstitial.setDelegate(new GADInterstitialDelegateAdapter() {
        @Override
        public void didReceiveAd (GADInterstitial ad) {
            System.out.println("Did receive ad.");

        }

        @Override
        public void didDismissScreen(GADInterstitial ad) {
             window.setHidden(true);
        }

        @Override
        public void didFailToReceiveAd (GADInterstitial ad, GADRequestError error) {
            System.out.println(error.description());
            System.out.println(error.getErrorCode());
        }
    });

【讨论】:

  • 谢谢,触摸返回游戏但我尝试调用另一个插页式广告,我收到此错误:2014-10-24 01:25:24.938 IOSLauncher[7680:2519837] 请求错误:不会发送请求,因为已使用插页式对象。错误域 = com.google.ads 代码 = 6“请求错误:不会发送请求,因为已使用插页式对象。” UserInfo=0x23e02490 {NSLocalizedDescription=请求错误:不会发送请求,因为已使用插页式对象。, NSLocalizedFailureReason=请求错误:不会发送请求,因为已使用插页式对象。}
  • 这应该是一个不同的问题。检查 interstitial.isBeenUsed()。如果返回 true,则重新创建 interstitial 实例并再次设置广告单元 ID。如果这解决了您的问题,请接受答案。谢谢。
  • 理想情况下,您希望在 didDismissScreen 中加载广告的新实例,以便下次需要时使用。
  • 你是对的@Will CalderWood .. 它现在完美运行。我刚刚在 didDimissScreen() 中调用了我的整个 intializeInterstitial()。希望这不会是一个问题,但它工作正常......再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多