在纵向模式下获取横向 AdMob 插页式广告

Getting landscape AdMob Interstitials while being in portrait orientation

我目前正在开发的游戏应用程序使用传感器管理其方向,并始终处于纵向模式,在 onCreate() 方法中使用以下代码行:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

我已经实施了 AdMob 插页式广告,但是它们似乎总是以纵向模式显示,可能是因为 应用认为它处于纵向模式, 因为我在我的游戏代码中管理屏幕旋转。

因为我使用了传感器,所以我可以准确地知道我的设备的实际方向,有什么方法可以让我从 AdMob 请求横向广告吗?

如果应用程序仍然调用 viewWillTransition 函数,那就很简单了。

只需覆盖该函数并正常使用 Interstitial Ads guideline from Google 中的 createAndLoadInterstitial。

每次旋转设备时,都会请求新的插页式广告。但是当插页式广告已经显示在屏幕上时,它不起作用。

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
        interstitial = createAndLoadInterstitial()
    }

func createAndLoadInterstitial() -> GADInterstitial {
        interstitial = GADInterstitial(adUnitID: GlobalConstants.interstitialAdUnitID)
        interstitial.delegate = self
        interstitial.load(GADRequest())
        return interstitial
    }

作为侧面的提示。引入 class 在调试(测试广告)和发布(生产广告)之间动态切换 AdUnitIDs:

class GlobalConstants {
    static var interstitialAdUnitID: String {
        #if DEBUG
        return "ca-app-pub-3940256099942544/4411468910"
        #else
        return "Production-AdUnitID"
        #endif
    }
}