AdMobのリワード広告を試しに設置しました。
RewardBasedVideoAdをインスタンス化してhandlerとして
HandleRewardBasedVideoRewarded()を付けました。
HandleRewardBasedVideoRewarded()はユーザーがリワード広告を最後までみた場合に
admob管理画面で登録しているTypeとamountを返してくるメソッドです。
テスト登録してある実機でテストしてみました。
リワード広告が表示されたので最後まで見ました。
しかしその後×をタップしてもなぜかイベントが返ってきません。
どこに問題があるのでしょうか?
ちなみにこのアプリ内にadmobの他の広告(バナー、インタースティシャル)も
設置してありますがこちらは問題なく表示されるのでassetsパッケージ自体は稼働しています。
エミュレータでもshowまでは発生しますがHandleRewardBasedVideoRewarded()は返ってきません。
環境)
PC: mac
Unity2018.2
言語:C#
using System.Collections; using System.Collections.Generic; using UnityEngine; using GoogleMobileAds.Api; using System; using UnityEngine.UI; public class RewardScript : MonoBehaviour { #pragma warning disable 649 [SerializeField] GameObject BaraiMessage; [SerializeField] GameObject BaraiDougaButton; [SerializeField] GameObject BaraiImage; private RewardBasedVideoAd rewardBasedVideo; // Start is called before the first frame update public void Start() { #if UNITY_ANDROID string appId = "appIdが入っている"; #elif UNITY_IPHONE string appId = "appIdが入っている"; #else string appId = "unexpected_platform"; #endif //Initialize Google Mobile Ads SDK MobileAds.Initialize(appId); //Get singleton reward 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; // Called when an ad is shown. rewardBasedVideo.OnAdOpening += HandleRewardBasedVideoOpened; // Called when the ad starts to play. rewardBasedVideo.OnAdStarted += HandleRewardBasedVideoStarted; rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded; // Called when the ad is closed. rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoClosed; // Called when the ad click caused the user to leave the application. rewardBasedVideo.OnAdLeavingApplication += HandleRewardBasedVideoLeftApplication; this.RequestRewardBasedVideo(); } public void PushWatchAd() { if(rewardBasedVideo.IsLoaded()) { rewardBasedVideo.Show(); Debug.Log("testshowSccess"); } } private void RequestRewardBasedVideo() { #if UNITY_ANDROID string adUnitId = "unitIdが入っている"; #elif UNITY_IPHONE string adUnitId = "unitIdが入っている"; #else string adUnitId = "unexpected_platform"; #endif AdRequest request = new AdRequest.Builder() .AddTestDevice("デバイスID") //テスト端末 .Build(); 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); } public void HandleRewardBasedVideoOpened(object sender, EventArgs args) { MonoBehaviour.print("HandleRewardBasedVideoOpened event received"); } public void HandleRewardBasedVideoStarted(object sender, EventArgs args) { MonoBehaviour.print("HandleRewardBasedVideoStarted event received"); } public void HandleRewardBasedVideoClosed(object sender, EventArgs args) { MonoBehaviour.print("HandleRewardBasedVideoClosed event received"); } public void HandleRewardBasedVideoRewarded(object sender, Reward args) { string type = args.Type; double amount = args.Amount; int setumeiImageId = PlayerPrefs.GetInt("yakubaraiid", 1); int yakuNum = PlayerPrefs.GetInt("yakunum"); yakuNum++; PlayerPrefs.SetInt("yakunum", yakuNum); PlayerPrefs.Save(); Debug.Log("The ad was succefully over"); //メッセージobjectをActiveにする。 BaraiMessage.SetActive(true); BaraiImage.GetComponent<Image>().sprite = Resources.Load<Sprite>("baraisetumei" + setumeiImageId.ToString()); BaraiDougaButton.SetActive(false); } public void HandleRewardBasedVideoLeftApplication(object sender, EventArgs args) { MonoBehaviour.print("HandleRewardBasedVideoLeftApplication event received"); } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。