
在 iOS 27 发布之前,开发者必须要做的事
iOS 27 上架新坑:Apple TN3208 文档强制要求配置 Launch Screen,缺配置将直接触发 ITMS-90870 拒绝接收。进来看如何快速适配。
在 iOS 27 正式发布前,有一件看似不起眼但关乎上架的硬性要求,开发者们必须提前做好准备。
早期做 iOS 开发的朋友对 Launch Screen(启动图)一定不陌生。在 SwiftUI 出现前,它是每个项目的标配,用来承载应用加载时的空白期。在国内,它还经常被赋予广告位和品牌宣传的特殊使命。
后来随着 SwiftUI 的普及,创建新项目时 Xcode 不再强制要求配置启动屏,这个概念便逐渐被大家淡忘了。
不过,Apple 刚刚发布了技术说明 TN3208(Preparing your app’s launch screen to meet App Store requirements),明确指出从 iOS 27 / iPadOS 27 开始,所有应用必须配置启动屏。官方强调,此举是为了确保应用在现代系统能力(如多任务、动态尺寸调整)下,依然能提供即时响应的流畅体验。
核心变动与审核红线
最关键的变动在 App Store 的审核机制。今年秋季 iOS 27 正式发布后,凡是使用 iOS 27 SDK 构建并提交到 App Store 或第三方应用市场的 iPhone / iPad 应用,其 Info.plist 中必须至少包含以下键之一:
UILaunchStoryboardNameUILaunchStoryboardsUILaunchScreenUILaunchScreens
如果缺少这些配置,上传时会直接触发 ITMS-90870 错误导致拒绝接收:
Missing launch screen. Starting with the iOS 27 release this fall, apps built with the iOS 27 SDK or later must provide a launch screen using an Xcode storyboard or UILaunchScreen.
如何配置与应对?
Apple 在文档中给出了两种主流的适配方案:
1. 最推荐的做法:使用 UILaunchScreen 键
对于纯 SwiftUI 的新工程,如果 Xcode 启用了 “Generate Info.plist File” 和 “Launch Screen (Generation)” 的 Build Settings,系统会自动在编译时生成对应的启动屏配置,通常无需手动干预。
2. 自定义度更高的做法:Storyboard
如果你的应用需要复杂的首屏布局或完全自定义的视觉设计,依然可以创建一个专属的启动屏 Storyboard,并在 Info.plist 中通过 UILaunchStoryboardName 指向它。
测试与排查
配置完成后,务必在真机或模拟器上彻底删除旧版本 App 再重新安装。如果启动时出现白屏、旧缓存未更新或者直接跳过启动画面的情况,可以参考官方的调试文档 TN3118 专门排查缓存问题。
距离新系统发布还有一些时间,建议大家在近期维护项目或准备新版时,顺手检查一下 Info.plist 的配置,避免秋后上架时被突如其来的报错卡住。



