使用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