簡體   English   中英

如何使用swift,spritekit和xcode調用admob插頁式廣告?

[英]How to call admob interstitial ad using swift, spritekit and xcode?

我一直在尋找答案,我在目標C(google開發人員文檔等)中找到了很多例子,並在swift中找到了一些答案,但沒有使用spritekit,而且是一個新手,我只是避風港我們能夠彌補這些教程中的差距,將它們整合到我的項目中。 老實說,我真的不在乎廣告是在應用推出或游戲結束時調用的,我只是很高興可以打電話給廣告時段,不過我猜游戲發布是首選。

很確定我已經在gameviewcontroller.swift中正確設置了所有內容,但我不知道如何實際調用它。 這是我的gameviewcontroller.swift中的代碼:

import UIKit
import SpriteKit
import GoogleMobileAds

class GameViewController: UIViewController {

    var interstitial : GADInterstitial!

 func createAndLoadAd() -> GADInterstitial {

        var ad = GADInterstitial()
        ad.adUnitID = "ca-app-pub-4471013071748494/2980967718"
        var request = GADRequest()
        request.testDevices = [""]

        return ad

    }

除此之外......我也有這個if語句來調用廣告,但我不知道它應該在哪里......或者它是否完整(在教程中,它是在按鈕中,但我需要它自動,自然:

if (self.interstitial.isReady) {
            self.interstitial.presentFromRootViewController(self)
            self.interstitial = self.createAndLoadAd()
        }

有人對此有經驗嗎? 如果有人可以通過讓我知道上述if語句的位置來幫助我完成這一點,或者如果還有更多需要做的話......我們將非常感謝您的幫助。 謝謝。

好的,我開始了一個新項目(Swift項目),這是一個游戲項目

在GameViewController中:

class GameViewController: UIViewController
{
var interstitial = GADInterstitial()

override func viewDidLoad()
{
    super.viewDidLoad()

    if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene
    {
        // Configure the view.
        let skView = self.view as! SKView
        skView.showsFPS = true
        skView.showsNodeCount = true

        /* Sprite Kit applies additional optimizations to improve rendering performance */
        skView.ignoresSiblingOrder = true

        /* Set the scale mode to scale to fit the window */
        scene.scaleMode = .AspectFill

        skView.presentScene(scene)



        let delayTime = dispatch_time(DISPATCH_TIME_NOW,
            Int64(5 * Double(NSEC_PER_SEC)))

        //Creation of the ad and its request
        self.interstitial = GADInterstitial()
        self.interstitial.adUnitID = "ca-app-pub-4798156420380453/7714267723"
        var request = GADRequest()
        // request.testDevices = [""]
        self.interstitial.loadRequest(GADRequest());//The method u were missing

        dispatch_after(delayTime, dispatch_get_main_queue())
        {
            self.showAd()
        }

    }
}



 func showAd()
 {
    if (self.interstitial.isReady)
    {
        self.interstitial.presentFromRootViewController(self)//Whatever  shows the ad
    }
}

這是我的第一個快速代碼,所以不要判斷我是否做錯了但是當我在±5秒后吃午飯時我看到廣告這是你的例子。

我根本不熟悉Swift,但你需要做的就是在它被解雇時獲得插頁式代表 - >並請求下一個插頁式廣告,所以下次你會得到新的廣告

隨意問什么! PS不要忘記將admob ID更改為您的ID。

我基於上述評論的解決方案如下:

1)在GameViewController.swift中添加它

protocol AdmobInterstitialDelegate{
    func showInterstitial()
}
...
// add this delegate in GameViewController definition
class GameViewController: UIViewController, GADInterstitialDelegate, AdmobInterstitialDelegate {
...
// and assign it to the GameScene class when you create its instance
     let scene = GameScene()
     scene.adDelegate = self
// do not forget to implement the delegated method itself
    func showInterstitial(){
        if (interstitial!.isReady) {
            interstitial!.presentFromRootViewController(self)             
        }
    }

然后你可以在GameScene中使用它

class GameScene: SKScene {
....
    var adDelegate: AdmobInterstitialDelegate?
....
// and finally - show the ad
    override func didMoveToView(view: SKView) {
        self.adDelegate?.showInterstitial();
        ....

希望這可以幫助。

在viewDidAppear中保持if條件它會自動執行

override func viewDidAppear(animated: Bool) {
        if (interstitial.isReady) {
        interstitial.presentFromRootViewController(self)
        self.interstitial = self.createAndLoadInterstitial()
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM