单击 CPDashboardController 中的 CPDashboardButton 后如何在 CarPlay Dashboard 中启动应用程序

问题描述

我有导航应用,现在我正在开发 CarPlay 仪表板。单击 CPDashboard 中的按钮后,我无法启动 InterfaceController。

enter image description here

我的按钮代码

let searchButton = CPDashboardButton(titleVariants: ["Find"],subtitleVariants: ["place"],image: searchImage) { [weak self] (_) in
                self?.openSearchView()
            }

点击按钮后,func openSearchView() 被调用,但视图仍保留在仪表板中。

文档中没有信息,我们如何在视图之间切换(界面控制器 仪表板控制器)

解决方法

不确定这是不是正确的方法,但没有提及这一点,甚至官方示例应用程序也没有这样做。但是您可以通过在dashboardScene 上调用open(_,options:,completionHandler) 来实现它。

像这样

dashboardController.shortcutButtons = [CPDashboardButton(titleVariants: ["Find"],subtitleVariants: ["place"],image: searchImage,handler: { _ in
    guard let url = URL(string: "your.app.scheme://whatever/wherever") else { return }
    templateApplicationDashboardScene.open(url,options: nil,completionHandler: nil)
})]

这将打开主应用程序并在主 carplay 场景中调用 open(_,urlContexts:),您可以在其中处理该 url 并做出相应的反应,例如打开搜索等。