# Usage

Rate app features uses Native Store Review dialogs which are system dialogs and there are limits on how many times these are shown.

{% tabs %}
{% tab title="iOS" %}
![iOS rate dialog](/files/-MKeU0h5sNzifsIL9hFj)
{% endtab %}

{% tab title="Android" %}
![Android In-App review dialog](/files/-MKeU2XDSOfdClpE9MMz)
{% endtab %}
{% endtabs %}

### Confirmation Prompt (optional)

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](/v2/rate-my-app/setup.md#properties) and also you can set this to off if you don't want to show it.

{% hint style="success" %}
Make use of confirmation dialog as there are limits on how many times a rate dialog can show up on each native platform
{% endhint %}

### Limitations

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.

{% hint style="danger" %}
On iOS, there is a max cap of 3 times per year.\
On Android limited quota do exists and the information is not public about how many times it's allowed.
{% endhint %}

### Ask for Review

If you don't want to wait for the default controller timings set in  [settings](/v2/rate-my-app/setup.md#properties), you can anytime call the rate app with **AskForReviewNow** method.

```csharp
using VoxelBusters.EssentialKit;

//...

RateMyApp.AskForReviewNow();
```

### Custom Controller for scheduling Rate Dialog

By default, Rate prompt will be scheduled to prompt automatically based on the default control settings setup in [settings](/v2/rate-my-app/setup.md#properties). 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.**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://assetstore.essentialkit.voxelbusters.com/v2/rate-my-app/usage.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
