David Vávra
David Vávra

Reputation: 19159

Google Play In-App Review API: How often does it show the dialog roughly?

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

Answers (2)

Md Shah Hussain
Md Shah Hussain

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

Ben Weiss
Ben Weiss

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:

  • If the app already has been reviewed by a user, they won't be prompted to review the app again.
  • You can test without quota by testing against Internal App Sharing or the Internal Test Track.

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:

  • Depending on the size of a level this might be too much
  • You won't know whether the dialog has been displayed
  • Once the user rates your app the dialog won't show again

Source

Upvotes: 22

Related Questions