iOS共享与动作应用程序扩展
我想实现一个应用程序扩展,但我不能决定是否应该作为共享扩展或行动扩展实现它。
文档没有太多说明差异,只是这个:
- 分享(iOS和OS X) :发布到分享网站或与他人分享内容
- 操作(iOS和OS X; UI和非UI变体) :操纵或查看源自主机应用程序的内容
是否也有技术上的差异(例如,Action扩展是否允许我做一些Share扩展没有的function),还是仅仅是Apple希望你遵循的一个约定,以减less用户的困惑?
似乎至less有一个区别是,如果你想要一个非UI动作,你必须select一个动作而不是共享扩展。
其他的区别是什么?
我正在寻找的东西的例子:
- 他们是否都允许我自定义用户界面?
- 这两个都给我一些默认的UI使用?
- 他们是否有相同的权限,还是我被允许在一个和另一个之间做更多的事情?
- 他们都收到来自主机应用程序相同的input?
- 他们都可以发回相同的数据到主机应用程序?
这是我迄今为止的发现:
概要:
- 图标 :共享附加信息具有彩色图标。
- 图标位置 :某些应用程序(如Safari)具有大量与您的图标竞争的不可隐藏的活动图标。
- 用户界面 :共享扩展应具有一致的用户界面。
- 意图 :共享扩展是为了共享内容而保留,但即使是苹果也违反了这个要求。
图标
共享附加信息会显示一个彩色的图标,与您应用的主图标一样。 事实上,苹果声明:“如果你在你的共享扩展目标中提供了一个单独的图标,Xcode会忽略它。” [B]
动作扩展程序使用应用程序图标的“单色版本” [E]或“模板图像版本” [B] 。
图标的位置
共享附加信息出现在中间行,附加行动信息出现在最下面一行。
根据目标应用程序的不同,您的图标可能会与更多或更less的图标进行竞争,作为共享与动作的扩展。 例如,如果用户将主要通过Safari访问您的扩展程序,则您的应用程序将默认与另外4个图标竞争作为共享扩展名*,或另外8个图标作为操作扩展名。 另一方面,如果您定位到Google地图应用,那么您将与更多图标竞争作为共享扩展(4)而不是动作扩展(2)。
因此,为了最大限度地提高用户曝光率,您希望在定位到Safari时select共享附加信息,而在定位地图时则需要添加动作。
注意:大多数活动是由主机应用程序本身使用UIActivity和UIActivityViewController API提供的。 关于他们NSHipster有一个很好的写作 。
*显然,共享和活动扩展的数量根据安装的应用程序以及用户select显示/隐藏的内容而改变。
iOS 9.1模拟器的例子:
- 联系方式:
- 分享(1):邮件
- 活动(0):
- 地图:
- 分享(4):邮件, 提醒,Twitter,Facebook
- 活动(2):添加到collections夹,打印
- 新闻:
- 分享(4):邮件, 提醒,Twitter,Facebook
- 活动(5):添加到阅读列表,复制,在Safari中打开,报告问题,静音通道
- 相片:
- 分享(4):邮件, 推特,Facebook,Flickr
- 活动(6):复制,幻灯片,隐藏,分配给联系人,用作壁纸,打印
- 苹果浏览器:
- 分享(4):邮件, 提醒,Twitter,Facebook
- 活动(10):添加到collections夹,添加书签,添加到阅读列表,添加到主屏幕,添加到共享链接, 添加到新闻 ,复制,打印,在页面上查找,请求桌面站点
- (突出显示的文字):
- 分享(3):邮件, Twitter,Facebook
- 活动(1):复制
(斜体表示图标可以隐藏。)
用户界面
默认的共享扩展模板带有SLComposeServiceViewController的子类,以保持一致。 苹果希望你“尽可能地使用共享扩展中的系统提供的UI”。 [E]
另一方面, 动作扩展允许您select一个动作types ( 呈现用户界面或无用户界面 ),前者带有一个空白的UIViewController。
默认的共享扩展; 默认呈现用户界面操作扩展。
意图
尽pipe苹果表示,一个共享扩展应该“张贴到共享网站或与他人分享内容”,即使他们违反了这个要求与提醒。
操作扩展程序旨在“操纵或查看源自主机应用程序的内容”。 [一个]
事情是一样的
- 两者都允许您的应用程序提供扩展的多个版本。 (例如,你的应用程序可以提供两个共享扩展和两个动作扩展。)
- 在我有限的testing中,他们似乎都被默认禁用,用户必须明确点击更多button才能启用共享/操作扩展。
参考
- 答: 应用程序扩展增加您在应用程序扩展编程指南中的影响
- B: 在应用程序扩展编程指南中创build应用程序扩展
- C: 在应用程序扩展编程指南中分享
- D: 应用程序扩展程序devise指南中的操作
- E: iOS人机界面指南中的应用程序扩展