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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Unity

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

1回答

5395閲覧

【Unity iOS】AdMob動画リワード広告を閉じた時にクラッシュする

intenseG

総合スコア34

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Unity

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

2クリップ

投稿2017/08/13 13:23

編集2017/08/14 07:48

###前提・実現したいこと
Unityで書き出したiOS用プロジェクトをiPhone6sの実機でテストをしたのですが、動画リワード広告を閉じようと×ボタンを押そうとした時にクラッシュしてアプリが落ちてしまいます。

Xcode側でフレームワークが足りているかを確認したり、Build Settingがおかしくないかどうかなど、手は尽くしましたが解決には至りませんでした。

【追記】動画広告を閉じた時にXcode側で発生したエラーメッセージ

il2cpp::vm::Exception::Raise:

エラー画像

少ない情報ですが、解決策がありましたらよろしくお願いします。

###コード

C#

1 void Awake() 2 { 3 AdMobManager.bannerView.Destroy(); 4 5 pushAdFlag = false; 6 adCloseFlag = false; 7 8 RequestRewardBasedVideo(); 9 } 10 11 void Update() 12 { 13 if (pushAdFlag && adCloseFlag) 14 { 15 /* ここで報酬受け渡し処理 */ 16 17 pushAdFlag = false; 18 adCloseFlag = false; 19 } 20 } 21 22 private void RequestRewardBasedVideo() 23 { 24 string adUnitId = ios_Reward; 25 26 rewardBasedVideo = RewardBasedVideoAd.Instance; 27 28 AdRequest request = new AdRequest.Builder() 29 .AddTestDevice(AdRequest.TestDeviceSimulator) 30 .Build(); 31 32 rewardBasedVideo.LoadAd(request, adUnitId); 33 34 if (!rewardBasedEventHandlersSet) 35 { 36 // has rewarded the user. 37 rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded; 38 39 rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoRewardedClosed; 40 41 rewardBasedVideo.OnAdFailedToLoad += HandleRewardBasedVideoRewardedFailed; 42 43 rewardBasedEventHandlersSet = true; 44 } 45 } 46 47 // 動画再生 48 public void pushAds() 49 { 50 if (rewardBasedVideo.IsLoaded()) 51 { 52 rewardBasedVideo.Show(); 53 } 54 } 55 56 public void HandleRewardBasedVideoRewardedFailed(object sender, AdFailedToLoadEventArgs args) 57 { 58 Debug.Log ("動画を読み込めませんでした。"); 59 60 StartCoroutine (WaitConnectReward()); 61 62 print("HandleRewardBasedVideoFailedToLoad event received with message: " + args.Message); 63 } 64 65 public void HandleRewardBasedVideoRewardedClosed(object sender, System.EventArgs args) 66 { 67 //ボタンの状態を変更する 68 setButtonsEnabled(true, true, true, true, false, false); 69 70 RequestRewardBasedVideo (); 71 72 adCloseFlag = true; 73 74 print("HandleRewardBasedVideoClosed event received"); 75 } 76 77 public void HandleRewardBasedVideoRewarded(object sender, Reward args) 78 { 79 string type = args.Type; 80 double amount = args.Amount; 81 print("HandleRewardBasedVideoRewarded event received for " + amount.ToString() + " " + type); 82 83 //ボタンの状態を変更する 84 setButtonsEnabled(false, false, false, true, false, false); 85 86 pushAdFlag = true; 87 } 88 89 // ロードに失敗した場合、15秒待ってから再ロードをする 90 IEnumerator WaitConnectReward() 91 { 92 while (true) 93 { 94 yield return new WaitForSeconds(15.0f); 95 96 // 通信ができない場合は、リロードしない 97 if (Application.internetReachability != NetworkReachability.NotReachable) 98 { 99 RequestRewardBasedVideo(); 100 break; 101 } 102 } 103 } 104

###補足情報
開発ツール:Unity 2017.1.0f3
テスト用実機:iPhone6s

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

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

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

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

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

guest

回答1

0

ベストアンサー

setButtonsEnabled()の中身はどうなってますか?
報酬受け渡しの時にUpdateでフラグ処理されているのでUnityのAPIがシングルスレッドで別スレッドからアクセスできないのはご存知かと思いますが、setButtonsEnabled()内でUnity APIにアクセスしていないか気になりました。

もし試されていないのでしたらsetButtonsEnabled()を消して実行してみてください。それで落ちないならsetButtonsEnabled()をUpdate内に移動すると良いかと思います。

投稿2017/08/17 09:44

IShix

総合スコア1724

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

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

intenseG

2017/08/17 10:30

setButtonEnabled()をUpdate内に移したら問題なく動作しました~! おそらく、setButtonEnabled()でSetActiveを呼んでいたのが問題だったみたいです。 大変勉強になりました。ありがとうございました!
IShix

2017/08/17 10:41

解決できてよかったです。広告実装大変ですよね。がんばってください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問