我試圖在每次我的遊戲轉換到GameOver場景時顯示AdMob插頁式廣告。但是,只有在我的視圖控制器中將其初始化函數放入我的viewDidLoad()函數中時,廣告纔會顯示。我在遊戲中設置了一個通知中心,並且在進入GameOver場景時嘗試發送通知,以觸發初始化廣告的功能,但這並沒有成功。我想知道如何在任何給定的時間從場景中觸發它,而不是在應用程序啓動後立即顯示它,這是將它放在視圖控制器的viewDidLoad函數中。SpriteKit中的AdMob插頁式廣告遊戲
在我GameViewController是這兩個函數:
public func initAdMobInterstitial() {
adMobInterstitial = GADInterstitial(adUnitID: AD_MOB_INTERSTITIAL_UNIT_ID)
adMobInterstitial.delegate = self
let request = GADRequest()
request.testDevices = ["ddee708242e437178e994671490c1833"]
adMobInterstitial.load(request)
}
func interstitialDidReceiveAd(_ ad: GADInterstitial) {
ad.present(fromRootViewController: self)
}
這裏我註釋掉initAdMobInterstitial,但是當它被註釋掉的廣告彈出並正常工作。這個彈出窗口會在應用第一次啓動時發生。
override func viewDidLoad() {
super.viewDidLoad()
//initAdMobInterstitial()
initAdMobBanner()
NotificationCenter.default.addObserver(self, selector: #selector(self.handle(notification:)), name: NSNotification.Name(rawValue: socialNotificationName), object: nil)
let scene = Scene_MainMenu(size: CGSize(width: 1024, height: 768))
let skView = self.view as! SKView
skView.isMultipleTouchEnabled = true
skView.ignoresSiblingOrder = true
scene.scaleMode = .aspectFill
_ = SGResolution(screenSize: view.bounds.size, canvasSize: scene.size)
skView.presentScene(scene)
}
現在,在我的一個場景中,名爲GameOver,我希望廣告彈出。每當場景出現時我都希望它出現,所以每次玩家輸掉遊戲時都會出現。使用通知中心,你可以在我的視圖控制器類看,我試圖發送一個通知,並將它處理...
override func didMove(to view: SKView) {
self.sendNotification(named: "interNotif")
}
...通過這個功能,也是在發現視圖控制器類
func handle(notification: Notification) {
if (notification.name == NSNotification.Name(rawValue: interstitialNotificationName)) {
initAdMobInterstitial()
}
}
另請注意,在我的視圖控制器我已經宣佈interstitialNotificationName等於字符串「interNotif」來匹配發送的通知。
請分享你的一些代碼。 – Evana