Intro
Once we publish our app in Google PlayStore and it's live for users to download, app reviews and rating is very crucial for your apps to rank and stand out from the competition. We usually put some buttons of popups in apps to redirect users to PlayStore to get ratings and reviews. Now there is a great chance that users won't come back to the app. To overcome this problem google came up with a pretty good solution named In-App Review
. This API helps us to show rating popup in our app itself so, the users don't have to leave your application.
Must know before implementation
-
In-App Review API
supports minimum API level 21. - The API itself decides how often the review popup will be shown. We should now call it very often because there is a limited quota it won't show after that.
- The review flow is also controlled by API itself. We should not try to alter that. Follow design guidelines for API
- The review flow doesn’t indicate whether the user has reviewed our app or not, also it doesn’t tell us anything about what the review widget has shown to the user or not.
Let's Integrate In-App Review API
Add the following dependencies in your App Level Gradle
file.
// Play core library
implementation 'com.google.android.play:core:1.10.3'
Open Main Activity
Now we will create an instance of the ReviewManager
interface, which will help us to start our review dialog. After creating an instance we will call the requestReviewFlow()
method which will return an object of ReviewInfo
class on successful completion. Now with the help of the ReviewInfo
class, we gonna call launchReviewFlow()
method. Hurray we just created a complete flow of In-App Review API
Now let's see how it looks like in real code.
Code Snippet
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.play.core.review.ReviewInfo;
import com.google.android.play.core.review.ReviewManager;
import com.google.android.play.core.review.ReviewManagerFactory;
import com.google.android.play.core.tasks.Task;
public class MainActivity extends AppCompatActivity {
private ReviewManager reviewManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize reviewManager
init();
}
// Initializing method for reviewManager
private void init() {
reviewManager = ReviewManagerFactory.create(this);
// Initializing button and setting click listener using lambda method
findViewById(R.id.rateApp).setOnClickListener(rate -> showRateApp());
}
// Shows the app rate dialog box using In-App review API
// The app rating dialog flow might or might not be shown depending on the quota limitation
public void showRateApp() {
Task <ReviewInfo> request = reviewManager.requestReviewFlow();
request.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
// Create ReviewInfo object instance
ReviewInfo reviewInfo = task.getResult();
// Calling launch method with reviewManager and pass context and reviewInfo as required parameter
Task <Void> flow = reviewManager.launchReviewFlow(this, reviewInfo);
flow.addOnCompleteListener(task1 -> {
// The flow has finished. The API does not indicate whether the user
// reviewed or not, or even whether the review dialog was shown.
});
}
});
}
}
Top comments (0)