Rate app features uses Native Store Review dialogs which are system dialogs and there are limits on how many times these are shown.
Before showing the exact store rating/review dialog, you can optionally ask if the user is really ready to rate the app. You can configure the dialog in the settings and also you can set this to off if you don't want to show it.
To prevent spamming the user for rating the app, each native platform has their own limitations. So, its wise to prompt the user only when it's the right time. For ex: Showing the prompt after 10 levels of gameplay or when player archives something big while playing the game.
If you don't want to wait for the default controller timings set in settings, you can anytime call the rate app with AskForReviewNow method.
By default, Rate prompt will be scheduled to prompt automatically based on the default control settings setup in settings. But, if you want to have more control, you can add a component which implements IRateMyAppController(doc) interface.
By implementing IRateMyAppController, you can control when to show the prompt and get callbacks to the user clicks for confirmation dialog.
Have a look at RateMyAppDefaultController for getting an idea on how to implement your own IRateMyAppController.