iOS9的Admob和非页内广告

时间:2015-11-13 16:17:05

标签: ios swift admob

今天我注册了adMob,我开始在我的应用程序中处理adMob广告。第一个是游戏(带有viewcontrollers),我想在游戏结束后立即在屏幕上显示插页式广告,所以我想加载游戏结束后加载的间隙(此视图只有在游戏结束后才能访问,游戏持续一分钟,因此不应经常显示)

我在youtube和admob网站上看过很多教程,我有很多问题,比如: 即使我导入它也找不到admob框架, 当我构建时,我禁用了bitcode以避免链接器错误, 但我仍然无法在我的应用上,模拟器和真实设备上看到测试广告。

我导入了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网站上创建的插页式广告的ID,以及在教程中找到的其他字符串,但都没有用

在testdevices中我在输出中看到消息后添加了我的iphone的UDID,但我看不到任何测试广告,而且我根本没有错误

我没有触及故事板,我是否必须在故事板中创建一些内容?

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

也许代码是正确的,但如果应用程序未发布,则admob不会加载,或者我可能需要等待一天才能让我的admob id开始工作

我可以在哪里找到最近的admob ID进行测试? 所以我测试应用程序,如果有效,我改变了ID并提交

我正在使用Xcode 7.1,AdMob 7.5.2,我的应用程序部署目标是iOS7,我在带有iOS的模拟器和iOS7的旧iPhone4上进行了测试,这应该不是问题,因为admob甚至支持iOS6

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

1 个答案:

答案 0 :(得分:9)

  

即使我导入了AdMob框架

也找不到

删除框架并再次导入。确保您正在检查"如果需要复制项目"。另外,检查项目设置下的库搜索路径并构建阶段以查看框架是否包含。

  

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

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

  

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

没有

  

在将应用程序提交到App Store之前,我必须删除测试设备行并放入真正的AdUnitID吗?

是。立即尝试使用真实的AdUnitID来查看您的测试ID是否导致问题。

  

也许代码是正确的,但如果应用程序未发布,AdMob将无法加载,或者我可能需要等待一天才能开始使用我的AdMob ID

没有。该应用程序无需发布即可接收实时广告。

  

我可以在哪里找到最近的AdMob ID进行测试?所以我测试了应用程序,如果有效,我会更改ID并提交

无处。提供您的AdUnitID是不明智的。

  

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

在您的应用中使用尽可能多的广告网络。没有什么可以说明你是不允许的。

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

在尝试在createNloadAd()中展示插页式广告之前,您是否在呼叫viewDidLoad?下载广告需要时间。

确保AdMob提供的AdUnitID与您正在使用的AdUnit ID相同。

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

以下是我们AppDelegate.swift中创建插页式广告然后在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)
    }