使用iOS9的Admob和非页内广告

Gio*_*ioB 0 admob ios swift

今天我注册了adMob,我开始在我的应用程序中处理adMob广告.第一个是游戏(带有viewcontrollers),我想在游戏结束后立即在屏幕上显示插页式广告,所以我想在之后加载插页式广告游戏超载的视图(此视图仅在游戏结束后才可访问,游戏持续一分钟,因此不应出现太频繁)

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

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

import GoogleMobileAds
Run Code Online (Sandbox Code Playgroud)

在viewcontroller里面

var interstitial: GADInterstitial!
func createNloadAd () -> GADInterstitial
{
    var ad = GADInterstitial(adUnitID: "XXX")



    var request = GADRequest()

    request.testDevices = [kGADSimulatorID]

    ad!.loadRequest(request)

    return ad

}
Run Code Online (Sandbox Code Playgroud)

在viewdidload中

self.interstitial = self.createNloadAd()
    if(self.interstitial!.isReady)
    {
        self.interstitial!.presentFromRootViewController(self)
        self.interstitial! = self.createNloadAd()
    }
Run Code Online (Sandbox Code Playgroud)

在adUnitID中,我尝试了在admob网站上创建的插页式广告的ID,以及在教程中找到的其他字符串,但都没有工作

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

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

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

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

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

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

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

Dan*_*orm 9

即使我导入了AdMob框架,也找不到它

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

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

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

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

没有

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

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

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

不可以.申请不必发布以接收实时广告.

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

无处.发布AdUnitID是不明智的.

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

在您的应用程序中使用尽可能多的广告网络.没有什么可以说你不被允许.


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

createNloadAd()在您尝试在您的插页式广告中展示之前,您是否在打电话viewDidLoad?下载广告需要时间.

确保AdMob提供的AdUnitID与您使用的AdUnit ID相同.

此外,将演示文稿从移动viewDidLoadviewDidAppear.

这是一个在我们中创建插页式广告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()
    }
Run Code Online (Sandbox Code Playgroud)

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)
    }
Run Code Online (Sandbox Code Playgroud)