react-native-store-review
react-native-store-review copied to clipboard
Android: In App Review not launching on Samsung S10 (One Plus device working fine)
Current Behavior I am trying to test In App Review on Android on my Samsung S10 (Android 10). It only flashes the status bar and throws a mute exception as described below. This does not crash the app but does nothing on the UI as well. I tried the same thing on a One Plus device and everything is working fine. I get a dialog every time in the internal testing track.
E/Parcel: Class not found when unmarshalling: d.b.a.f.a.c.e
java.lang.ClassNotFoundException: d.b.a.f.a.c.e
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:454)
at android.os.Parcel.readParcelableCreator(Parcel.java:3350)
at android.os.Parcel.readParcelable(Parcel.java:3284)
at android.os.Parcel.readValue(Parcel.java:3186)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3579)
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:292)
at android.os.BaseBundle.unparcel(BaseBundle.java:236)
at android.os.BaseBundle.getString(BaseBundle.java:1196)
at android.content.Intent.getStringExtra(Intent.java:8889)
at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1122)
at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:888)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1706)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1556)
at com.android.server.wm.ActivityTaskManagerService.startActivity(ActivityTaskManagerService.java:1508)
at android.app.IActivityTaskManager$Stub.onTransact(IActivityTaskManager.java:1649)
at android.os.Binder.execTransactInternal(Binder.java:1190)
at android.os.Binder.execTransact(Binder.java:1159)
Expected Behavior Open the In App Review on Samsung S10 (Android 10)
Environment
| software | version |
|---|---|
| Android | |
| react-native-store-review | 0.2.0 |
| react-native | 0.63.3 |
| node | v12.16.1 |
| yarn | 1.22.4 |
I noticed that the anonymous class errors can be resolved by adding the following proguard rules:
# Play Core Proguard Rules: Play In-app Review
-keep class com.google.android.play.core.review.ReviewManager {
public com.google.android.play.core.tasks.Task requestReviewFlow();
public com.google.android.play.core.tasks.Task launchReviewFlow(android.app.Activity, com.google.android.play.core.review.ReviewInfo);
}
-keepnames class com.google.android.play.core.review.ReviewInfo
-keep class com.google.android.play.core.review.ReviewManagerFactory {
<init>();
public static com.google.android.play.core.review.ReviewManager create(android.content.Context);
}
-keep class com.google.android.play.core.review.testing.FakeReviewManager {
public <init>(android.content.Context);
public com.google.android.play.core.tasks.Task requestReviewFlow();
public com.google.android.play.core.tasks.Task launchReviewFlow(android.app.Activity, com.google.android.play.core.review.ReviewInfo);
}
And that changes the exception to be:
E/Parcel: Class not found when unmarshalling: com.google.android.play.core.review.d
java.lang.ClassNotFoundException: com.google.android.play.core.review.d
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:454)
at android.os.Parcel.readParcelableCreator(Parcel.java:3350)
at android.os.Parcel.readParcelable(Parcel.java:3284)
at android.os.Parcel.readValue(Parcel.java:3186)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3579)
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:292)
at android.os.BaseBundle.unparcel(BaseBundle.java:236)
at android.os.BaseBundle.getString(BaseBundle.java:1196)
at android.content.Intent.getStringExtra(Intent.java:8889)
at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1122)
at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:888)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1706)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1556)
at com.android.server.wm.ActivityTaskManagerService.startActivity(ActivityTaskManagerService.java:1508)
at android.app.IActivityTaskManager$Stub.onTransact(IActivityTaskManager.java:1649)
at android.os.Binder.execTransactInternal(Binder.java:1190)
at android.os.Binder.execTransact(Binder.java:1159)
Caused by: java.lang.ClassNotFoundException: com.google.android.play.core.review.d
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:454)
at android.os.Parcel.readParcelableCreator(Parcel.java:3350)
at android.os.Parcel.readParcelable(Parcel.java:3284)
at android.os.Parcel.readValue(Parcel.java:3186)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3579)
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:292)
at android.os.BaseBundle.unparcel(BaseBundle.java:236)
at android.os.BaseBundle.getString(BaseBundle.java:1196)
at android.content.Intent.getStringExtra(Intent.java:8889)
at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1122)
at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:888)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1706)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1556)
at com.android.server.wm.ActivityTaskManagerService.startActivity(ActivityTaskManagerService.java:1508)
at android.app.IActivityTaskManager$Stub.onTransact(IActivityTaskManager.java:1649)
at android.os.Binder.execTransactInternal(Binder.java:1190)
at android.os.Binder.execTransact(Binder.java:1159)
@oblador do you think we should add these proguard rules to the project itself?
Yeah, please make a PR 👍
App Review is not triggering on Android emulator, is it expected or an issue? But its working on ios
App Review is not triggering on Android emulator, is it expected or an issue? But its working on ios
@oblador Any suggestions please?
Adding those proguard rules kaushil111 mentioned above make it work on my dev device (Android 10, Samsung Galaxy A10). However, I'm being redirected to Google Play app instead of seeing the in-app review prompt.
The in-app prompt is shown correctly (and without the rules) on my Moto G first gen running Android 5 though.
I finally did showing review card.
bundle app with .aab and make new test track add personal email account to tester after app bundle is published at google play store, download it by test link with company account (if personal account, app name will be just app name. but if company account, it show (beta) at the end of app name) if you install beta app, change google play store account to personal account. clear google play store local data by Settings - Apps run installed app, and trigger in-app review API done! 🎉
is this resolved? Reviews still not showing up on the latest Android phones
Internal test but no dialog shown on android
App Review is not triggering on Android emulator, is it expected or an issue? But its working on ios
@oblador Any suggestions please?
has this been resolved?
work on ios, not on android, using galaxy s20s, s23, redmi note 8
any updates on reviews for Android?
You need to have play store installed on your simulator (and an app on play store) for it to work.
You need to have play store installed on your simulator (and an app on play store) for it to work.
Yes, I already have the package on android in a production app, works great!
Cool, closing this for now then!