请求应用的评分和评价

你可以在你的通用 Windows 平台 (UWP) 应用中添加代码以编程方式提示你的客户对应用进行评分或评价。 你可以采用下面几种方法来实现:

  • 您可以直接在应用上下文中显示评分和评价对话框。
  • 你可以在 Microsoft Store 中以编程方式打开你的应用的评级和评论页面。

当准备好分析评分和评价数据后,可以在合作伙伴中心查看这些数据,或使用 Microsoft Store 分析 API 以编程方式检索这些数据。

重要

在应用中添加评分功能时,任何评价操作都必须将用户转到应用商店的评分机制,无论用户在评分时选择了几星。 如果要从用户那里收集反馈或评论,则必须清楚表明此做法与应用商店中的应用评分或评价无关,而是会将相关信息直接发送给应用开发人员。 有关欺诈或欺骗活动的详细信息,请参阅“开发人员行为准则”。

在应用中显示评分和评价对话框

若要以编程方式在应用中显示对话框,用于要求客户对应用评分和提交评价,可调用 Windows.Services.Store 命名空间中的 RequestRateAndReviewAppAsync 方法。

重要

显示评分和评价对话框的请求必须在应用中的 UI 线程上调用。

using Windows.ApplicationModel.Store;

private StoreContext _storeContext;

public async Task Initialize()
{
    if (App.IsMultiUserApp) // pseudo-code
    {
        IReadOnlyList<User> users = await User.FindAllAsync();
        User firstUser = users[0];
        _storeContext = StoreContext.GetForUser(firstUser);
    }
    else
    {
        _storeContext = StoreContext.GetDefault();
    }
}

private async Task PromptUserToRateApp()
{
    // Check if we’ve recently prompted user to review, we don’t want to bother user too often and only between version changes
    if (HaveWePromptedUserInPastThreeMonths())  // pseudo-code
    {
        return;
    }

    StoreRateAndReviewResult result = await 
        _storeContext.RequestRateAndReviewAppAsync();

    // Check status
    switch (result.Status)
    { 
        case StoreRateAndReviewStatus.Succeeded:
            // Was this an updated review or a new review, if Updated is false it means it was a users first time reviewing
            if (result.UpdatedExistingRatingOrReview)
            {
                // This was an updated review thank user
                ThankUserForReview(); // pseudo-code
            }
            else
            {
                // This was a new review, thank user for reviewing and give some free in app tokens
                ThankUserForReviewAndGrantTokens(); // pseudo-code
            }
            // Keep track that we prompted user and don’t do it again for a while
            SetUserHasBeenPrompted(); // pseudo-code
            break;

        case StoreRateAndReviewStatus.CanceledByUser:
            // Keep track that we prompted user and don’t prompt again for a while
            SetUserHasBeenPrompted(); // pseudo-code

            break;

        case StoreRateAndReviewStatus.NetworkError:
            // User is probably not connected, so we’ll try again, but keep track so we don’t try too often
            SetUserHasBeenPromptedButHadNetworkError(); // pseudo-code

            break;

        // Something else went wrong
        case StoreRateAndReviewStatus.OtherError:
        default:
            // Log error, passing in ExtendedJsonData however it will be empty for now
            LogError(result.ExtendedError, result.ExtendedJsonData); // pseudo-code
            break;
    }
}

RequestRateAndReviewAppAsync 方法是在 Windows 10 版本 1809 中引入,仅可用于面向 Windows 10 2018 年十月更新(10.0;内部版本 17763)或 Visual Studio 较新版本的项目中。

评分和评价请求的响应数据

提交显示评分和评价对话框的请求之后,StoreRateAndReviewResult 类的 ExtendedJsonData 属性会包含 JSON 格式的字符串,用于指示请求是否成功。

下面的示例演示在客户成功提交评分或评价之后此请求的返回值。

{ 
  "status": "success", 
  "data": {
    "updated": false
  },
  "errorDetails": "Success"
}

下面的示例演示在客户选择不提交评分或评价之后此请求的返回值。

{ 
  "status": "aborted", 
  "errorDetails": "Navigation was unsuccessful"
}

下表以 JSON 格式的数据字符串描述这些字段。

字段 说明
status 一个字符串,指示客户是否成功提交评分或评价。 受支持的值为 successaborted
data 一个包含一个名为已更新的布尔值的对象。 此值指示客户是否已更新现有评分或评价。 数据对象仅包含在成功的响应。
errorDetails 一个包含请求的错误详细信息的字符串。

在 Microsoft Store 中对你的应用启动评分和评价页面。

如果你想要以程序方式在 Microsoft Store 中对你的应用打开评分和评价页面,可像此代码示例中演示的那样,使用 ms-windows-store://review URI 架构的 LaunchUriAsync 方法。

bool result = await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-windows-store://review/?ProductId=9WZDNCRFHVJL"));

有关详细信息,请参阅启动 Microsoft Store 应用

分析你的评分和评价数据

要分析你的客户对应用的评分和评价数据,你有多个选择:

  • 可以使用从合作伙伴中心的评价报告查看客户的评分和评价。 还可以下载该报告以便脱机查看。
  • 你可以使用 Microsoft Store 分析 API 中的 Get app ratingsGet app reviews 方法以编程方式获取 JSON 格式的客户评分和评价。