# Guru Rating 游戏内评价引导组件 


## 集成可选择
+ 组件路径 `GuruUIKit/Rating`
- MonoBehaviour 适配版本
  - 原生的的MonoBehaviour可直接使用 `UIRateUsMono.cs` 文件及 `GuruUIKit/Rating/Resources/ui/guru_rating.prefab`
  - 相关的图片路径: `GuruUIKit/Rating/Arts/`

## 接口实现
通过调用 `GuruRatingController` 的 `ShowWithData` 来实现UI的展示.

```C#
    /// <summary>
    /// 显示 Rating 视图
    /// </summary>
    /// <param name="root">UI挂载根节点(基于UGUI)</param>
    /// <param name="onFeedback">用户操作反馈的回调, 使用默认流程请留空值</param>
    /// <param name="supportEmail">支持邮件地址</param>
    /// <param name="showRatingImmediately">在用户点击操作后, 立即触发响应</param>
    /// <param name="mailTitle">邮件主题</param>
    /// <param name="mailBody">邮件内容</param>
    public void ShowWithData(Transform root, Action<int, string> onFeedback = null, bool showRatingImmediately = true,
        string supportEmail = "", string mailTitle = "", string mailBody = "")
```

一般用户推荐使用Guru默认的Rating流程来完成展示:
+ 用户打分5星后, 立即展示设备商店的应用内评价面板.
+ 用户打分不足5星, 弹出反馈面板, 用户点击 `提交` 后, 立即发送邮件到指定的邮箱.

例如: 使用Guru默认的 Rating 流程, 在满足一定条件的时候展示 Rating 引导面板
```c#
    // 示例化一个 Rating 控制器
    var ctrl = new GuruRatingController();
    string mailTitle = "Thanks for playing our demo!";

    // 在需要展示的时候打开视图, 使用Guru默认处理方式
    ctrl.ShowWithData(UI.Root, null, true, GuruSDK.SupportEmail, mailTitle);
```
游戏如果需要自行处理展示逻辑, 可传入自己的回调参数:

```c#
    // 在需要展示的时候打开视图, 使用Guru默认处理方式
    ctrl.ShowWithData(UI.Root, OnGetRatingResult, true);

    // rateValue 为用户评价的星级, 0 为未评价
    // msg 为用户评价的文字内容, 为空字符串时为未评价
    private void OnGetRatingResult(int rateValue, string message)
    {
        // TODO: 处理 rateValue 为 5 的情况, 比如: 直接跳转商店
        
        // TODO: 处理用户的留言, 比如发送给客服邮箱
    }
```


## 注意事项

+ AppStore 对于应用内引导评价的行为鉴别相对比较严格, 如果发布 iOS 平台, 建议使用云控参数, 在应用提交审核的时候先关闭引导评价的功能. 等到应用成功上架后, 再开启引导评价的功能.
+ 建议 Google Play 也接入同样的策略.

