为什么 Xcode 为手表应用创建两个目标



我是WatchKit的新手,我想为我现有的iOS应用程序开发一个Watch扩展。我之前确实在同一个项目中开发了一个共享扩展,所以我对扩展目标如何嵌入到应用程序中有所了解。

但是,当我使用默认设置添加监视应用程序目标时,它创建了两个目标,WatchWatch Extension 。我很难理解两者兼而有之的目的。 默认情况下,Watch似乎具有非模型内容(例如资产,情节提要(,Watch Extension似乎具有我的实际代码(例如接口控制器(。为什么默认情况下他们不在一起?拆分它们的目的是什么,因为它们都将在手表上一起运行?

当Apple Watch首次问世时,"扩展"在手机上运行,包含UI的"App"在手表上运行。随着Watch OS 2的发布,两者都在手表上本机运行,但目标继续分开。希望很快我们就能有一个目标

虽然我不能说它们在构建依赖项方面总是需要成为单独的目标,但它们确实需要在打包方面有所不同,因为应用程序和扩展并不总是一起运行。

与 iOS 类似,.watchkitapp.watchkitextension 捆绑包是.watchkitapp包的一个不同组件。尽管监视应用确实需要应用扩展,但应用扩展可以在未启动其应用的情况下在后台运行。 手表甚至可能在前景中显示一个完全不同的应用程序。

例如,如果应用扩展包含表盘上显示的复杂功能,则该扩展程序将收到ClockKit的唤醒请求。 其复杂性控制器被实例化(基于扩展的属性列表中的信息(以更新复杂性服务器。这一切都将独立于手表应用程序发生。手表应用程序本身不会启动,除非用户碰巧点击了特定的表盘复杂功能。

最新更新