Xcode12.5.1停车App接入CarPlay后iPhone模拟器黑屏故障求助
问题原因
你的iPhone端Scene配置的Info.plist键名不符合系统要求,直接导致系统无法正确初始化iPhone端主窗口:
- 你在
UIWindowSceneSessionRoleApplication数组里使用了非标准的自定义键名Configuration Name、Delegate Class Name、Storyboard Name,系统可识别的标准键名应为UISceneConfigurationName、UISceneDelegateClassName、UISceneStoryboardFile - CarPlay端的配置键名是符合规范的,所以CarPlay模拟器可以正常运行,iPhone端识别不到正确的Scene配置就会出现黑屏
修复方案
- 修改Info.plist中iPhone端的Scene配置,替换为标准键名即可:
<key>UIWindowSceneSessionRoleApplication</key> <array> <dict> <key>UISceneConfigurationName</key> <string>Default configuration</string> <key>UISceneDelegateClassName</key> <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string> <key>UISceneStoryboardFile</key> <string>Main</string> </dict> </array>
- 额外校验项:
- 确认你的
SceneDelegate中实现了scene(_:willConnectTo:options:)方法,正确初始化主window并设置了rootViewController - 确认项目Signing&Capabilities中已经添加了CarPlay权限,且选择了和停车类应用匹配的CarPlay类型
- 修改后如果仍黑屏,可清空模拟器缓存(模拟器菜单->Device->Erase All Content and Settings)后重新编译运行
低侵入兼容方案
如果不想改动原有移动端的Scene配置,也可以使用旧版CarPlay集成方案,对原有移动端代码无影响:
不需要配置多Scene,直接在AppDelegate中实现application(_:didConnectCarInterfaceController:to:)和application(_:didDisconnectCarInterfaceController:from:)方法,直接处理CarPlay的连接、模板设置逻辑即可,适合旧项目快速扩展CarPlay功能。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

