carPlay 的新代表

imp*_*jna 6 carplay swift ios13 swift5.1

我正在为 CarPlay 开发导航应用程序,在 iOS 12 中有两种来自 CPApplicationDelegate 的方法来检测 CarPlay 是否开启:

func application(_ application: UIApplication, didConnectCarInterfaceController interfaceController: CPInterfaceController, to window: CPWindow)
Run Code Online (Sandbox Code Playgroud)

func application(_ application: UIApplication, didDisconnectCarInterfaceController interfaceController: CPInterfaceController, from window: CPWindow)
Run Code Online (Sandbox Code Playgroud)

在 iOS 13 中,这些方法已被弃用,Apple 提供了新的委托:CPTemplateApplicationSceneDelegate

我尝试将这个新委托 CPTemplateApplicationSceneDelegate 连接到我的服务,该服务提供 CarPlay 的所有操作,但我认为可以帮助我的功能是:

func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何检测 CarPlay 是否已连接,以及如何为在新 iOS 13 CarPlay 的一个窗口中启动的 CarPlay 提供操作。

dar*_*ren 1

- - - - - - - - - - - - - -编辑 - - - - - - - - - - - --

\n\n

在一般目标的设置中选中“支持多个窗口”。然后在 Info.plist 中将配置添加到您的 carPlay 场景角色 (CPTemplateApplicationSceneSessionRoleApplication),如下所示:\nCarPlay信息配置\n瞧\xc3\xa0!\n您的委托将在以下位置调用

\n\n
func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene, didConnect interfaceController: CPInterfaceController, to window: CPWindow)\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以在其中配置 CarPlay 控制器。

\n\n

- - - - - - - - - - - - - -结尾 - - - - - - - - - - - --

\n\n

我会尝试这样的事情:

\n\n
func application(_ application: UIApplication,\n                 configurationForConnecting connectingSceneSession: UISceneSession, \n                 options: UIScene.ConnectionOptions) -> UISceneConfiguration {\n\n    if connectingSceneSession.role == UISceneSession.Role.carTemplateApplication {  \n      if let carPlayScene = connectingSceneSession.scene as? CPTemplateApplicationScene {\n        carPlayScene.delegate = self\n      }\n    }\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后在你的委托方法中你应该像 iOS12 一样设置你的界面

\n\n
func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene, didConnect interfaceController: CPInterfaceController, to window: CPWindow)\n
Run Code Online (Sandbox Code Playgroud)\n\n

不知道它是否有效,因为我的 CarPlay 模拟器崩溃了......

\n