Reputation: 19159
The documentation states on a topic when to ask for a review:
Trigger the in-app review flow after a user has experienced enough of your app or game to provide useful feedback.
Do not prompt the user excessively for a review. This approach helps minimize user frustration and limit API usage (see the section on quotas).
But that's very vague, can we trigger it quite often (like after every level in a game) or should we add some wait periods inside the app (like after every level but minimum wait time a month)?
There is a similar API on iOS and it's observed that the popup shows "about three times a year". It would be helpful to know similar rough estimate, it would help to design right usage of the API and remove unnecessary user frustration.
Upvotes: 34
Views: 12853
Reputation: 67
Google Review Dialog API
API Version
implementation 'com.google.android.play:core:1.8.0'
Their is flag via which we can know that Dialog is open/shown or not i have used it and it is working , this is the key "isNoOp" when it is false then dialog is visible and in case of true dialog is not visible ,
private fun askForReview() {
val manager = ReviewManagerFactory.create(this)
manager.requestReviewFlow().addOnCompleteListener { request ->
if (request.isSuccessful) {
val reviewInfo = request.result
logWarning("isSuccessful Result ${reviewInfo.toString()}")
manager.launchReviewFlow(this, reviewInfo)
.addOnFailureListener {
logWarning("addOnFailureListener data = ${it.fillInStackTrace()}")
logWarning("addOnFailureListener, reason=$it")
}.addOnCompleteListener {
logWarning("addOnCompleteListener isComplete = ${it.isComplete} - isSuccessful= ${it.isSuccessful}")
logWarning("addOnCompleteListener it = ${it.toString()}")
logWarning("addOnCompleteListener result = ${it.result.toString()}")
logWarning("addOnCompleteListener exception = ${it.exception.toString()}")
val isNoOp = reviewInfo.toString().substring(reviewInfo.toString().indexOf("isNoOp")+7,reviewInfo.toString().length-1)
logWarning("addOnCompleteListener data.isNoOp = $isNoOp")
}.addOnSuccessListener {
logWarning("addOnSuccessListener ${it.toString()}")
}
} else {
logWarning("isSuccessful == false")
logWarning("In-app review request failed, reason=${request.exception}")
}
}
}
fun logWarning(logs:String?){
if (logs != null) {
Log.e("googlereview",logs)
}
}
Upvotes: 1
Reputation: 17942
There is no response as to whether the user rated your app or the rating dialog was shown through the In-App Review API itself. But you get these guarantees:
In case you are concerned that you might display the dialog too often, we recommend remembering when you last called launchReviewFlow
locally in a persistent way.
Let's go with your example of calling launchReviewFlow
after every level:
Upvotes: 22