こんにちは。virapture株式会社のもぐめっとです。
本日はAndroidでアプリ内レビューを表示することができるIn-App Review APIを動かそうとしたら動かなかったのでその解決tipsの紹介です。
どういうときに動くか
In-AppReviewはストアからダウンロードした形でないと動くことがありません。
また、他にも下記のような条件があったりします。
- ユーザー アカウントが内部テストトラックに含まれている。
- ユーザー アカウントがメイン アカウントであり、Play ストアでそのアカウントが選択されている。
- ユーザー アカウントが Play ストアからアプリをダウンロードした(アプリがユーザーの Google Play ライブラリに表示されている)。
- 現在、ユーザー アカウントがアプリをレビューしていない。
cf:
つまり簡単に言うとテストするときは内部テストでリリースしないとテストができません!なんてやりづらいのでしょう!
また、他にもUSBデバッグをOFFにしないと動かないといったこともあるみたいです。
ちなみに上記記事ではIn-AppReviewを出す前に1クッションいれた質問をいれてますが、In-AppReviewを出す前に質問を出すのはちょっとグレーです。
評価ボタンや評価カードを表示する前または表示中に質問をしない(「アプリを気に入りましたか?」といったユーザーの意見に関する質問や、「このアプリを 5 つ星と評価していただけますか?」といった予断を与える質問)。
更に動かない原因
先程説明した条件を満たしているのにも関わらず動かざることAndroidの如しで全くIn-App Reviewが表示されませんでした。
Crashlyticsで試しにログを飛ばしてみたらこんなエラーを飛んでいることが確認できました。
Non-fatal Exception: java.lang.Exception
AndroidJavaException : java.lang.ClassNotFoundException: com.google.android.play.core.review.ReviewManagerFactory
com.unity3d.player.UnityPlayer.nativeRender
なぜかClassが見つからないようです。
解決法
ということで上記エラーを調べたら答えがありました。
つまり、proguardに妨害されてるので下記を除外すればおkとのこと。
-keep class com.google.android.play.core.** { *; }
ということで自分のUnityプロジェクトのandroidのproguard設定に追記してビルドしたところ無事動くことが確認できました!
まとめ
produgardに設定を追加すればおk!!
めんどくさがらずちゃんとcrashlyticsでロガーを仕込むことは大事だなと思いました。
最後に、ワンナイト人狼オンラインというゲームを作ってます!よかったら遊んでね!
他にもCameconやOffchaといったサービスも作ってるのでよかったら使ってね!
また、チームビルディングや技術顧問、Firebaseの設計やアドバイスといったお話も受け付けてますので御用の方は弊社までお問い合わせください。