乐于分享
好东西不私藏

如何提高 iOS App 评分?99% 的开发者都用错了时机

如何提高 iOS App 评分?99% 的开发者都用错了时机

这里每天分享一个 iOS 的新知识,快来关注我吧

前言

做 iOS 开发,应用的评价和评分有多重要,不用我说你也知道。App Store 的推荐算法、用户的下载决策,都跟评价数量和评分直接相关。

今天来讲讲如何引导用户评价你的应用。

StoreKit 2 的 RequestReviewAction

StoreKit 2 有一个 RequestReviewAction 环境值,专门用来请求用户评价。

它有个限制:一年内最多只能请求 3 次。这个限制是苹果控制的,你调用再多也没用,系统会自动限制。

这也意味着,你得选对时机,别浪费这 3 次机会。一年就 3 次,用完了就没了。

什么时候请求评价最合适?

苹果官方建议的最佳实践是这些:

1. 在用户完成某个成功操作后请求

比如用户完成了一个任务、达成了一个成就、或者完成了一轮游戏。这时候用户心情好,更愿意给好评。

2. 不要在应用启动时请求

即使不是第一次启动,也不要一打开应用就弹评价请求。用户还没用呢,你就要评价,体验很差。

3. 不要作为用户操作的直接结果

比如用户点击了某个按钮,不要立即弹出评价请求。应该延迟一下,让用户完成操作,再请求评价。

4. 避免在用户遇到问题或错误时请求

这个不用说了,用户正烦着呢,你这时候要评价,不是找骂吗?

简单说就是:选用户心情好的时候,别打扰用户。

基础实现

在 SwiftUI 里用 RequestReviewAction 很简单:

import SwiftUIimport StoreKitstruct ContentViewView {@Environment(\.requestReview) private var requestReviewvar body: some View {VStack {// 你的界面内容Button("请求评价") {                presentReview()            }        }    }private func presentReview() {Task {// 延迟 2 秒,确保用户完成操作try await Task.sleep(for: .seconds(2))await requestReview()        }    }}

注意这里有个延迟,让用户先完成操作,再请求评价。这个延迟很重要,别省略。我刚开始用的时候没加延迟,结果体验很差。

点击之后就会弹出评价弹窗:

UIKit 实现

如果你用的是 UIKit,实现也很简单。用 SKStoreReviewController 就行:

import UIKitimport StoreKitclass ViewControllerUIViewController {override func viewDidLoad() {super.viewDidLoad()let button UIButton(type: .system)        button.setTitle("请求评价", for: .normal)        button.addTarget(self, action: #selector(requestReviewTapped), for: .touchUpInside)        button.translatesAutoresizingMaskIntoConstraints false        view.addSubview(button)NSLayoutConstraint.activate([            button.centerXAnchor.constraint(equalTo: view.centerXAnchor),            button.centerYAnchor.constraint(equalTo: view.centerYAnchor)        ])    }@objc private func requestReviewTapped() {        presentReview()    }private func presentReview() {Task {// 延迟 2 秒,确保用户完成操作try? await Task.sleep(for: .seconds(2))await MainActor.run {if let windowScene = view.window?.windowScene {SKStoreReviewController.requestReview(in: windowScene)                }            }        }    }}

UIKit 的实现稍微复杂一点,需要获取 windowScene。但核心逻辑是一样的,都是延迟一下再请求评价。

版本管理:避免重复请求

苹果的限制是一年 3 次,但实际项目里,你肯定不想在同一个版本里重复请求。用户已经评价过了,再弹就没意义了。

所以最好记录一下,当前版本是否已经请求过评价。可以用 UserDefaults 来记录,我写了个 ReviewPromptManager 来管理这个:

import Foundation@MainActorfinal class ReviewPromptManager {static let shared ReviewPromptManager()private let lastPromptedVersionKey "lastPromptedVersion"private var currentAppVersion: String? {Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString"as? String    }/// 返回 `true` 如果当前版本还没请求过评价func canRequestReview() -> Bool {guard let currentAppVersion else { return false }let lastPromptedVersion UserDefaults.standard.string(forKey: lastPromptedVersionKey)return lastPromptedVersion != currentAppVersion    }/// 标记当前版本已经请求过评价func markReviewRequested() {guard let currentAppVersion else { return }UserDefaults.standard.set(currentAppVersion, forKey: lastPromptedVersionKey)    }}

这个 ReviewPromptManager 会检查当前版本是否已经请求过评价。如果请求过,就不再请求了。每次更新版本后,会重新允许请求。用起来很简单,直接调用 canRequestReview() 检查就行。

完整的实现方案

把版本管理和评价请求结合起来,就是一个完整的方案。实际用的时候,在用户完成某个成功操作后,检查一下是否可以请求,然后延迟一下再弹:

import SwiftUIimport StoreKitstruct ContentViewView {@Environment(\.requestReview) private var requestReviewvar body: some View {VStack {// 你的界面内容Button("完成某个操作") {                handleSuccessAction()            }        }    }private func handleSuccessAction() {// 处理成功操作// ...// 检查是否可以请求评价if ReviewPromptManager.shared.canRequestReview() {            presentReview()        }    }private func presentReview() {Task {// 延迟 2 秒,确保用户完成操作try? await Task.sleep(for: .seconds(2))await requestReview()ReviewPromptManager.shared.markReviewRequested()        }    }}

这样就能避免重复请求,也能在合适的时机请求评价。实际用的时候,记得在用户完成某个成功操作后再检查,别一打开应用就弹。

我能想到的一些实际应用场景,针对不同的应用

习惯追踪应用

用户完成连续打卡 10 天,这时候心情好,很适合请求评价。

游戏应用

用户赢得一局游戏,这时候情绪高涨,很适合请求评价。但要注意,不要每局都请求,可以设置一个条件,比如连续赢 3 局,或者达到某个里程碑。

学习应用

用户完成一个课程、通过一个测试,这时候有成就感,很适合请求评价。

健身应用

用户完成一个训练计划、达到一个目标,这时候有满足感,很适合请求评价。

总之就是选用户心情好的时候,成功率会高很多。

用户隐私设置

iOS 有个隐私设置,允许用户全局禁用应用的评价请求。如果用户开启了这个设置,你的请求就不会显示。这个你控制不了,但也不用担心,根据我的经验,大部分用户还是愿意评价的。

不过要注意,有些用户就是不喜欢评价,即使他们很喜欢你的应用。这很正常,不用强求。

最后

你的应用里有请求评价的功能吗?遇到过什么坑?评论区聊聊。

这里每天分享一个 iOS 的新知识,快来关注我吧

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 如何提高 iOS App 评分?99% 的开发者都用错了时机

评论 抢沙发

6 + 7 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮