そういうのがいいブログ

アプリ個人開発 まるブログ

アプリ開発覚え書き

【Unity】AdMob GoogleMobileAds-v5.4.0 を v6.0.0に上げた際のエラー対応

環境

macOS 11.3
Google Mobile Ads Unity Plugin v6.0.0
Xcode 12.5
Unity 2020.3.2f1

はじめに

AdMobのプラグイン
GoogleMobileAdsの新しいバージョン6.0.0が半年ぶりくらいにでました。
そして、 v5.4.0からv6.0.0へ上げたら大量のエラーが出たので対応した話です。

https://pbs.twimg.com/media/E18jEzLUYAQKpHQ?format=jpg&name=large

結論 まだバージョンを上げてはいけない

だいたいのエラーは取り除けましたが、下記のエラーが発生しています。
これはプラグイン起因のようで、iOSのビルドが通らない状態です。
(Androidは実機で問題なく広告表示できることを確認しました。)

なので、プラグインのアップデートを待ちたいと思います。

github.com

<追記 2021年8月4日>
プラグインバージョンv6.0.2を新規プロジェクトに入れた状態で
ビルドした場合、エラーが出ないことを確認しました。
ただ、admobのアプリIDがUnityを開く度に消えてしまうのは直っていません。

<追記 2021年10月1日> 
アプリIDは"おわりに"の項目に追記した内容で保存されます。 v6.0.2にして問題無さそうです。

対応

エラーの読み込み方法の変更

×旧:args.Message
◯新:args.LoadAdError

//バナー読み込み失敗 となった時に起動する関数
    public void HandleAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {    
        //×旧:args.Message
        //◯新:args.LoadAdError
        Debug.Log("バナー読み込み失敗" + args.LoadAdError);//args.LoadAdError:エラー内容 
    }

テストデバイス設定の削除

アダプティブバナーのサンプルコードに下記がありますが、
AddTestDeviceは使えなくなっているので削除します。
(テストデバイスの設定はadmobの設定画面から行えますので無くても問題ないです。)

AdRequest adRequest = new AdRequest.Builder()
            .AddTestDevice(AdRequest.TestDeviceSimulator)
            .AddTestDevice("0123456789ABCDEF0123456789ABCDEF")
            .Build();

変更後

AdRequest adRequest = new AdRequest.Builder().Build();

エラーの型変更

リワード広告のサンプルコードではこのようになっています。

//旧 v5.4.0
 //リワード読み込み失敗 となった時に起動する関数
    public void HandleRewardedAdFailedToLoad(object sender, AdErrorEventArgs args)
    {
        Debug.Log("リワード広告読み込み失敗" + args.Message);//args.Message:エラー内容 
    }

変更
・AdErrorEventArgs→AdFailedToLoadEventArgs
・args.Message→args.LoadAdError

//新 v6.0.0
 //リワード読み込み失敗 となった時に起動する関数
    public void HandleRewardedAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        Debug.Log("リワード広告読み込み失敗" + args.LoadAdError);//args.LoadAdError:エラー内容 
    }

不要なデータを削除

1.データ削除

v6.0.0を入れた新規プロジェクトと見比べたところ、
いろいろとゴミがありました。
一旦GoogleMobileAdsとPluginsを消して入れ直したらエラーが解消されました。

2.アプリIDの再設定

アプリIDの情報も一緒に消えてしまうのでアプリIDを再設定してください。
また、Unityを開き直した際、アプリIDは保存されないため再度入力が必要です。
→アセット
Google Mobile Ads
→Settings

3.iOSプラグイン再設定

ATT対応でiOSプラグインにファイルを追加している場合は再追加をお忘れなく! marumaro7.hatenablog.com

iOS設定

下記2点の変更が必要です。
・Cocoapods integrarionを
 Xcode Project - Add Cocoapods to the Xcode projectへ変更
 (元から設定していても、データを消したせいかデフォルトに戻っていました。)
・Link frameworks staticallyを有効

→アセット
→External Dependency Manager
iOS Resolver
→設定

CocoaPodsのアップデート

ここまでの設定するとコード上のエラーはなくなります。
しかし、ビルド後、下記のエラーが出るようになりました。

エラー抜粋

Analyzing dependencies [!] GoogleAppMeasurement requires CocoaPods version >= 1.10.0, which is not satisfied by your current version, 1.9.1.


依存関係の分析[!] GoogleAppMeasurementにはCocoaPods
バージョン> = 1.10.0が必要ですが、これは現在のバージョン 1.9.1では満たされていません。

ということでCocoaPodsのバージョンを上げました。

marumaro7.hatenablog.com

おわりに

アプリIDが保存されないうちは前バージョンのv5.4.0が無難ですね。
(自動設定することもできるようですが、いじりたくない)

<追記 2021年10月1日> 
アプリID入力画面にて、
Delay app measurmentのチェックを付けて外せばアプリIDが保存されます。


最後に宣伝させてください。
アプリ開発を始めて丸2年が経ち、
節目としてなにか形にしたいと思い、Udemy講座を出しました!
www.udemy.com

ブログ限定割引リンクは私のプロフィールページにあります。
アプリ開発収益化を時短したい方向けの講座となっております。

Unity本を出版しました!

突然ですが、Unity本を出版しました!
こちらを読むことで、スクリプトの基礎固めができます!
現在、kindle unlimitedで読み放題設定中です。今のうちにどうぞ!


もっと早く教えてほしかった!Unity C#入門

参考

github.comdevelopers.google.com

guides.cocoapods.org qiita.com

t.co