一、Google Play 应用内评价 API 参考官方文档
- 借助 Google Play 应用内评价 API,您可以提示用户提交 Play 商店的评分和评价,而无需退出您的应用或游戏。为了保护用户隐私并避免 API 滥用,您的应用需要遵循有关何时请求应用内评价和评价提示设计的严格的准则。
image.png
1、设备要求
应用内评价只适用于以下设备:
- 搭载 Android 5.0(API 级别 21)或更高版本的 Android 设备(手机和平板电脑),且安装了 Google Play 商店。
- 安装了 Google Play 商店的 Chrome 操作系统设备。
2、Play Core 库要求
- 应用必须使用 1.8.0 或更高版本的 Play Core 库
3、何时请求应用内评价
请遵循以下准则,这些准则有助您确定何时向用户请求应用内评价:
- 在用户已充分您的体验应用或游戏内容并给出实用反馈后,触发应用内评价流程。
- 请不要过度提示用户进行评价。此方法有助于最大限度地减少用户不满并限制 API 使用情况(请参阅配额)。
- 在系统显示评分按钮或卡片之前或之后,您的应用不应询问用户任何问题,包括有关用户意见的问题(例如,“您是否喜欢这款应用?”)或预测性问题(例如,“您会给这款应用打 5 星吗”)。
4、设计准则
确定如何在应用中集成应用内评价时,请遵循以下准则:
- 按原样显现卡片,且不得以任何方式篡改或修改现有设计,包括尺寸、不透明度、形状或其他属性。
- 请勿在卡片顶部或片周围添加任何叠加层。
- 卡片和卡片背景应位于顶层。卡片显现后,请不要以编程方式移除该卡片。系统会根据用户的明确操作或内部 Play 商店机制自动移除该卡片。
5、配额
- 为了提供优质用户体验,Google Play 会强制执行一个限时配额,用于规定系统向用户显示评价对话框的频率。由于存在此配额,在短时间内(例如,不到一个月内)多次调用 launchReviewFlow 方法时可能不会始终显示对话框。该配额不清楚具体值是多少,且不固定,随时会发生变化。
- 由于配额可能会发生变化,因此请务必应用自己的逻辑并瞄准最佳时机申请审核。例如,您不得采用旨在触发 API 的号召性用语选项(例如按钮),因为用户可能已经达到其配额,而该流程无法显示,这会导致无法向用户提供流畅的体验。对于此使用场景,请将用户重定向到 Play 商店。
二、开始接入参考官方文档
1、配置开发环境
在app层的build.gradle里添加依赖
implementation 'com.google.android.play:core:1.10.3'
//使用kotlin的话可以添加kotlin对应的依赖(可选项)
implementation 'com.google.android.play:core-ktx:1.8.1
2、创建 ReviewManager
- ReviewManager 界面可让您的应用启动应用内评价流程。使用 ReviewManagerFactory创建实例获取该界面
ReviewManager manager = ReviewManagerFactory.create(context)
3、请求 ReviewInfo 对象
- 请遵循有关何时请求应用内评价的指南,以确定在应用的用户流的哪些阶段适合提示用户进行评价(例如,当用户在游戏中完成某个关卡时)。当您的应用达到其中一个阶段时,请使用
ReviewManager
实例创建请求任务。如果请求成功,该 API 将返回启动应用内评价流程所需的ReviewInfo
对象。 -
注意:
ReviewInfo
对象仅在有限的时间内有效。您的应用应提前请求ReviewInfo
对象(预缓存),但只有在您确定应用会启动应用内评价流程后,才可请求
Task<ReviewInfo> request = manager.requestReviewFlow();
request.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
// We can get the ReviewInfo object
ReviewInfo reviewInfo = task.getResult();
} else {
// There was some problem, log or handle the error code.
@ReviewErrorCode int reviewErrorCode = ((TaskException) task.getException()).getErrorCode();
}
});
4、启动应用内评价流程
- 使用
ReviewInfo
实例启动应用内评价流程。等到用户完成应用内评价流程后,再继续执行应用的正常用户流(例如进入下一关)。
Task<Void> flow = manager.launchReviewFlow(activity, reviewInfo);
flow.addOnCompleteListener(task -> {
// The flow has finished. The API does not indicate whether the user
// reviewed or not, or even whether the review dialog was shown. Thus, no
// matter the result, we continue our app flow.
});
到这里就接入完毕了,下面提供完整的代码,可直接拷贝带走去测试,另外我也写了个demo项目地址请点击这里
public class GooglePlayCore {
public interface GooglePlayFlowListener{
void OnCompleteListener();
void OnErrorListener();
}
public static void launchGooglePlay(@NonNull Activity context,GooglePlayFlowListener listener){
ReviewManager manager = ReviewManagerFactory.create(context);
Task<ReviewInfo> request = manager.requestReviewFlow();
request.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
ReviewInfo reviewInfo = task.getResult();
Task<Void> flow = manager.launchReviewFlow(context, reviewInfo);
flow.addOnCompleteListener(task1 -> {
if (listener!=null){
listener.OnCompleteListener();
}
});
} else {
// There was some problem, log or handle the error code.
//@ReviewErrorCode int reviewErrorCode = ((TaskException) task.getException()).getErrorCode();
if (listener!=null){
listener.OnErrorListener();
}
}
});
}
}
三、测试参考官方文档
1、使用 Google Play 商店进行测试
- 应用内评价要求您在 Play 商店中发布应用。不过,您可以使用内部测试轨道或内部应用分享功能测试集成,而无需将应用发布到生产环境中。本部分将介绍这两种方法。
使用内部测试轨道进行测试
- 将您的应用上传到内部测试轨道并将其安装到设备上,该设备必须具有一个有权访问内部测试轨道的用户帐号。使用内部测试轨道时,必须满足以下条件:
- 用户帐号是内部测试轨道的一部分。
- 用户帐号是主帐号,且已在 Play 商店中选定。
- 用户帐号已从 Play 商店下载应用(该应用已在用户的 Google Play 内容库中列出)。
- 用户帐号目前未对该应用进行评价。
- 在设备上的帐号至少从内部测试轨道下载该应用一次并且该帐号列于测试人员列表中之后,您可以将该应用的新版本部署到设备本地(例如,使用 Android Studio 进行部署)。
- 如果从内部测试轨道下载应用,不会强制执行配额限制。
使用内部应用分享功能进行测试
- 使用通过内部应用分享功能安装的应用时,无法提交评价。为了强调此区别,界面中的相应按钮处于停用状态。
2、使用 FakeReviewManager 进行测试
- 如需使用 FakeReviewManager,请将 ReviewManager 实例替换为 FakeReviewManager 的实例
- FakeReviewManager 不模拟界面,而是始终提供一个虚假 ReviewInfo 对象并在应用内评价流程启动时返回成功状态
4、问题总结
问题 :您的应用尚未在 Play 商店中发布。
方法 :如需进行测试,并不一定要发布应用,但至少必须在内部测试轨道中提供应用的 applicationID
。
问题 :用户帐号无法评价该应用。
方法 :您的应用必须列于用户的 Google Play 内容库中。如需将您的应用添加到用户的内容库中,请使用该用户的帐号从 Play 商店下载您的应用。
问题 :主帐号未在 Play 商店中选定。
方法 :如果设备中有多个帐号,请确保主帐号是您在 Play 商店中选定的帐号。
问题 :用户帐号受到保护(例如企业帐号)。
方法 :请改用 Gmail 帐号。
问题 :用户已评价过该应用。
方法 :直接从 Play 商店中删除相应评价。
问题 :已用完配额。
方法 :使用内部测试轨道或内部应用分享功能。
问题 :设备上的 Google Play 商店或 Google Play 服务存在问题。
方法 :如果 Play 商店是旁加载到设备上的,通常会发生这种情况。请使用安装了有效版本的 Play 商店和 Google Play 服务的其他设备。