首页 > 解决方案 > 如何从 iOS12 应用程序支持 iOS15 CarPlay

问题描述

我有一个具有汽车播放功能的应用程序,它支持 ios12+。最近Apple发布了iOS15,旧的CarPlay不再工作了。(看起来很少有 api 从“弃用”状态变为“不工作”状态。)

iOS15 CarPlay 需要使用“info.plist”中的“应用程序场景清单 - CPTemplateApplicationSceneSessionRoleApplication”选项进行 iOS13 样式项目设置,而 iOS12 不能使用“应用程序场景清单”

这两个冲突的情况让我很沮丧。

不知道有没有人解决这个问题...

谢谢

标签: iosios15xcode13carplay

解决方案


无论您是否放弃 iOS 12,您都必须迁移现有实现以支持“新”CarPlay。似乎 iOS 15 设备无法处理旧的MPPlayableContent实现,即使它们应该向后兼容(我看到的是根列表已显示,但我无法点击任何行)。

我的应用同时支持MPPlayableContentCarPlay 框架中的新模板样式。关键步骤是:

  • 将 CarPlay 类型添加到权利 (Xcode) 和附加功能(在 developer.apple.com 上的应用标识符下)
  • 为 CarPlay 添加场景委托(即CarPlaySceneDelegate)符合CPTemplateApplicationSceneDelegate
  • 为 App 添加场景委托(即SceneDelegate
  • 向 info.plist添加一个UIApplicationSceneManifest键,并为 和 添加条目CPTemplateApplicationSceneSessionRoleApplicationUIWindowSceneSessionRoleApplicationUISceneConfigurations名必须与您相应的场景委托类名匹配)
  • 将一堆代码从应用程序委托函数移动到“共享”函数(即逻辑从application(_:open:options:)scene(_:openURLContexts:)是相同的)
  • 实施应用程序(_:configurationForConnecting:选项:)
  • @available(iOS 13.0, *)在新的api周围添加一堆
  • 弱链接 CarPlay 框架
  • 困难的部分:使用新的 CarPlay 框架重新实现 CarPlay

请参阅 Apple 示例代码:https ://developer.apple.com/documentation/carplay/integrating_carplay_with_your_music_app

有关设置过程的更多详细信息: https ://medium.com/br-next/launching-br-radio-on-carplay-audio-8baab824b932


推荐阅读