ios - 如何从 iOS12 应用程序支持 iOS15 CarPlay
问题描述
我有一个具有汽车播放功能的应用程序,它支持 ios12+。最近Apple发布了iOS15,旧的CarPlay不再工作了。(看起来很少有 api 从“弃用”状态变为“不工作”状态。)
iOS15 CarPlay 需要使用“info.plist”中的“应用程序场景清单 - CPTemplateApplicationSceneSessionRoleApplication”选项进行 iOS13 样式项目设置,而 iOS12 不能使用“应用程序场景清单”
这两个冲突的情况让我很沮丧。
不知道有没有人解决这个问题...
谢谢
解决方案
无论您是否放弃 iOS 12,您都必须迁移现有实现以支持“新”CarPlay。似乎 iOS 15 设备无法处理旧的MPPlayableContent
实现,即使它们应该向后兼容(我看到的是根列表已显示,但我无法点击任何行)。
我的应用同时支持MPPlayableContent
CarPlay 框架中的新模板样式。关键步骤是:
- 将 CarPlay 类型添加到权利 (Xcode) 和附加功能(在 developer.apple.com 上的应用标识符下)
- 为 CarPlay 添加场景委托(即
CarPlaySceneDelegate
)符合CPTemplateApplicationSceneDelegate
- 为 App 添加场景委托(即
SceneDelegate
) - 向 info.plist添加一个
UIApplicationSceneManifest
键,并为 和 添加条目CPTemplateApplicationSceneSessionRoleApplication
(UIWindowSceneSessionRoleApplication
类UISceneConfigurations
名必须与您相应的场景委托类名匹配) - 将一堆代码从应用程序委托函数移动到“共享”函数(即逻辑从
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
推荐阅读
- ruby-on-rails - 无法从根目录中删除 rvm
- javascript - 在我的 ubuntu 服务器上使用不和谐机器人时出错
- javascript - VueJs - 突变不会将新对象保存到状态
- python - 设置功能在另一个窗口中不起作用
- css - 如何在我的 ASP.NET webforms 应用程序中启用密码眼?
- batch-file - 使用 pfdtk 批量转换 pdf 文件,但名称中带有空格
- asp.net-mvc - 在 ASP.NET MVC 中使用一种形式创建模型的多个实例
- c++ - 声明后设置 boost::shared_array 的大小
- wordpress - WordPress:如何从页面中检索自定义字段数据?
- asp.net-core-3.1 - ASP.NET Core 3.1 使用其路径更新图像