[英]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.