LoginSignup
3
1

More than 3 years have passed since last update.

【Unity】バッチビルド時に、PlayServicesResolverを強制的にResolveしたい

Posted at

前提

  • Androidでプッシュ通知をしようと思ったら、Firebase Cloud Messaging を使う必要がある。
  • UnityでFirebase Cloud Messagingを使おうと思ったら、PlayServicesResolverと上手に付き合う必要がある。
  • PlayServicesResolverはapplicationIdentifierが変わるとResolveし直す必要がある。
  • バッチビルドで開発版/ストア版を切り替える時、applicationIdentifierを書き換えた直後に、明示的にResolveしたい。

解決法

BatchBuild.cs
// 強制的にResolve
GooglePlayServices.PlayServicesResolver.ResolveSync(true);
  • これで強制的にResolveされる模様。
  • どこにもドキュメントはないが、試しに使ってみたところ問題なさそう。(Unity2017.4.34とFirebase Unity SDK 5.7.0の場合)
  • 使う場合は自己責任で!

おまけ(Resolveを走らせたくない)

  • iOSの通知は従来の方法を使いたい。
  • 特にFirebaseの何かを使うわけじゃない。
  • Firebase Unity SDKはAndroid版だけ入れる手段がない。
  • iOSのビルド時、(大抵)ビルドが終わったタイミングでResolveが走ってしまう。
  • 大きな実害はないが、ログを汚してエラーを探しにくくなるし、ビルド時間がもったいない。
BatchBuild.cs
// iOSでは使わないので、自動Resolveを抑止
GooglePlayServices.PlayServicesResolver.UnlinkAutoResolution();
  • これもドキュメントされてないが、余計なResolveが走らなくなったことは確認。
  • もっとも、こちらは普段からAutoResolve設定をオフにしておくだけでいいのかもしれない。
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1