iOS共享vs操作应用程序扩展

iOS共享vs操作应用程序扩展,ios,ios8,ios8-extension,ios8-share-extension,Ios,Ios8,Ios8 Extension,Ios8 Share Extension,我想实现一个应用程序扩展,但我无法决定是将其实现为共享扩展还是操作扩展 没有说太多的区别,只是: 共享(iOS和OS X):发布到共享网站或与他人共享内容 操作(iOS和OS X;UI和非UI变体):操作或查看源自主机应用程序的内容 是否也存在技术差异(例如,操作扩展是否允许我做共享扩展不允许的事情),或者这仅仅是苹果希望你遵循的惯例,以减少用户对事情的困惑 似乎至少有一个区别是,如果您想要非UI操作,则必须选择操作而不是共享扩展 其他的区别是什么 我正在寻找的事物的示例: 它们都允许我自

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

没有说太多的区别,只是:

  • 共享(iOS和OS X):发布到共享网站或与他人共享内容
  • 操作(iOS和OS X;UI和非UI变体):操作或查看源自主机应用程序的内容
是否也存在技术差异(例如,操作扩展是否允许我做共享扩展不允许的事情),或者这仅仅是苹果希望你遵循的惯例,以减少用户对事情的困惑

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

其他的区别是什么

我正在寻找的事物的示例:

  • 它们都允许我自定义UI吗
  • 两者是否都为我提供了一些默认的用户界面
  • 他们有相同的权限吗,或者我可以在其中一个和另一个中做更多的事情吗
  • 它们是否都从主机应用程序接收相同的输入
  • 它们能否将相同的数据发送回主机应用程序

以下是我目前的发现:

总结:
  • 图标:共享扩展具有彩色图标
  • 图标位置:有些应用程序,如Safari,有大量不可隐藏的活动图标,您的图标将与之竞争
  • 用户界面:共享扩展应具有一致的用户界面
  • 意图:共享扩展是为了共享内容而保留的,但即使是苹果也违反了这一要求

偶像 共享扩展会得到一个彩色图标,与应用程序的主图标相同。事实上,苹果表示:“如果在共享扩展目标中提供一个单独的图标,Xcode会忽略它。”

操作扩展使用应用图标的“单色版本”或应用图标的“模板图像版本”


图标位置

共享扩展出现在中间行,操作扩展出现在底部行。

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

因此,为了最大限度地提高您对用户的曝光率,您希望在瞄准Safari时选择共享扩展,而在瞄准地图时选择操作扩展

注意:大多数活动都是由主机应用程序本身使用和API提供的。有一个问题

*显然,共享和活动扩展的数量取决于安装的应用程序以及用户选择显示/隐藏的应用程序

iOS 9.1模拟器的示例:
  • 联系人:
    • 分享(1):邮件
    • 活动(0):
  • 地图:
    • 分享(4):邮件、提醒、推特、Facebook
    • 活动(2):添加到收藏夹、打印
  • 新闻:
    • 分享(4):邮件、提醒、推特、Facebook
    • 活动(5):添加到阅读列表、复制、在Safari中打开、报告问题、静音频道
  • 照片:
    • 分享(4):邮件、推特、Facebook、Flickr
    • 活动(6):复制、幻灯片放映、隐藏、分配给联系人、用作壁纸、打印
  • 狩猎:
    • 分享(4):邮件、提醒、推特、Facebook
    • 活动(10):添加到收藏夹、添加书签、添加到阅读列表、添加到主屏幕、添加到共享链接、添加到新闻、复制、打印、在页面上查找、请求桌面站点
  • (突出显示的文本):
    • 分享(3):邮件、推特、Facebook
    • 活动(1):副本
(斜体表示图标可以隐藏。)


用户界面 默认的共享扩展名模板附带一个子类,用于保持内容的一致性。苹果希望你“尽可能多地在共享扩展中使用系统提供的用户界面。”

动作扩展,另一方面,允许您选择一种动作类型(显示用户界面或无用户界面),前者带有一个空白的UIViewController


违约股份延期;默认显示用户界面操作扩展


意图 尽管苹果声明共享扩展版应“发布到共享网站或与其他人共享内容”,但即使他们通过提醒违反了这一要求

操作扩展旨在“操纵或查看源自主机应用程序的内容。”


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

工具书类
  • A:
  • B:
  • C:
  • D:
  • E:

信息量很大!问题:扩展是否可用于结构化数据,例如书籍列表
[{name:x,author:y}…]
?这当然需要扩展只在books屏幕中可用,并且主机以特定格式导出数据。你能为应用程序分别设置一个(操作和共享)吗?我觉得我好像在什么地方读过这个答案,但我已经回到了文档中,我找不到它。可用性呢?iOS向后兼容性?还有为什么有些应用程序只显示一个r