AdMob と Nifty Cloud のプッシュ通知を共存させる [Unity]
下記の条件でNifty Cloudのプッシュ通知を使おうとしてドハマりしてしまったので、対策した方法をメモに残しておきます。
環境:
・Unity 5.4.3f1
・Google Mobile Ads Unity Plugin 3.0.5
上記環境で mobile backend のUnity用SDK「NCMB.2.2.0」をインストールして、Android用にビルドしたところ、
Uncaught translation error: java.lang.IllegalArgumentException: already added: ~~
という内容のエラーが出てビルドで出来ませんでした。
調べてみると、クラスファイルが重複しているらしく、いろいろ調べつつ試してみました。
結果としては、下記の方法でビルドが成功し、AdMobとPush通知も動作確認できました。
※いろいろ試している内に偶然できたその場しのぎな方法なので、もしこの問題でお困りの方は参考までにということで。。
まず「NCMB.2.2.0」でインポートした下記ファイルを削除します。
・Assets/Plugins/Android/android-support-v4.jar
・Assets/Plugins/Android/google-play-services.jar
・Assets/Plugins/Android/res/values/version.xml
次に
・Assets/PlayServicesResolver/Editor/AdMobDependencies.cs
のAdMobDependencies関数内に下記のコードを追加します。
svcSupport.DependOn("com.google.android.gms", "play-services-gcm", "LATEST");
次に、Unityのメニューから下記を実行します。
Assets > Google Play Services > Resolve Client Jars
すると下記画像のように「play-services-gcm-10.0.1.aar」が出来ます。
この状態でUnityからAndroid用にビルドすると成功して、AdMobもPush通知も動作しました。
【補足】
もし、「play-services-gcm-10.0.1.aar」はやっぱりいらないということになると、aarファイルを削除してもすぐに同ファイルが復活してしまいますので、復活させないようにするには下記の手順が必要です。
・「play-services-gcm-10.0.1.aar」を削除する。
・「Assets/PlayServicesResolver/Editor/AdMobDependencies.cs」で先ほど追加したコードを削除
・「ProjectSettings/GoogleDependencyAdMobUnity.xml」のそれらしい箇所を削除