SwiftUI中「撰写评价」按钮仅在开发者模式下可用问题咨询
App Store「撰写评价」按钮环境差异问题分析
问题描述
App的「撰写评价」按钮在开发者模式下可正常跳转至App Store评价页面,但在「Ready for sale(准备上架)」版本中点击后,App Store提示「无法连接到App Store」,无法正常使用。
相关代码
if let reviewURL = URL(string: "http://apps.apple.com/app/[AppName]/[AppID]?action=write-review") { Button(action: { UIApplication.shared.open(reviewURL) }, label: { HStack { Text("settings-button-review") Image(systemName: "heart.fill") Spacer() } }) }
差异原因
- HTTP协议被正式环境拦截:代码中使用
http协议的链接,苹果在正式上架的App环境中强制要求网络请求使用HTTPS,HTTP请求会被系统安全策略拦截,导致无法连接到App Store服务器。而开发者模式下对HTTP的限制相对宽松,因此可以正常跳转。 - 正式环境URL验证更严格:准备上架版本对应的App可能尚未在App Store生产环境完成全量同步,或者HTTP格式的评价链接在正式环境中不被苹果的跳转逻辑认可,进而触发无法连接的提示。
修复方案
- 替换为HTTPS协议链接:将URL中的
http改为https,符合苹果正式环境的安全要求:
if let reviewURL = URL(string: "https://apps.apple.com/app/[AppName]/[AppID]?action=write-review") { // 原有按钮逻辑 }
- 使用官方API发起评价请求:苹果推荐使用
SKStoreReviewController类实现内建评价功能,无需跳转至App Store,且适配所有环境:
import StoreKit // 在按钮点击事件中调用 SKStoreReviewController.requestReview()
内容的提问来源于stack exchange,提问作者Alexnnd
相关产品推荐
相关产品推荐

