最近在开发公司的App,有个需求是跳转到商店为应用进行评价。本篇文章介绍一下Goolge Play官方实现应用评价的API。
评价库的限制
为了保护用户隐私并避免 API 滥用,您的应用需要遵循有关何时请求应用内评价和评价提示设计的严格的准则。
何时请求应用内评价
请遵循以下准则,这些准则有助您确定何时向用户请求应用内评价:
- 在用户已充分您的体验应用或游戏内容并给出实用反馈后,触发应用内评价流程。
- 请不要过度提示用户进行评价。此方法有助于最大限度地减少用户不满并限制 API 使用情况(配额)。
- 在系统显示评分按钮或卡片之前或之后,您的应用不应询问用户任何问题,包括有关用户意见的问题(例如,“您是否喜欢这款应用?”)或预测性问题(例如,“您会给这款应用打 5 星吗”)。
设计准测
确定如何在应用中集成应用内评价时,请遵循以下准则:
- 按原样显现卡片,且不得以任何方式篡改或修改现有设计,包括尺寸、不透明度、形状或其他属性。
- 请勿在卡片顶部或片周围添加任何叠加层。
- 卡片和卡片背景应位于顶层。卡片显现后,请不要以编程方式移除该卡片。系统会根据用户的明确操作或内部 Play 商店机制自动移除该卡片。
请求配额
Google Play 针对评价API做了配额限制,用于限制向用户显示评价对话框的频率。当请求launchReviewFlow
达到配额限制后,再调用时不会出现评价对话框。并且,Google Play调整配额时不会提醒开发者。所以,谷歌建议不应该使用专门的按钮来触发评价。
集成评价库
在项目app module的build.gradle中的dependencies中添加依赖:
dependencies {
implementation("com.google.android.play:review:2.0.0")
//若使用kotlin同时导入
implementation("com.google.android.play:review-ktx:2.0.0")
}
请求评价信息对象
可以通过如下代码获取评价信息对象:
val reviewManager: ReviewManager = ReviewManagerFactory.create(context)
reviewManager.requestReviewFlow().addOnCompleteListener { task ->
if (task.isSuccessful) {
//reviewInfo仅在有限时间内有效,确认要发起评价流程前请求。
val reviewInfo = task.result
} else {
Log.e(Constants.TAG, "ReviewManager get review info error errorMessage:${task.exception?.message}")
}
}
启动评价
可以通过如下代码启动评价:
reviewManager.launchReviewFlow(activity, reviewInfo).addOnCompleteListener { reviewTask ->
//不论是否成功都应该继续用户原本的行为,当配额达到限制后,对话框不会弹出。
if (task.isSuccessful) {
Log.i(Constants.TAG, "ReviewManager start review flow successful")
} else {
Log.e(Constants.TAG, "ReviewManager start review error errorMessage:${reviewTask.exception?.message}")
}
}
测试评价
官方提供了两种测试方式,分别为通过内部轨道测试和通过内部应用分享测试。
使用内部轨道测试需要在Google Play Console 的内部测试中上传aab,然后通过分享链接,让测试人员进行测试。
使用内部应用分享测试,需要在internal-app-sharing中上传用于测试的包,然后通过分享链接,让测试人员进行测试。
测试效果: