如何在SwiftUI中请求用户对您的应用进行评价
· 阅读需 4 分钟
在 iOS 16 中,SwiftUI 具有一种本地方式来请求用户的反馈和评分。
要呈现一个本地提示,请求用户对您的应用进行 App Store 评分和评论,您需要执行两项操作。
- 导入
StoreKit
框架。 - 当您希望请求用户对您的应用进行评价时,调用
RequestReviewAction
。
import SwiftUI
import StoreKit
struct ContentView: View {
// 1
@Environment(\.requestReview) var requestReview
var body: some View {
Text("你好,世界!")
.padding()
.onAppear {
// 2
requestReview()
}
}
}
RequestReviewAction
是一个操作,将呈现一个提示,要求用户为我们的应用评分。我们可以从StoreKit
框架中声明的环境值\.requestReview
中获取该操作。- 在获得对这个操作的访问权限后,只需在希望请求用户评价时调用它。
这是 UI 的样子。
请求评价弹出对话框。
限制
苹果在用户体验方面非常认真,他们希望控制我们请求用户评价的频率。
因此,即使您明确调用requestReview()
,评价弹出窗口也可能不会显示。
这是苹果用来决定是否显示评价窗口的标准。
- 如果用户在该设备上尚未对您的应用进行评级或评论,则 StoreKit 在 365 天内最多会显示评级和评论请求三次。
- 如果用户在该设备上对您的应用进行了评级或评论,并且自上次评价以来已经过去了 365 天,StoreKit 会显示评级和评论请求。
- 即使所有标准都满足,由于苹果的隐藏标准,例如频率,仍有可能不显示提示,因此不要在按钮点击或其他用户操作的响应中调用该方法。
何时请求评级
由于您可以请求评价的次数有限,您应该在有意义的时候调用它。
您可能希望在用户可能会获得评价的时候要求评价。
这方面没有固定的规则,但我可以提供一些示例。
- 当用户反复返回您的应用时。这表明用户对您的应用感到满意并认为它有帮助。
- 在重要事件之后,例如完成游戏关卡或完成一些任务。
总之,您应该在用户对您的应用感到积极时请求评价。
因此,您的代码可能如下所示。
struct ContentView: View {
@Environment(\.requestReview) var requestReview
var body: some View {
Text("你好,世界!")
.padding()
.onAppear {
requestReviewIfAppropriated()
}
}
@MainActor
private func requestReviewIfAppropriated() {
let numberOfVisits = 10
let numberOfSignificantEvents = 10
if numberOfVisits > 5 || numberOfSignificantEvents > 5 {
requestReview()
}
}
}
实际上,numberOfVisits
和numberOfSignificantEvents
应该来自您的数据库,即UserDefaults
。