2017-07-16 46 views
0

我已經在我的應用中使用Firebase實施了獎勵視頻。 https://developers.google.com/admob/ios/rewarded-videoFirebase激勵視頻代表方法不叫

我已經導入下面的(關於廣告):

import Firebase 
import GoogleMobileAds 

class ViewController: UIViewController, MFMailComposeViewControllerDelegate, GKGameCenterControllerDelegate, GADInterstitialDelegate, GADRewardBasedVideoAdDelegate, UIAlertViewDelegate {...} 

所以我成立了代表和我加載廣告:

rewardBasedVideo = GADRewardBasedVideoAd.sharedInstance() 
    rewardBasedVideo.delegate = self 
    if !adRequestInProgress && rewardBasedVideo?.isReady == false { 
     GADRewardBasedVideoAd.sharedInstance().delegate = self 
     rewardBasedVideo?.load(GADRequest(), 
           withAdUnitID: "ca-app-pub...") 
     adRequestInProgress = true 
    } 
我照着這個頁面做了一切必要的

我又撥打了廣告,當我按下一個按鈕:

if rewardBasedVideo?.isReady == true { 
     rewardBasedVideo?.present(fromRootViewController: self) 

    if !adRequestInProgress && rewardBasedVideo?.isReady == false { 
     rewardBasedVideo?.load(GADRequest(), 
           withAdUnitID: "ca-app-pub-3940256099942544/1712485313") 
      //ca-app-pub-8020832369894951/1361675226 
     adRequestInProgress = true 
    } 

然後,我把所有的對於委託功能:

func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd, 
         didRewardUserWith reward: GADAdReward) { 
    print("You eaerned $\(abbreviateNumber(num: (moneyPerSecond * 360.0) as NSNumber))") 
    money = UserDefaults.standard.double(forKey: moneyKey) 
    money += moneyPerSecond * 360.0 
    UserDefaults.standard.set(money, forKey: moneyKey) 
} 

func rewardBasedVideoAdDidReceive(_ rewardBasedVideoAd: GADRewardBasedVideoAd) { 
    adRequestInProgress = false 
    print("Reward based video ad is received.") 
} 

func rewardBasedVideoAdDidOpen(_ rewardBasedVideoAd: GADRewardBasedVideoAd) { 
    print("Opened reward based video ad.") 
} 

func rewardBasedVideoAdDidStartPlaying(_ rewardBasedVideoAd: GADRewardBasedVideoAd) { 
    print("Reward based video ad started playing.") 
} 

func rewardBasedVideoAdDidClose(_ rewardBasedVideoAd: GADRewardBasedVideoAd) { 
    print("Reward based video ad is closed.") 
} 

func rewardBasedVideoAdWillLeaveApplication(_ rewardBasedVideoAd: GADRewardBasedVideoAd) { 
    print("Reward based video ad will leave application.") 
} 

func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd, 
         didFailToLoadWithError error: Error) { 
    print("Reward based video ad failed to load.") 
} 

會出現以下情況:我可以加載廣告(在此之後,rewardBasedVideoAdDidReceive運行),我可以觀看廣告,關閉廣告。但是,應該獎勵用戶的功能不會運行。我需要知道爲什麼這不能正確運行,所以我可以正確地獎勵用戶。

回答

0

你有沒有想過這個問題? 我想我剛碰到同樣的問題。

我完全按照你在本節所做的操作「我也在按下按鈕時調用廣告:」。如果廣告未準備好,我嘗試在按「播放廣告」時加載另一個廣告。

展示廣告後,「isReady」將被設置爲零。因此,在您的情況下,您將始終在展示一個廣告後立即加載另一個廣告。出於某種原因,當前正在投放的廣告完成後將不會觸及rewardBasedVideoAd方法。

因此,解決方案應該是在廣告未準備就緒的情況下刪除加載另一個廣告。我建議在完成rewardBasedVideoAd之後立即加載另一個廣告。

所以更改此設置:

if rewardBasedVideo?.isReady == true { 
    rewardBasedVideo?.present(fromRootViewController: self) 

if !adRequestInProgress && rewardBasedVideo?.isReady == false { 
    rewardBasedVideo?.load(GADRequest(), 
          withAdUnitID: "ca-app-pub-3940256099942544/1712485313") 
     //ca-app-pub-8020832369894951/1361675226 
    adRequestInProgress = true 
} 

這樣:

if rewardBasedVideo?.isReady == true { 
    rewardBasedVideo?.present(fromRootViewController: self) 
}