App Rating Reminder

File: JVE.AppStore.pas Inheritance: TComponent ⬅ Inner Class ⬅ TJVEAppRater

This component tracks user behaviour and allows him to rate the app, once certain conditions are met (similarly to Appirater tool for iOS). The following properties are exposed:


  • iOSIdentifier, iOSURL, MacIdentifier, MacURL, AndroidIdentifier, AndroidURL, WindowsURL and Embed – all have the exact same function as in the TJVEAppStore
  • InitialDaysDelay – number of days, which should pass before the app queries the user for the first time. Should normally be at least 1.
  • InitialUsesCount – number of times the user should run the app, before the first query.
  • InitialEventsCount – number of major events, which should occur, before first query.
  • ReminderDaysDelay – if the user decided not to rate the app, number of days, before he is reminded again. Should normally be at least 1.
  • ReminderUsesCount – number of times the app runs, before the user is reminded.
  • ReminderEventsCount – number of major events, before the user is reminded.
  • Question – this is the question, which will be presented to the user (the question will not be asked in Native mode in iOS 10.3 and on, due to iOS implementation choices).
  • NativeiOS – indicates the GUI version to use on iOS: 10.3, if available, 6.0 or external app store. Notice, by Apple’s design, in 10.3 GUI there is no guarantee that the rating dialog will be presented at all, thus don’t use this option as a response to a button click.


While no events are exposed by this component, the following methods are provided:

  • Open – opens the app in app store for rating entry immediately (overriding usual delay and without a confirmation dialog). For the normal functionality, use ProcessMajorEvent.
  • QueryForFeedback – if user has not requested not to be bugged, presents a dialog asking him, whether he would like to rate the app. If confirmed, you can call the Open
  • ResetDontAsk – if the user chose not to ask him again, this would reset this selection. You should only use this in outstanding circumstances, for example, if you are out with a new app version and want the user to reconsider.
  • ProcessMajorEvent(OpenQuery) – use this function to notify the App Rater that it is an appropriate time to show the Rate request. The popup will only be opened, if appropriate time has passed and other requires are met.

This last method is the only method you should normally call in this class. Pass False in OpenQuery to check applicability without opening a query. Returns True, if the interstitial query was indeed shown (or should now be shown, if requested not to open; counters are reset anyway in this case, so this component could be used as an arbitrary counter, if needed).

The normal use of this component is to configure it (in design time), then simply call the ProcessMajorEvent every time the user finishes a level or something similar. See also the Interstitials section for more use cases.


The query presented to the user is similar to the screenshot below, while the app presentation generally follows the way TJVEAppStore works (except that the Rating and Reviews tab is opened by default, if supported by the platform). Example presentations are: