【问题标题】:How can support iOS15 CarPlay from iOS12 app如何从 iOS12 应用程序支持 iOS15 CarPlay
【发布时间】:2021-10-05 08:59:11
【问题描述】:

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

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

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

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

谢谢

【问题讨论】:

  • 可能是时候让 iOS 12 设备离开了。他们总是可以继续运行您的旧版本,但您说的是 2014 年及更早的设备无法运行 iOS13。
  • @Paulw11 iOS12 用户的数量不足以将他们从支持列表中删除,所以它不是一个选项......

标签: ios ios15 xcode13 carplay


【解决方案1】:

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

我的应用支持MPPlayableContent 和来自 CarPlay 框架的新模板样式。关键步骤是:

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

查看苹果示例代码:https://developer.apple.com/documentation/carplay/integrating_carplay_with_your_music_app

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

【讨论】:

  • 谢谢。我试试看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-21
  • 1970-01-01
相关资源
最近更新 更多