Android Play Core InAppReviewApiダイアログが表示されない
Aug 21 2020
本日リリースされたばかりのGoogleのReviewAPI(Play Coreライブラリ1.8.0)を利用しようとしています。見るhttps://developer.android.com/guide/playcore/in-app-review。私は現在、次のコードを使用してそれを使用しています:
public void inAppReview() {
ReviewManager reviewManager = ReviewManagerFactory.create(getActivity());
Task<ReviewInfo> request = reviewManager.requestReviewFlow();
request.addOnCompleteListener(new OnCompleteListener<ReviewInfo>() {
@Override
public void onComplete(@NonNull Task<ReviewInfo> task) {
if (task.isSuccessful()) {
ReviewInfo reviewInfo = task.getResult();
Task<Void> flow = reviewManager.launchReviewFlow(getActivity(), reviewInfo);
flow.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.e("task<void>", task.isComplete() + "");
Log.e("task<void>", task.isSuccessful() + "");
}
}).addOnFailureListener(new com.google.android.play.core.tasks.OnFailureListener() {
@Override
public void onFailure(Exception e) {
}
});
} else {
Log.e("Review error", "Review error");
}
}
}).addOnFailureListener(new com.google.android.play.core.tasks.OnFailureListener() {
@Override
public void onFailure(Exception e) {
Log.e("Review error", "Review error");
}
});
}
Google Playデベロッパーコンソールの内部テストトラックを使用してテストしましたが、残念ながら、テストアカウントでレビューダイアログが表示されません。私は何が間違っているのですか?
回答
PhantomLord Aug 30 2020 at 01:03
私もこれを調査しようとしています。たぶん、proguardはPlayCoreのいくつかのクラスを難読化します。すべてのクラスをPlayコア、Parcelable、Serializableに保持するようにしてください。ただし、logcatにはエラーがあります。
-keep class * implements com.google.android.play { *; }
-keep class com.google.android.play.** { *; }
-keep interface com.google.android.play.** { *; }
-keepclassmembers class * implements android.os.Parcelable {
static *** CREATOR;
}
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}