使用iOS9的AdMob和插页式广告

今天,我注册了adMob,开始在我的应用程序中使用adMob广告。第一个是游戏(使用viewcontrollers),我希望在游戏结束后显示插页式广告,因此我希望在插入广告后立即加载游戏结束时的视图(这个视图只能在游戏结束后才能被访问,游戏持续一分钟,所以不应该出现太多)

我在YouTube上和admob网站上看到了很多教程,我遇到了很多问题:即使我导入了admob框架也没有find,我禁用了bitcode以避免在构build时出现链接器错误,但仍然看不到testing广告在我的应用程序,在模拟器和真实的设备上。

我导入了admob所需的所有框架,并且在xcode中我在GoogleMobileAds框架附近有一个问号,这是什么意思? 关于admob的第一行是:

import GoogleMobileAds 

里面的viewcontroller

 var interstitial: GADInterstitial! func createNloadAd () -> GADInterstitial { var ad = GADInterstitial(adUnitID: "XXX") var request = GADRequest() request.testDevices = [kGADSimulatorID] ad!.loadRequest(request) return ad } 

里面的viewdidload

 self.interstitial = self.createNloadAd() if(self.interstitial!.isReady) { self.interstitial!.presentFromRootViewController(self) self.interstitial! = self.createNloadAd() } 

在adUnitID中,我尝试了在admob网站中创build的插页式广告的ID,以及在教程中find的其他string,但都没有工作

在testdevices我添加我的iphone的UDID后,我看到的消息在输出,但我看不到任何testing广告,我没有任何错误

而我没有触及故事板,我是否必须在故事板上创造出一些东西?

在将应用程序提交到appstore之前,我必须删除testdevices行,当然还要把我真正的AdUnitID

也许代码是正确的,但如果应用程序未发布admob将无法加载,或者我必须等待一天,我的admob id开始工作

在哪里可以find最近的admob ID进行testing? 所以我testing的应用程序,如果工作我更改ID和提交

我使用Xcode 7.1,AdMob 7.5.2,我的应用程序部署目标是iOS7,我在模拟器上使用9.1和我的旧iPhone4与iOS7testing它,这应该不是一个问题,因为admob甚至支持iOS6

关于admob准则的另一个问题,在其他应用程序中,我可以在视图中使用iAd,在另一个应用程序中使用Admob?我可以被禁止吗?只有屏幕下方的横幅广告

即使我导入了AdMob框架也没有find

删除框架并再次导入。 确保你正在检查“如果需要复制项目”。 另外,请检查您的项目设置下的库searchpath,并构build阶段以查看框架是否包含在内。

我导入了AdMob所需的所有框架

这不是必须的。 一旦包含import GoogleMobileAds ,AdMob框架将导入其所需的框架。

而且我没有碰故事板。 我是否必须在故事板中创build一些内容?

没有

在将应用程序提交到App Store之前,我必须删除testing设备行,并将我的真实AdUnitID?

是。 现在尝试使用您的真实AdUnitID来查看您的testingID是否导致问题。

也许代码是正确的,但如果应用程序未发布AdMob将无法加载,或者我必须等待一天,然后我的AdMob id开始工作

不需要。应用程序不需要发布即可接收实时广告。

在哪里可以find最近的AdMob ID进行testing? 所以我testing的应用程序,如果工作,我改变了身份证,并提交

无处。 放弃您的AdUnitID并不明智。

关于AdMob指南的另一个问题,在其他应用程序中,我可以在视图中使用iAd,而在其他应用程序中使用AdMob? 我可以被禁止吗? 只有屏幕下方的横幅广告

在您的应用程序中使用尽可能多的广告networking。 没有说明你不被允许。


听起来像你在正确的轨道上。 您应该设置和包含插页式广告的委托方法,以查看是否收到任何错误消息。 你需要在你的.plist允许任意的加载。 检查AdMob的iOS 9注意事项 。

在尝试在viewDidLoad呈现插页式广告之前,您是否调用了createNloadAd() ? 下载广告需要时间。

确保AdMob提供的AdUnitID与您使用的AdUnitID完全相同。

另外,将演示文稿从viewDidLoad移到viewDidAppear

以下是在我们的AppDelegate.swift中创build插页式广告并在ViewController.swift呈现插页式广告的示例:

AppDelegate.swift

 import UIKit import GoogleMobileAds // Import AdMob @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, GADInterstitialDelegate { // Include delegate var window: UIWindow? var myInterstitial : GADInterstitial? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // App launched // Load interstitial myInterstitial = createAndLoadInterstitial() return true } func createAndLoadInterstitial()->GADInterstitial { let interstitial = GADInterstitial(adUnitID: "Your Ad Unit ID") interstitial.delegate = self interstitial?.loadRequest(GADRequest()) return interstitial } func interstitialDidReceiveAd(ad: GADInterstitial!) { print("interstitialDidReceiveAd") } func interstitial(ad: GADInterstitial!, didFailToReceiveAdWithError error: GADRequestError!) { print(error.localizedDescription) } func interstitialDidDismissScreen(ad: GADInterstitial!) { print("interstitialDidDismissScreen") myInterstitial = createAndLoadInterstitial() } 

ViewController.swift (这将是你的游戏通过视图控制器)

 import UIKit class ViewController: UIViewController { let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate // Create reference to our app delegate override func viewDidLoad() { super.viewDidLoad() } override func viewDidAppear(animated: Bool) { appDelegate.myInterstitial?.presentFromRootViewController(self) } 

GitHub: https : //github.com/DanielStormApps/Shared-AdMob-Interstitial