如何实现用户第二次打开App时触发应用评分请求?求代码示例
实现App第二次启动时触发应用评分请求的方案
要实现用户第二次打开App时显示评分请求,你需要结合启动次数统计和Google官方的In-App Review API来完成,以下是完整实现代码:
步骤1:统计App启动次数
使用SharedPreferences存储启动次数,这是轻量且持久化的存储方式:
// 在MainActivity的onCreate方法中添加统计逻辑 SharedPreferences prefs = getSharedPreferences("AppPrefs", MODE_PRIVATE); int launchCount = prefs.getInt("launch_count", 0); launchCount++; // 更新存储的启动次数 SharedPreferences.Editor editor = prefs.edit(); editor.putInt("launch_count", launchCount); editor.apply(); // 判断是否是第二次启动,且未触发过评分请求(避免重复弹出) boolean hasRequestedReview = prefs.getBoolean("has_requested_review", false); if (launchCount == 2 && !hasRequestedReview) { // 触发评分请求 requestAppReview(); // 标记已请求过评分,防止重复触发 editor.putBoolean("has_requested_review", true); editor.apply(); }
步骤2:实现In-App Review请求逻辑
结合你提供的代码,补全显示评分对话框的逻辑(Google Play的In-App Review API会自动处理对话框的展示):
private void requestAppReview() { ReviewManager manager = ReviewManagerFactory.create(this); Task<ReviewInfo> request = manager.requestReviewFlow(); request.addOnCompleteListener(task -> { if (task.isSuccessful()) { // 获取到ReviewInfo后,启动评分对话框 ReviewInfo reviewInfo = task.getResult(); Task<Void> reviewFlow = manager.launchReviewFlow(this, reviewInfo); reviewFlow.addOnCompleteListener(reviewTask -> { // 评分流程完成(不管用户是否评分、是否关闭对话框) if (reviewTask.isSuccessful()) { // 可在此添加后续逻辑,比如记录用户已完成评分流程 } }); } else { // 请求ReviewInfo失败,处理错误 @ReviewErrorCode int reviewErrorCode = ((TaskException) task.getException()).getErrorCode(); // 根据错误码做相应处理,比如: // REVIEW_ERROR_NO_ERROR: 无错误 // REVIEW_ERROR_SERVICE_NOT_AVAILABLE: 服务不可用 // REVIEW_ERROR_UNKNOWN: 未知错误 // 可以选择后续启动时重试,或者忽略 } }); }
注意事项
- Google Play的In-App Review API有调用频率限制,即使触发了请求,也可能不会弹出评分对话框(比如用户近期已经评过分),这是官方机制,无法强制弹出。
- 确保你的App已经接入Google Play Core库,在build.gradle中添加依赖:
dependencies { implementation 'com.google.android.play:review:2.0.1' }
内容的提问来源于stack exchange,提问作者Abinesh
相关产品推荐
相关产品推荐

