jat*_*jat 2 ios carplay swiftui
我有一个完整的 SwiftUI 项目/应用程序(在 AppStore 中),我想添加一些 CarPlay 功能。我已正确设置权利,并且能够在 CarPlay 模拟器上看到该图标。
我已经尝试了具有各种类配置的各种 info.plist 配置,并且仅在模拟器中启动应用程序时才发生崩溃。
我对显示视图的方式有点困惑。我想从一个简单的“Hello world”开始,但即使这样也很有挑战性:)
这个问题似乎是我需要的,但没有详细介绍 AppDelegate 配置。
iOS 15.4 - SwiftUI + CarPlay - 状态未更新
这看起来很有希望,但对我来说又不够详细:
https://dev.to/nitricware/adding-carplay-to-a-swiftui-life-cycle-app-h9h
这也是,但我怀疑这是一种较旧的显示视图的方式。
https://www.adapptor.com.au/blog/enhance-existing-apps-with-carplay
如果我能通过简单的“Hello World”获得帮助,我将不胜感激!
来自信息.plist
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<true/>
<key>UISceneConfigurations</key>
<dict>
<key>CPTemplateApplicationSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).CarPlaySceneDelegate</string>
</dict>
</array>
</dict>
</dict>
Run Code Online (Sandbox Code Playgroud)
CarPlaySceneDelegate.swift
import Foundation
import CarPlay
class CarPlaySceneDelegate: UIResponder, CPTemplateApplicationSceneDelegate {
func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene,
didConnect interfaceController: CPInterfaceController) {
let screen = CPInformationTemplate(title: "Root", layout: .leading, items: [CPInformationItem(title: "Hello", detail: "CarPlay")], actions: [])
interfaceController.setRootTemplate(screen, animated: true, completion: { _,_ in
// Do nothing
})
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我一直遇到与上述相同的问题。我试图将 CarPlay 功能添加到现有的 SwiftUI 应用程序中;但是,在 CarPlay 中启动应用程序会导致“NSGenericException”,原因是:“应用程序未在其场景委托中实现 CarPlay 模板应用程序生命周期方法。” 错误。
我下载了 Paulw11 的 CPHelloWorld 项目(谢谢 Paul!)并让它按预期运行。然后我将 CPHelloWorld 的权利、info.plist、CarPlaySceneDelegate 等与我的进行了比较,一切似乎都是一样的。然而,他的工作有效,而我的却没有。然后,我启动了一个新的 SwiftUI 模板项目,并从 CPHelloWorld 引入了 CarPlay 功能,并确认其有效。然后,我引入了项目中的所有源代码、包依赖项和项目设置 - 每一步都检查 CarPlay 应用程序是否仍然正确启动。最终,我在这个新项目中将我的应用程序与功能正常的 CarPlay 场景重新组合在一起。
那么为什么我最初的尝试仍然失败呢?我开始比较构建设置,发现一些涉及不同场景的内容。在与 CarPlay 配合使用的应用程序中,“应用程序场景清单(生成)”设置为“否”。在我原来的应用程序中(尽管权利、info.plist 和 CarPlaySceneDelegate 相同,但该应用程序无法正常工作),这被设置为 YES。不知道它是什么时候打开的,但它就在那里。
我回到不使用 CarPlay 的应用程序并关闭此构建设置(“应用程序场景清单(生成)”== NO),然后我可以在 CarPlay 中启动我的应用程序并在模拟器中查看根模板。
目标 -> 构建设置 -> “应用程序场景清单(生成)”== NO
| 归档时间: |
|
| 查看次数: |
1087 次 |
| 最近记录: |