Asking for review in your app? It’s tricky. If not done with due diligence, on encountering your request to review, users might get annoyed and still worse, they could rate your app low even though they liked it. A simplistic solution of asking for review after N days from installation (or first use) and N days after user has chosen “remind me later”, is not an appropriate solution. Why? User might have installed your app, ran it, exited, came back after N days and they were presented with a review request message, whereas, they had only used the app once. This is not a nice experience. Asking for review when user is exiting the app is less effective because user already has something else in their mind when they are coming out of the app.

Though there is no one solution that fits all, but this is how I try to tackle this scenario in my app. It’s not the “number of days” but “total minutes user has used your app” is my criteria to decide the interval of popping review message. I keep a record of overall usage of the app, and after a designated number of minutes, I pop a request to user. You might have to go through some trial and error to come up with the right “number of minutes” when you want to request. Determine whether your app is highly immersive or a quick open and shut type of app. In an immersive app|game you might want your review requests at longer intervals. In a less immersive app, you would rather ask earlier and at a less frequency. Then, you might want to gradually decrease the interval between requests during session. Don’t forget to code your logic in such a way that you could easily tune request intervals and accumulative usage time and update your app as soon as you realize that a change in the times is required. Here is pseudo-code for indication purpose:

[THIS IS PSEUDO CODE FOR INDICATION ONLY] constant int POP_REQUEST_AFTER_ACCUMULATIVE_USAGE (adjusting knob) constant int POP_REQUEST_INTERVAL (adjusting knob : Initial interval between requests in the session) constant int POP_REQUEST_INTERVAL_DECREASE_BY (adjusting knob : Decrease interval after every request) constant int POP_REQUEST_INTERVAL_MINIMUM (adjusting knob : interval should not go below this) int AccumulativeAppUsage (persist this info in storage) DateTime LastReviewRequest; Int ReviewRequestInterval = POP_REQUEST_INTERVAL; App.Start | App.Activate DateTime AppStart LastReviewRequest = DateTime.Now //reset App.Stop | App.Deactivate AccumulativeAppUsage += DateTime.NOW – AppStart Save AccumulativeAppUsage Page.[identify the event which triggers PopRequest method] PopRequest() PopRequest() totalUsageTillNow = AccumulativeAppUsage += DateTime.NOW – AppStart if(totalUsageTillNow >= POP_REQUEST_AFTER_ACCUMULATIVE_USAGE) { If(DateTime.Now – LastReviewRequest >= ReviewRequestInterval) { Show review request LastReviewRequest = DateTime.Now If(ReviewRequestInterval > POP_REQUEST_INTERVAL_MINIMUM) ReviewRequestInterval -= POP_REQUEST_INTERVAL_DECREASE_BY } }