Google Play 应用内评价集成小记

5,737 阅读3分钟

任何人都希望自己得到别人的肯定,我们开发者也不例外。通常我们的做法是在应用内预置一个弹窗,在合适的时机弹出,引导应用去应用商店评价。这种做法需要应用间跳转,有一定割裂感。前段时间Google 推出了 应用内评价(In-App Review)的API,我们团队在第一时间进行了适配。

注:此API仅适用于Google Play 上上架的App。

环境要求

  • 需要至少Android5.0 以上的设备并且安装了Google Play
  • 需要Play core Library版本至少在1.8.0 以上

集成In-App Review

  1. 使用需要添加Play core的依赖。
dependencies {
    // 核心库
    implementation 'com.google.android.play:core:1.8.0'

    // 非强制要求,如果项目使用了Kotlin 可以集成,用协程消除了请求过程中的回调
    implementation 'com.google.android.play:core-ktx:1.8.1'
    ...
}
  1. 通过ReviewManagerFactory创建ReviewManager对象,用于启动应用内评价的流程。

    val manager = ReviewManagerFactory.create(context)
    
  2. 获取ReviewInfo对象。当我们判断可以让用户进行评价时,使用ReviewManager创建一个任务,用于真正启动应用内评价流程。这里谷歌文档中中建议提前一点缓存好ReviewInfo对象。

    val request = manager.requestReviewFlow()
    request.addOnCompleteListener { request ->
        if (request.isSuccessful) {
            // We got the ReviewInfo object
            val reviewInfo = request.result
        } else {
            // There was some problem, continue regardless of the result.
        }
    }
    
  3. 经过一系列准备之后,直接调用launchReviewFlow来启动评价流程,剩下的事情就交给Google 了。

    val flow = manager.launchReviewFlow(activity, reviewInfo)
    flow.addOnCompleteListener { _ ->
        // 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.
    }
    

测试

上面集成的代码并没有什么难度,只是测试起来比较麻烦,需要注意点比较多:

  1. 使用应用内评价(In-App Review)需要你的应用已经在Google Play 中上架,在测试的时候,可以将应用发布至Internal Testing渠道,然后从Google Play 中下载应用即可;
  2. 如果你的Google 账号之前评价过此应用,则无法展示评价弹窗;
  3. 不能使用类似Button 的方式触发评价流程,Google 限制了评价弹窗出现的次数,当超过次数之后,弹窗不会出现。不过,在Internal Testing渠道的时候没有次数限制;
  4. 最后的Comletelistener中,除了通知开发者评价流程结束之外,不会包含任何信息,比如弹窗是否展示,用户评价的结果等等,都是玄学
  5. 可以使用FakeReviewManager来创建ReviewManager,虽然不包含评价弹窗的部分,不过可以用于集成测试和单元测试等;
  6. 也可以使用core-ktx提供的方式来继承,内部提供了协程的方式来消除回调

2020/11/13新增

上文说到,我们发布在Internal Testing Track的应用是没有弹窗次数限制的。这没问题,但是有一个例外,如果我们已经提交过了评价,那么提交的评价会显示在开发者评价中,同时之后不会显示弹窗了,除非删除评论或者更换谷歌账号。感谢 @huyang102220 的提醒。

总结

总的来说,In-App Review 是一个不错的功能,能够让用户不跳转页面就写下自己真是的感受,也是之前开发者一直向Google 官方建议的功能。不过,这个API 设计个人觉得并不是特别优雅,总觉得哪里有点奇怪。然而,最麻烦的还是测试,诸多限制,属于开发几分钟,测试几小时的那种,并且中途还走了一些弯路😂😂,好在最后解决还是比较顺利。如果你的应用也需要在Google Play 上线并且比较在意用户评价,可以考虑接入。

最后,上两张效果图,Enjoy!

参考

  1. Google 官方文档