Apple 的 iMessage 模板或向现有应用程序添加扩展有什么区别?

What is the difference between Apple's iMessage template or adding an extension to an existing app?

我注意到在为 iOS 10.

创建消息应用程序时有所不同

如果您使用新项目模板上的 iMessage Application 选择创建新项目,Xcode 将创建两个目标,一个应用程序和一个扩展程序。

但项目无法 运行。

(看第二张图,底部的目标选择器只有一个选择,那个目标就是扩展名)

当您创建一个普通应用程序(如单视图应用程序),然后添加一个目标是 iMessage 类型的应用程序扩展时,您将有两个目标,即应用程序和扩展程序。

我的问题是:

Xcode iMessage 的模板实际上只是创建一个扩展,对吧?不是应用加扩展,对吗?

如果这是真的,为什么名字是 Xcode 创建应用程序目标?如果它实际上不是应用程序并且永远不会 运行,那么让一个应用程序目标编译并出现在扩展名为 .app 的产品部分的目的是什么?

或者实际上扩展就像 "remote control" 运行 应用程序上的代码一样?这很混乱,因为我错误地将很多内容拖到项目中并将两个目标都标记为具有它们并且最终的东西大小加倍,因为资产被复制到两个目标。

最后一个问题是:提交给 Apple 的是什么,只是扩展还是两者都提交?

我的猜测是让整个事情保持一致。我的意思是当你做其他扩展(键盘、小部件等)时,这必须带有一个应用程序。这里的情况有点复杂,我们可以自己做一个 运行 的 iMessage 应用程序,或者作为现有应用程序的扩展......所以当他们开发 SDK 时,他们必须保持两种方式,但是那只是一个猜测:) 此外,我非常确定将 iMessage 应用程序提交到商店时,主要目标将随之而来,就像所有其他实际扩展一样。

澄清一下——使用模板创建的 iMessage 扩展程序不会出现在主屏幕上。它们仅出现在消息应用程序中。如果您使用 Xcode 中的 "Add Target" 菜单将 iMessage 扩展程序添加到现有应用程序,则您会将您的扩展程序嵌入出现在主屏幕上的主机应用程序中。

据我所知,"app target" 的工作就是坐在那里拿着你的产品名称。在 Beta 1 中,我相信目标甚至没有构建设置。到目前为止,它有构建设置但没有构建阶段,我猜它会保持这种状态。

但是,它确实会在构建后出现在 Products 文件夹中,这让我认为它会以某种方式与扩展一起提交到应用程序商店。无论如何,如果您确保文件的 "Target Membership" 仅设置为扩展名,您应该避免任何不必要的大小增加。