[英]How to check if Rewarded Ads are available?
我需要檢查獎勵視頻是否已加載,所以我具有以下功能:
private bool IsAdAvailable()
{
if (AdmobController.instance.rewardBasedVideo == null) return false;
bool isLoaded = AdmobController.instance.rewardBasedVideo.IsLoaded();
if (!isLoaded)
{
AdmobController.instance.RequestRewardBasedVideo();
}
return isLoaded;
}
這是RequestRewardBasedVideo函數:
public void RequestRewardBasedVideo()
{
#if UNITY_ANDROID
string adUnitId = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
string adUnitId = "ca-app-pub-3940256099942544/1712485313";
#else
string adUnitId = "unexpected_platform";
#endif
// Create an empty ad request.
AdRequest request = new AdRequest.Builder().Build();
// Load the rewarded video ad with the request.
this.rewardBasedVideo.LoadAd(request, adUnitId);
}
這是顯示獎勵視頻的功能(如果已加載),否則顯示該消息給用戶。
public void ShowRewardedAds()
{
if (rewardBasedVideo.IsLoaded())
{
rewardBasedVideo.Show();
}
else
{
MonoBehaviour.print("Reward based video ad is not ready yet");
}
}
但是,當我統一運行程序時,在控制台中此消息將不斷顯示:
Dummy IsLoaded
UnityEngine.Debug:Log(Object)
就像程序不斷檢查獎勵視頻是否已加載。
我試圖刪除IsAdAvailable()
所有語句,但return isLoaded
除外,我將其替換為return true
。
並且消息停止顯示,沒有停止,它只顯示了一次。 這就是我想要的。
那么,有沒有更好的方法來檢查獎勵視頻是否已加載?
如果您需要有關我的代碼的更多信息,請隨時詢問。
這是我的Admob控制器腳本: https : //pastebin.com/TNNPKxQF
這是獎勵的視頻按鈕腳本: https : //pastebin.com/FipHV9wt
這是Rewarded Video CallBack腳本: https : //pastebin.com/g65zjBwt
#編輯
我從IsAdAvailable()
刪除了所有語句, IsAdAvailable()
AdmobController.instance.RequestRewardBasedVideo();
並return true
然后我運行我的程序,問題仍然存在,消息Dummy IsLoaded不斷顯示,沒有停止。 所以我認為此語句AdmobController.instance.RequestRewardBasedVideo();
。
您可以在Google AdMob移動廣告SDK(統一)文檔中閱讀如何實施獎勵視頻廣告。
檢查獎勵視頻是否已加載的最好方法是,鈎入RewardBasedVideoAd OnAdLoaded
事件:
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
private RewardBasedVideoAd rewardBasedVideo;
...
public void Start()
{
// Get singleton reward based video ad reference.
this.rewardBasedVideo = RewardBasedVideoAd.Instance;
// Called when an ad request has successfully loaded.
rewardBasedVideo.OnAdLoaded += HandleRewardBasedVideoLoaded;
// Called when an ad request failed to load.
rewardBasedVideo.OnAdFailedToLoad += HandleRewardBasedVideoFailedToLoad;
this.RequestRewardBasedVideo();
}
private void RequestRewardBasedVideo()
{
#if UNITY_ANDROID
string adUnitId = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
string adUnitId = "ca-app-pub-3940256099942544/1712485313";
#else
string adUnitId = "unexpected_platform";
#endif
// Create an empty ad request.
AdRequest request = new AdRequest.Builder().Build();
// Load the rewarded video ad with the request.
this.rewardBasedVideo.LoadAd(request, adUnitId);
}
public void HandleRewardBasedVideoLoaded(object sender, EventArgs args)
{
MonoBehaviour.print("HandleRewardBasedVideoLoaded event received");
}
public void HandleRewardBasedVideoFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
MonoBehaviour.print(
"HandleRewardBasedVideoFailedToLoad event received with message: "
+ args.Message);
}
您還應該使用事件檢查廣告是否已顯示,關閉,點擊等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.