我想实现应用扩展程序,但我无法决定是否应将其作为共享扩展程序或操作扩展程序实现。
The documentation并没有对这些差异说太多,只是这样:
是否存在技术差异(例如,Action扩展是否允许我执行Share扩展所不具备的功能),还是仅仅是Apple希望您遵循的约定,以减少对用户的混淆?
似乎至少有一个区别是,如果您想要非UI操作,则必须选择Action而不是Share扩展。
其他差异是什么?
我正在寻找的事情的例子:
答案 0 :(得分:75)
到目前为止,我的调查结果如下:
共享扩展程序会显示一个彩色图标,该图标与应用程序的主图标相同。事实上,Apple指出:"如果您在共享扩展目标中提供单独的图标,Xcode会忽略它。" [B]
动作扩展程序使用"应用程序图标的单色版本," [E] 或"模板图像版本" {您的应用图标的{3}} 。
共享扩展程序显示在中间行,操作扩展名显示在底行。
根据所定位的应用,您的图标可能会与或多或少的图标竞争,作为共享与动作扩展。例如,如果用户主要通过Safari访问您的扩展程序,则默认情况下,您的应用程序将与其他4个图标竞争共享扩展程序*,或将8个其他图标作为操作扩展程序进行竞争。另一方面,如果您要定位地图应用,则会将更多图标作为共享扩展(4)而不是动作扩展(2)进行竞争。
因此,为了最大限度地提高您对用户的曝光率,您可以在定位Safari时选择共享扩展程序,但在定位Google地图时则选择操作扩展程序。
注意:大多数活动都是由主机应用本身使用和UIActivity API提供的。有UIActivityViewController。
*显然,共享和活动扩展的数量会根据已安装的应用程序以及用户选择显示/隐藏的内容而发生变化。
(斜体表示图标可以隐藏。)
默认的共享扩展程序模板附带了great write-up about them on NSHipster的子类,以保持一致。 Apple希望您[尽可能]在共享扩展中使用系统提供的UI。" SLComposeServiceViewController
另一方面,动作扩展程序允许您选择操作类型(呈现用户界面或无用户界面),前者带有空白的UIViewController。
[E]
默认分享延期;默认显示用户界面操作扩展名。
虽然Apple声明分享扩展程序应该发布到共享网站或与他人共享内容," 甚至他们违反了提醒要求。
动作扩展程序旨在操纵或查看源自主机应用程序的内容。" [A]