You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在macOS SwiftUI应用中使用SKStoreReviewController请求评分?

在macOS 12及以下SwiftUI应用中触发App Store评分弹窗的解决方案

一、调试模式无反应的原因

Xcode调试运行时,SKStoreReviewController.requestReview()不会弹出评分对话框——这是苹果的机制限制,只有通过TestFlight分发的测试版本或App Store正式上架的应用,才能正常触发评分弹窗。

二、macOS 12及以下的适配实现

macOS 12没有requestReview(in:)(仅iOS/macCatalyst可用),但直接调用SKStoreReviewController.requestReview()即可,核心是确保在主线程调用,并选择合适的触发时机:

  1. 导入StoreKit框架:
import StoreKit
  1. 在用户交互触发的事件中调用(比如按钮点击、完成指定操作后):
Button("给应用评分") {
    DispatchQueue.main.async {
        SKStoreReviewController.requestReview()
    }
}

三、版本兼容写法(适配macOS 12+)

如果需要同时兼容macOS 13及以上的新SwiftUI API,可以做版本判断:

import StoreKit

struct ContentView: View {
    @Environment(\.requestReview) private var requestReview

    var body: some View {
        Button("请求评分") {
            if #available(macOS 13.0, *) {
                requestReview()
            } else {
                DispatchQueue.main.async {
                    SKStoreReviewController.requestReview()
                }
            }
        }
    }
}

关键注意事项

  • 苹果对评分弹窗有调用频率限制:用户1年内最多只会看到3次弹窗,无论代码调用多少次,所以不要在应用启动等高频场景触发。
  • 应用的Bundle ID必须与App Store后台的应用记录完全一致,否则TestFlight或正式版也无法弹出弹窗。

内容的提问来源于stack exchange,提问作者NFC.cool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 11:55:25