Как запустить приложение в панели управления CarPlay после нажатия CPDashboardButton в CPDashboardController

#ios #swift #xcode #scenekit #carplay

#iOS #swift #xcode #scenekit #carplay

Вопрос:

У меня есть приложение для навигации, и сейчас я разрабатываю панель управления CarPlay. Я не могу запустить InterfaceController после нажатия кнопки в CPDashboard.

введите описание изображения здесь

Мой код кнопки:

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

После нажатия кнопки вызывается функция openSearchView(), но view по-прежнему остается на панели управления.

В документах нет информации, как мы можем переключаться между представлением (контроллер интерфейса <-> контроллер панели)

Ответ №1:

Не уверен, что это правильный путь, но об этом нет упоминания, даже в официальном примере приложения это не так. Но вы можете добиться этого, вызвав open(_, options:, completionHandler) dashboardScene.

Вот так

 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)
})]
 

Это откроет основное приложение и вызовет open(_, urlContexts:) основную сцену carplay, где вы можете обработать этот URL-адрес и отреагировать соответствующим образом, например, открыть поиск или что угодно.

Комментарии:

1. Вот и все! Я сделал это 3 недели назад и забыл написать ответ здесь. Спасибо за вашу помощь 😉