> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 获得更多应用商店评价

> 使用 OneSignal 应用内消息以及 iOS 和 Android 原生评价提示，引导用户为您的应用评价，减少操作摩擦，提升评分。

使用 OneSignal 应用内消息引导用户在不离开应用的情况下提交 App Store 或 Google Play 评价。本教程涵盖无代码和需要代码两种方案。

<Frame caption="应用内消息示例，提示用户留下 App Store 评价">
  <img src="https://mintcdn.com/onesignal/tc0EvmtSSX56SX0c/images/docs/8c81fd3f2381baae2ac9176c24fb1e5684df33e991e0726c64a459ed798c7148-Screenshot_2024-11-12_at_12.00.20_PM.png?fit=max&auto=format&n=tc0EvmtSSX56SX0c&q=85&s=df73e58df4a1b6610f1cfffd84bd25d4" alt="带有“立即评价”按钮的应用内消息，提示用户为应用评分" width="1016" height="617" data-path="images/docs/8c81fd3f2381baae2ac9176c24fb1e5684df33e991e0726c64a459ed798c7148-Screenshot_2024-11-12_at_12.00.20_PM.png" />
</Frame>

## 设置

### 1. 创建消息

导航到 **Messages > In-App > New In-App** 或打开现有的应用商店评价模板。

为评价按钮添加操作 ID：

<Frame caption="为“立即评价”按钮设置 Custom Action ID">
  <img src="https://mintcdn.com/onesignal/3zq1PvSaqvUE2bIx/images/docs/293839ca5534557c35929fdaa6eb5581c7218da770f2601bd3e7d819164430b8-Screenshot_2024-11-12_at_12.13.39_PM.png?fit=max&auto=format&n=3zq1PvSaqvUE2bIx&q=85&s=c88fe293c4f381dd0e44c686c54af348" alt="OneSignal 应用内消息编辑器，显示按钮元素上的 Custom Action ID 字段设置为 review" width="1211" height="685" data-path="images/docs/293839ca5534557c35929fdaa6eb5581c7218da770f2601bd3e7d819164430b8-Screenshot_2024-11-12_at_12.13.39_PM.png" />
</Frame>

### 2. 添加触发器

触发器控制消息显示的时机。您可以选择无代码或基于代码的方案。

**无代码**：设置受众以定向您希望获取评价的用户——例如，会话数较多且长期使用应用的用户。

**基于代码**：使用 SDK 的 `addTrigger` 方法，根据用户操作以编程方式显示消息。避免在用户正在执行重要任务时显示提示。

在本示例中，**In-App Trigger** 键为 `ask_for_review`，值为 `show`。键和值可以是任意内容，但必须与您传递给 `addTrigger` 的内容匹配：

`OneSignal.InAppMessages.addTrigger("ask_for_review", "show");`

<Frame caption="应用内触发器键值与 addTrigger 方法调用匹配">
  <img src="https://mintcdn.com/onesignal/YOTSrtBSoqdrJ37A/images/docs/459e14e99af52793454464b3e52ddc518f7a8c73021c16aae24b3389532c012a-Screenshot_2024-11-12_at_12.24.08_PM.png?fit=max&auto=format&n=YOTSrtBSoqdrJ37A&q=85&s=0a50f0c58f47de1b1ad7d478fea5ea77" alt="OneSignal 仪表板，显示应用内消息触发器设置为 ask_for_review 等于 show" width="825" height="236" data-path="images/docs/459e14e99af52793454464b3e52ddc518f7a8c73021c16aae24b3389532c012a-Screenshot_2024-11-12_at_12.24.08_PM.png" />
</Frame>

### 3. 处理应用商店评价提示

您可以使用无代码或基于代码的方案引导用户留下评价。

<Accordion title="无代码选项">
  1. 更新细分以使用"Device Type is Android"过滤器。
  2. 复制应用内消息，并将复制版本的细分更新为使用"Device Type is iOS"过滤器。您应该有两个应用内消息，分别对应两个独立的细分。
  3. 在"Review Now"按钮上添加 [URL Click Action](./iam-click-actions)，链接至您的应用商店页面：
     * **Android**：`https://play.google.com/store/apps/details?id=YOUR_PACKAGE_NAME` — 参见 [Linking to Google Play](https://developer.android.com/distribute/marketing-tools/linking-to-google-play.html)
     * **iOS**：`https://apps.apple.com/app/idYOUR_APP_STORE_ID?action=write-review` — 参见 [Requesting App Store Reviews](https://developer.apple.com/documentation/storekit/requesting_app_store_reviews)
</Accordion>

<Accordion title="基于代码的选项">
  使用 SDK 的 `InAppMessages.addClickListener` 方法检测评价按钮被点击的时机（通过检查 Action ID），然后调用 iOS 或 Android 原生评价 API 来展示评分模态框。

  ```dart theme={null}
  OneSignal.InAppMessages.addClickListener((event) async {
    if (event.result.actionId == 'review') {
      if (await inAppReview.isAvailable()) {
        inAppReview.requestReview();
      }
    }
  });
  ```

  本示例使用 [in\_app\_review](https://pub.dev/packages/in_app_review) Flutter 包。请根据您的平台进行适配——iOS 请参见 [RequestReviewAction](https://developer.apple.com/documentation/storekit/requestreviewaction)，Android 请参见 [Google Play In-App Reviews API](https://developer.android.com/guide/playcore/in-app-review)。
</Accordion>

### 4. 安排和启用

Apple 每 365 天内最多显示原生评价提示三次。Google Play 强制执行基于时间的配额，但未公布确切限制——在短时间内（不足一个月）多次调用 API 可能不会显示对话框。

为了保持在这些限制内，将应用内安排设置为每 17 周显示一次：

<Frame caption="应用内安排设置为总共最多显示 40 次，间隔 17 周">
  <img src="https://mintcdn.com/onesignal/jFWn5xzleD8du3j6/images/docs/5c63bb89120c9fcffa5c3836f3f13de2db38952bc61c56d2f8d18c0bf450986f-Screenshot_2024-11-19_at_11.49.26_AM.png?fit=max&auto=format&n=jFWn5xzleD8du3j6&q=85&s=690b7ecb27ab452252390d5511f6f821" alt="OneSignal 应用内消息调度设置，显示总共 40 次显示，间隔 17 周" width="898" height="187" data-path="images/docs/5c63bb89120c9fcffa5c3836f3f13de2db38952bc61c56d2f8d18c0bf450986f-Screenshot_2024-11-19_at_11.49.26_AM.png" />
</Frame>

<Tip>
  为了增加正面评价，请定向那些有良好体验的用户——例如，会话数较多的用户，或通过之前应用内消息提供正面反馈的用户。为这些用户设置 [标签](./add-user-data-tags)，并创建细分作为评价提示的受众。
</Tip>

***

## FAQ

### Apple 的原生评价提示多久可以出现一次？

Apple 每个用户每 365 天内最多显示 `RequestReviewAction` 提示三次。这由系统强制执行——您的应用无需自行追踪次数。参见 [Requesting App Store Reviews](https://developer.apple.com/documentation/storekit/requesting_app_store_reviews)。

### Google 的原生评价提示多久可以出现一次？

Google Play 强制执行配额，但未公布确切限制。在短时间内（不足一个月）多次调用 `launchReviewFlow` 可能不会显示对话框。该配额是 Google 可随时更改的实现细节。参见 [In-App Reviews quotas](https://developer.android.com/guide/playcore/in-app-review#quotas)。

### 非原生应用（Flutter、React Native、Expo）可以使用此功能吗？

可以。使用平台专属插件调用原生评价 API——例如 Flutter 使用 [in\_app\_review](https://pub.dev/packages/in_app_review)，Expo 使用 [StoreReview](https://docs.expo.dev/versions/latest/sdk/storereview/)。无论使用何种框架，OneSignal 应用内消息和点击监听器的使用方式相同。

***

<Columns cols={2}>
  <Card title="应用内点击操作" icon="hand-pointer" href="./iam-click-actions">
    为应用内消息元素配置 URL、权限提示、标签、结果及自定义点击操作。
  </Card>

  <Card title="标签" icon="tags" href="./add-user-data-tags">
    根据用户行为打标签，构建细分以进行精准消息推送。
  </Card>
</Columns>
