質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AdMob

AdMobは、事前に指定した条件に従ってアプリに広告を表示するGoogleのサービス。開発者の向けのサービスで、広告を掲載することにより、収益を得ることが可能です。その他、見た目や雰囲気などアプリに合う広告に変更したり、広告表示の場所を指定することもできます。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1423閲覧

Unity AdMobのリワード動画広告終了後の報酬がもらえない?(rewardBasedVideo.OnAdRewardedが実行されていない?)

Z_Silver

総合スコア27

AdMob

AdMobは、事前に指定した条件に従ってアプリに広告を表示するGoogleのサービス。開発者の向けのサービスで、広告を掲載することにより、収益を得ることが可能です。その他、見た目や雰囲気などアプリに合う広告に変更したり、広告表示の場所を指定することもできます。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2019/10/24 13:21

編集2019/10/25 17:21

###前提・実現したいこと
参考サイトをもとに
リワード広告を組み込みボタンを押すと動画が再生される所まで実装できたのですが、
報酬受け取り時の処理が動作していないみたいで、
動作チェックとしてDebug.Logで確認した所、表示されず、
PlayerPrefsで値を取得させる命令文を記載しましたが値の保存ができていませんでした。
そのため動画終了後の報酬が発生しない(取得できていない)状態に陥り困っています。
ご教示いただけますと幸いです。

※報酬はゲーム中のステージをスキップする(クリア状態にする)を考えております。
「PlayerPrefs.SetInt("CLEAR", stageNumber);」(下記のスキップボタンソースより)

###該当のソースコード

using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using GoogleMobileAds.Api; public class AdMob_Reward : MonoBehaviour { public string adUnitId = "テスト用ID"; private RewardBasedVideoAd rewardBasedVideo; private AdRequest request; private static bool rewardBasedEventHandlersSet = false; // Use this for initialization void Awake() { rewardBasedVideo = RewardBasedVideoAd.Instance; //広告の読み込み RequestRewardBasedVideo(); } public void RequestRewardBasedVideo() { // Create an empty ad request. request = new AdRequest.Builder() .AddTestDevice(AdRequest.TestDeviceSimulator) .Build(); // Reward based video instance is a singleton. Register handlers once to avoid duplicate events. if (!rewardBasedEventHandlersSet) { rewardBasedVideo.OnAdLoaded += HandleRewardBasedVideoLoaded; // ad has been received. rewardBasedVideo.OnAdFailedToLoad += HandleRewardBasedVideoFailedToLoad;// ad has failed to load. rewardBasedVideo.OnAdOpening += HandleRewardBasedVideoOpened; // ad is opened. rewardBasedVideo.OnAdStarted += HandleRewardBasedVideoStarted; // ad has started playing. rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded; // ad has rewarded the user. rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoClosed; // ad is closed. rewardBasedVideo.OnAdLeavingApplication += HandleRewardBasedVideoLeftApplication; // ad is leaving the application. rewardBasedEventHandlersSet = true; } // Load the rewarded video ad with the request. rewardBasedVideo.LoadAd(request, adUnitId); } //リワード広告の表示 public void Show(Action handler) { //もしも動画のロードがされていたら if (rewardBasedVideo.IsLoaded()) { //動画を再生 rewardBasedVideo.Show(); Debug.Log("広告を再生しました");//表示されるのを確認 } } //動画ロード時のハンドラ― public void HandleRewardBasedVideoLoaded(object sender, EventArgs args) { } //動画ロード失敗時のハンドラ― public void HandleRewardBasedVideoFailedToLoad(object sender, EventArgs args) { StartCoroutine(_waitConnectReward()); } //動画が開かれた時のハンドラ― public void HandleRewardBasedVideoOpened(object sender, EventArgs args) { } //動画が再生された時のハンドラ― public void HandleRewardBasedVideoStarted(object sender, EventArgs args) { } //動画を見た後にプレイヤーに与える恩恵を用意 public void HandleRewardBasedVideoRewarded(object sender, Reward args) { //報酬受け取り時の処理(動作していない?) ///////////////////////////////////////////////////////// Debug.Log("報酬を受け取りました"); [➨表示されない]*      //int Housyu = PlayerPrefs.GetInt("REWARD"); //Housyu++; //PlayerPrefs.SetInt("REWARD", Housyu); ///////////////////////////////////////////////////////// StartCoroutine(_waitConnectReward()); } //動画が閉じた時のハンドラ― public void HandleRewardBasedVideoClosed(object sender, EventArgs args) { //動画を閉じたときに、次の動画を読み込む if (!rewardBasedVideo.IsLoaded()) { rewardBasedVideo.LoadAd(request, adUnitId); // Load } } //動画が終わった後にアプリにリワードを送信する時のハンドラ― public void HandleRewardBasedVideoLeftApplication(object sender, EventArgs args) { } // ロードに失敗した場合、1秒待ってから再ロードをする IEnumerator _waitConnectReward() { while (true) { yield return new WaitForSeconds(1.0f); // 通信ができない場合は、リロードしない if (Application.internetReachability != NetworkReachability.NotReachable) { RequestRewardBasedVideo(); break; } } } } ``` ###スキップボタンのソースコード

//ボタン動作
public void PushButton()
{
admob_Reward.Show();//広告再生

if(「報酬」 >=1)//報酬の値を受け取った時
{
PlayerPrefs.SetInt("CLEAR", stageNumber);ゲームをクリア扱いにする
SceneManager.LoadScene("StageSelect");ステージセレクト画面へ
}
}

※広告はテスト用を使用しています。 参考サイト; www.hanachiru-blog.com/entry/2018/10/07/022440 hatenyan.blogspot.com/2018/04/admob-adsense.html Unity 2019.2.8f1 言語:C#

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

動画を表示する

任意のクラスで表示したいところに以下のコードを入れます。

AdMobReward.instance.Show(() => { //ここに動画を無事に視聴し終わったときの処理を書く });

こちらに書いてあるので

//ボタン動作 public void PushButton() { AdMobReward.instance.Show(() => {   if(「報酬」 >=1)//報酬の値を受け取った時       {        PlayerPrefs.SetInt("CLEAR", stageNumber);ゲームをクリア扱いにする        SceneManager.LoadScene("StageSelect");ステージセレクト画面へ       } }); }

のような記載になるのではないでしょうか?

投稿2019/10/25 08:14

編集2019/10/25 08:15
harunasan

総合スコア125

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Z_Silver

2019/10/25 17:01

ご回答有難うございます。 どうも他の参考にしていたサイトのソースがごちゃまぜになっていたみたいで、 もう一度新しく広告側のソースを作りなおして harunasan様の記載さえれている通り報酬の部分を追加した所無事報酬を受け取ることができました。 有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問