iOS共享与动作应用程序扩展

时间:2015-11-11 01:18:54

标签: ios ios8 ios8-extension ios8-share-extension

我想实现应用扩展程序,但我无法决定是否应将其作为共享扩展程序或操作扩展程序实现。

The documentation并没有对这些差异说太多,只是这样:

  • 分享(iOS和OS X):发布到共享网站或与他人分享内容
  • 操作(iOS和OS X; UI和非UI变体):操纵或查看源自主机应用程序的内容

是否存在技术差异(例如,Action扩展是否允许我执行Share扩展所不具备的功能),还是仅仅是Apple希望您遵循的约定,以减少对用户的混淆?

似乎至少有一个区别是,如果您想要非UI操作,则必须选择Action而不是Share扩展。

其他差异是什么?

我正在寻找的事情的例子:

  • 他们都允许我自定义用户界面吗?
  • 两者都给我一些默认用户界面吗?
  • 他们是否拥有相同的权限,或者我被允许在一个与另一个中做更多的事情?
  • 他们是否都从Host应用程序收到相同的输入?
  • 他们都可以将相同的数据发送回主机应用吗?

1 个答案:

答案 0 :(得分:75)

到目前为止,我的调查结果如下:

要点:

  • 图标:共享扩展程序有彩色图标。
  • 图标位置:某些应用程序(如Safari)会有大量不可隐藏的活动图标,您的图标会与之竞争。
  • 用户界面:共享扩展程序应具有一致的用户界面。
  • 意图:共享扩展程序旨在保留用于共享内容,但即使Apple也违反此要求。

图标

共享扩展程序会显示一个彩色图标,该图标与应用程序的主图标相同。事实上,Apple指出:"如果您在共享扩展目标中提供单独的图标,Xcode会忽略它。" [B]

动作扩展程序使用"应用程序图标的单色版本," [E] 或"模板图像版本" {您的应用图标的{3}}

[B]

图标位置

共享扩展程序显示在中间行,操作扩展名显示在底行。

根据所定位的应用,您的图标可能会与或多或少的图标竞争,作为共享与动作扩展。例如,如果用户主要通过Safari访问您的扩展程序,则默认情况下,您的应用程序将与其他4个图标竞争共享扩展程序*,或将8个其他图标作为操作扩展程序进行竞争。另一方面,如果您要定位地图应用,则会将更多图标作为共享扩展(4)而不是动作扩展(2)进行竞争。

因此,为了最大限度地提高您对用户的曝光率,您可以在定位Safari时选择共享扩展程序,但在定位Google地图时则选择操作扩展程序。

注意:大多数活动都是由主机应用本身使用enter image description hereUIActivity API提供的。有UIActivityViewController

*显然,共享和活动扩展的数量会根据已安装的应用程序以及用户选择显示/隐藏的内容而发生变化。

iOS 9.1 Simulator中的示例:

  • 隐形眼镜
    • 分享(1):邮件
    • 活动(0):
  • 图:
    • 分享(4):邮件,提醒,推特,Facebook
    • 活动(2):添加到收藏夹,打印
  • 新闻:
    • 分享(4):邮件,提醒,推特,Facebook
    • 活动(5):添加到阅读列表,复制,在Safari中打开,报告关注,静音频道
  • 照片:
    • 分享(4):邮件, Twitter,Facebook,Flickr
    • 活动(6):复制,幻灯片放映,隐藏,分配给联系人,用作壁纸,打印
  • Safari中:
    • 分享(4):邮件,提醒,推特,Facebook
    • 活动(10):添加到收藏夹,添加书签,添加到阅读列表,添加到主屏幕,添加到共享链接,添加到新闻,复制,打印,在页面上查找,请求桌面版网站
  • (突出显示的文字):
    • 分享(3):邮件, Twitter,Facebook
    • 活动(1):复制

(斜体表示图标可以隐藏。)

用户界面

默认的共享扩展程序模板附带了great write-up about them on NSHipster的子类,以保持一致。 Apple希望您[尽可能]在共享扩展中使用系统提供的UI。" SLComposeServiceViewController

另一方面,

动作扩展程序允许您选择操作类型呈现用户界面无用户界面),前者带有空白的UIViewController。

  

[E] enter image description here
  默认分享延期;默认显示用户界面操作扩展名。

意图

虽然Apple声明分享扩展程序应该发布到共享网站或与他人共享内容," enter image description here 甚至他们违反了提醒要求。

动作扩展程序旨在操纵或查看源自主机应用程序的内容。" [A]

相同的事情

  • 两者都允许您的应用提供多个版本的扩展程序。 (例如,您的应用可以提供两个共享扩展和两个操作扩展。)
  • 在我的有限测试中,默认情况下它们似乎都被禁用,用户必须明确点击更多按钮才能启用共享/操作扩展。

参考