gpt4 book ai didi

ios - 在 iOS 游戏应用程序和 Swift 中使用 AdMob 插页式广告

转载 作者:搜寻专家 更新时间:2023-11-01 07:22:41 25 4
gpt4 key购买 nike

好的,我已经花了好几天时间来做这件事。我已经浏览了 admob 的教程、youtube、stack exchange 等所有内容,但我找不到解决问题的方法。

我正在尝试将 admob 的插页式广告实现到我的 iOS 游戏应用程序中。代码编译、构建、运行,游戏开始运行,但广告不会出现。这是我的 GameViewController.swift

import UIKit
import SpriteKit
import GoogleMobileAds


class GameViewController: UIViewController, GADInterstitialDelegate {

//AD STUFF-----------------------------vBELOWv----------------------------------------------
//AD STUFF-----------------------------vBELOWv----------------------------------------------
var interstitialAd: GADInterstitial?

func createInterstitialAd() -> GADInterstitial {
let request = GADRequest()
let interstitial = GADInterstitial(adUnitID: "ca-app-pub-******")
request.testDevices = [kGADSimulatorID, "C966DEAC-A2FD-4FBA-80B5-802B7E394C6D", "F3E1897A-3556-4704-9C85-3D70B4672F44","090DCEE5-6B1C-4DFB-83CE-FE800A242008", "1B93E43B-E9B3-4482-8B11-4F3614A26EA2"]
interstitial.delegate = self
interstitial.loadRequest(request)

return interstitial
}

//func to show the ad
func showAd() {
if interstitialAd != nil {
if interstitialAd!.isReady{
interstitialAd?.presentFromRootViewController(self)
}
else {print("found not ready")}
}
}

//func to pre-load new ad - calls automatically when closes an ad
func interstitialWillDismissScreen(ad: GADInterstitial!) {
interstitialAd = createInterstitialAd()

}
//AD STUFF--------------------------^ABOVE^--------------------------------------------------
//AD STUFF--------------------------^ABOVE^--------------------------------------------------

override func viewDidLoad() {
super.viewDidLoad()
interstitialAd = createInterstitialAd()
if let scene = GameScene(fileNamed:"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
scene.size = self.view.bounds.size
skView.presentScene(scene)
}
}

这就是我在 GameScene 中调用它的方式

//makes the restart button appear
func createRestartBTN(){
restartBTN = SKSpriteNode(color: SKColor.clearColor(), size: CGSize(width: 200, height: 100))
restartBTN.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame))
restartBTN.zPosition = 10

addChild(restartBTN)
createReplayText()
varForGVC.showAd()
}

所以当游戏结束时,一个函数使重新启动按钮出现。然后我想让我的插页式广告弹出,这样用户必须退出插页式广告才能点击重播按钮。该变量 varForGVC 是由 varForGVC = GameViewController()

在 GameScene.swift 中较早实现的

我的应用已与 Firebase 和 admob 同步。我的根目录中有 GoogleService-Info.plist。我的根目录中也有 admob 所需框架的列表。我在 Pod 中安装了 Firebase。我已经尝试将我在 GameViewController 中使用的代码放入我的 GameScene.swift 中,但它在那里也不起作用。我不知道这是否重要,但我的游戏有一个主屏幕,一个只能通过主屏幕访问的规则屏幕,然后用户点击播放按钮开始在另一个屏幕(GameScene)中玩游戏。我对 .isReady 的检查没有返回 found not ready。我需要一些帮助来解决这个问题。现在,我将尝试重新安装框架,看看是否可以。

最佳答案

这就是我处理来自 AdMob 的插页式广告的方式 - 使用扩展程序。我认为这是更干净的解决方案。希望对您有所帮助!

GameViewController.swift

class GameViewController: UIViewController {
var interstitial: GADInterstitial?

override func viewDidLoad() {
createInterstitial()
}

func presentInterstitial() {
guard let interstitial = self.interstitial where interstitial.isReady else {
return
}

dispatch_async(dispatch_get_main_queue(), {
interstitial.presentFromRootViewController(self)
})
}
}

GameViewController+GADInterstitialDelegate.swift

import GoogleMobileAds

extension GameViewController: GADInterstitialDelegate {
func interstitial(ad: GADInterstitial!, didFailToReceiveAdWithError error: GADRequestError!) {
print("\(#function): \(error.localizedDescription)")
}

func interstitialDidDismissScreen(ad: GADInterstitial!) {
// Recycle interstitial
createInterstitial()

unpauseGame() // Some method from GameViewController
}

func interstitialWillPresentScreen(ad: GADInterstitial!) {
pauseGame() // Some method from GameViewController
}

func createInterstitial() {
interstitial = GADInterstitial(adUnitID: interstitialAdUnitID)
interstitial!.loadRequest(AdMobHelper.createRequest())
interstitial!.delegate = self
}
}

最后一部分 - AdMobHelper.swift

import GoogleMobileAds

let interstitialAdUnitID = "Some Id"

class AdMobHelper {
static func createRequest() -> GADRequest {
let request = GADRequest()
request.testDevices = ["Check this in your logs"]
return request
}
}

关于ios - 在 iOS 游戏应用程序和 Swift 中使用 AdMob 插页式广告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37914084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com