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

How to launch app in CarPlay Dashboard after click CPDashboardButton in CPDashboardController

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

我的按钮代码:

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 并做出相应的反应,例如打开搜索等。