当前位置: 首页 > news >正文

Android 中集成 Google 应用内评分

添加依赖

在项目的 build.gradle 文件中添加以下依赖:

dependencies {
    // Java 依赖
    implementation 'com.google.android.play:review:2.0.1'
    // Kotlin 依赖
    implementation 'com.google.android.play:review-ktx:2.0.1'
}

创建 ReviewManager

使用 ReviewManagerFactory 创建 ReviewManager 实例,代码如下:

kotlin

val manager = ReviewManagerFactory.create(context)

java

ReviewManager manager = ReviewManagerFactory.create(context);

请求 ReviewInfo 对象

在确定适合提示用户进行评价的阶段,使用 ReviewManager 实例创建请求任务。如果请求成功,将返回启动应用内评价流程所需的 ReviewInfo 对象。示例代码如下:

kotlin

val request = manager.requestReviewFlow()
request.addOnCompleteListener { task ->
    if (task.isSuccessful()) {
        // 获取到 ReviewInfo 对象
        val reviewInfo = task.result
    } else {
        // 处理请求失败的情况,记录或处理错误
        @ReviewErrorCode val reviewErrorCode = (task.getException() as ReviewException).errorCode
    }
}

java

Task<ReviewInfo> request = manager.requestReviewFlow();
request.addOnCompleteListener(task -> {
    if (task.isSuccessful()) {
        ReviewInfo reviewInfo = task.getResult();
    } else {
        @ReviewErrorCode int reviewErrorCode = ((ReviewException) task.getException()).getErrorCode();
    }
});

启动应用内评价流程

使用获取到的 ReviewInfo 实例启动应用内评价流程,示例代码如下:

kotlin

val flow = manager.launchReviewFlow(activity, reviewInfo)
flow.addOnFailureListener { e ->
    // 评价流程启动失败
    Log.e(LOG_TAG, "启动应用内评价弹窗失败 " + e.toString())
}
flow.addOnSuccessListener {
    // 评价流程启动成功
    Log.e(LOG_TAG, "启动应用内评价弹窗成功 ")
}
flow.addOnCanceledListener {
    // 评价流程被取消
    Log.e(LOG_TAG, "启动应用内评价弹窗取消 ")
}

java

Task<Void> flow = manager.launchReviewFlow(activity, reviewInfo);
flow.addOnFailureListener(e -> {
    Log.e(LOG_TAG, "启动应用内评价弹窗失败 " + e.toString());
});
flow.addOnSuccessListener(o -> {
    Log.e(LOG_TAG, "启动应用内评价弹窗成功 ");
});
flow.addOnCanceledListener(() -> {
    Log.e(LOG_TAG, "启动应用内评价弹窗取消 ");
});

需注意,应用内评价只适用于搭载 Android 5.0(API 级别 21)或更高版本且安装了 Google Play 商店的 Android 设备,并且应用必须使用 1.8.0 或更高版本的 Play Core 库。同时,为提供优质用户体验,Google Play 会强制执行限时配额,规定系统向用户显示评价对话框的频率,因此不要频繁调用相关方法。

相关文章:

  • JavaRedis和数据库相关面试题
  • Axure疑难杂症:完美解决中继器数据互通、增删改查(玩转中继器)
  • 在 Windows 环境下使用 VSCode 和 TinyGo 开发 ESP8266(NodeMcu) or STM32
  • Tcp——客户端服务器
  • 【Guava】集合工具类-ImmutableListsMapsSets
  • TypeScript类型体操
  • 异步读取HTTP响应体的Rust实现
  • Linux内核内存管理 ARM32内核内存布局的详细解析和案例分析
  • 面试问题总结:qt工程师/c++工程师
  • 基于 Ollama DeepSeek、Dify RAG 和 Fay 框架的高考咨询 AI 交互系统项目方案
  • 4.1刷题(链表)
  • 初学STM32系统时钟设置
  • Vue 组件 - Slot 内容分发
  • Windows搭建AI大模型应用开发环境以及踩过的坑
  • 软件测试(2):selenium 4.0 特点以及新特性
  • 数据库权限获取
  • MySQL基本查询
  • LeetCode[15]三数之和
  • OpenAI重磅回归开源!首发推理模型不限商用,直面DeepSeek挑战
  • 操作系统高频(六)linux内核
  • 我的科学观|梅彦昌:科技创新关键在于能否跑得快,而不是有没有钱
  • 沙县小吃中东首店在沙特首都利雅得开业,首天营业额5万元
  • 熊出没!我驻日本札幌总领馆提示中国公民注意人身安全
  • 时隔近4年再出征!长三丙成功发射通信技术试验卫星十九号
  • 中方发布会:中美经贸高层会谈取得了实质性进展,达成了重要共识
  • 美国长滩港货运量因关税暴跌三成,港口负责人:货架要空了