我需要检查是否加载了奖励视频,所以我有以下功能:
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替换了它。
这条信息没有停止显示,它只显示了一次。这就是我想要的。
那么,是否有更好的方法来检查奖励视频是否已加载?
如果您需要更多关于我的代码的信息,可以随意询问。
这是我的ad暴徒控制器脚本:https://pastebin.com/TNNPKxQF
这是奖励视频按钮脚本:https://pastebin.com/FipHV9wt
这是奖励视频CallBack脚本:https://pastebin.com/g65zjBwt



#编辑
我删除了IsAdAvailable()、exept AdmobController.instance.RequestRewardBasedVideo();和return true中的所有语句,运行了我的程序,问题仍然存在,消息虚拟IsLoaded不停地显示。因此,我认为问题来自于这个声明,AdmobController.instance.RequestRewardBasedVideo();。
发布于 2019-01-30 12:03:48
您可以阅读如何在Google AdMob Mobile Ads SDK (Unity) documentation.中实现奖励视频广告。
查看奖励视频是否已加载的最佳方法是链接到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);
}您还应该使用事件来检查广告是否显示、关闭、单击等。
https://stackoverflow.com/questions/54438278
复制相似问题