当用户已经对应用进行评分时,应用内评论是否会弹出?

问题描述 投票:0回答:1

我正在尝试在我的应用程序中实现应用程序内审核方法,这就是我到目前为止的实现方式:

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
始终是正确的,但不知道这意味着什么。

您有这方面的经验吗?可以分享一些想法吗?

android kotlin android-in-app-review
1个回答
0
投票

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
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.