iOS12无Scene场景下接入CarPlay停车类应用的实现方法咨询
问题解答
iOS12是否支持停车类CarPlay应用?
不支持。CarPlay的停车类应用权限com.apple.developer.carplay-parking是iOS13才正式对外发布的权限分类,iOS12系统仅支持音频、通信、导航三类第三方CarPlay应用权限,无法识别停车类权限标识。
崩溃原因说明
你遇到的崩溃是系统层面的逻辑导致的:当系统检测到应用配置了停车类CarPlay权限时,会默认判定应用采用iOS13+推出的Scene生命周期架构,强制要求应用实现CPTemplateApplicationSceneDelegate协议的相关方法,哪怕你已经在AppDelegate实现了旧版CarPlay生命周期方法也不会被调用,因此触发崩溃。
而你把权限换成导航类com.apple.developer.carplay-maps后功能正常,是因为导航类权限是iOS12就已经支持的旧分类,系统会兼容AppDelegate中的旧版生命周期回调。
可行解决方案
- 方案1:兼容iOS12用户使用CarPlay
暂时将CarPlay权限改为导航类com.apple.developer.carplay-maps,你当前在AppDelegate中实现的didConnectCarInterfaceController、didDisconnectCarInterfaceController方法已经符合iOS12的适配要求,无需额外修改。提交App Store审核时可备注说明使用导航类权限是为了兼容iOS12系统的停车应用CarPlay功能,功能符合CarPlay设计规范即可正常过审。 - 方案2:iOS12用户仅支持手机端功能,CarPlay仅适配iOS13+
保留停车类CarPlay权限,在Info.plist中对SceneManifest配置添加iOS13+的版本限制,同时在iOS12系统下隐藏CarPlay应用图标。该方案下iOS12用户仅能正常使用手机端功能,不会触发CarPlay相关崩溃,iOS13及以上用户可正常使用CarPlay功能。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

