c# - 如何检查奖励广告是否可用?
问题描述
我需要检查奖励视频是否已加载,所以我有这个功能:
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
这是奖励视频回调脚本: https ://pastebin.com/g65zjBwt
#编辑
IsAdAvailable()
我从exept
中删除了所有语句,AdmobController.instance.RequestRewardBasedVideo();
然后return true
运行我的程序,问题仍然存在,消息 Dummy IsLoaded 不断显示。所以我认为这个说法的问题AdmobController.instance.RequestRewardBasedVideo();
。
解决方案
您可以在Google AdMob 移动广告 SDK (Unity) 文档中阅读如何实施激励视频广告。
检查奖励视频是否已加载的最佳方法是挂钩 RewardBasedVideoAdOnAdLoaded
事件:
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);
}
您还应该使用事件来检查广告是否显示、关闭、点击等。
推荐阅读
- javascript - 如何在 react outlook-web-addin 中安全地更新 office-js-dependencies?
- javascript - 在 Jquery 中将天数添加到日期值
- mysql - Mysql Azure 没有连接到 Laravel
- angular - 依赖注入 - 如何在 Angular 8 的服务构造函数中使类动态化?
- asp.net - 使用 Content-Type 读取 HttpWebResponse:c# 中的 multipart/x-mixed-replace
- kotlin - 检查传递的参数是否是类的类型
- javascript - MongoDB 40415:BSON 字段“create.bsonType”是未知字段
- postman - 在 Postman 中断言数组中的元素
- azure - 如何配置两个前端应用在 Azure 应用服务上并行运行
- nagios - Nagios - 外部命令错误:命令失败