我正在尝试在我的应用程序中实现应用程序内审核方法,这就是我到目前为止的实现方式:
fun Context.onReview() {
val reviewManager = ReviewManagerFactory.create(this)
val request = reviewManager.requestReviewFlow()
request.addOnCompleteListener { task ->
if (task.isSuccessful) {
val reviewInfo = task.result
val flow = reviewManager.launchReviewFlow(this as MainActivity, reviewInfo)
flow.addOnCompleteListener { }
}
}
}
我测试过,对话框只弹出一次。之后我就无法再打开对话框了。
我只是想知道实现是否足够好,并且当用户已经对应用程序进行评分时会弹出对话框。因为我在
task
或 task.result
中找不到任何函数或返回值,例如isRated=true
。但是,task.result
中有一个返回值,如下所示:
ReviewInfo{pendingIntent=PendingIntent{770540b: android.os.BinderProxy@ff152e8}, isNoOp=true}
isNoOp
始终是正确的,但不知道这意味着什么。
您有这方面的经验吗?可以分享一些想法吗?
isNoOp
对象中的ReviewInfo
标志为true表示审核流程实际上并未启动,因为不需要它。
原因:设备不支持(播放服务缺失或未更新),最近已审核,构建处于测试环境中
修改您的实施以在请求审核流程之前检查资格
fun Context.onReview() {
val reviewManager = ReviewManagerFactory.create(this)
val isReviewAllowedTask = reviewManager.isInAppReviewAllowed
isReviewAllowedTask.addOnCompleteListener { task ->
if (task.isSuccessful && task.result) {
val request = reviewManager.requestReviewFlow()
request.addOnCompleteListener { reviewFlowTask ->
if (reviewFlowTask.isSuccessful) {
val reviewInfo = reviewFlowTask.result
val flow = reviewManager.launchReviewFlow(this as MainActivity, reviewInfo)
flow.addOnCompleteListener { /* Optional: Handle completion */ }
} else {
// Handle failure to request review flow
}
}
} else {
// Handle in-app reviews not allowed
}
}
}