8

是否可以使用 iOS 8 操作扩展将选定文本从 Safari 浏览器发送到已安装的应用程序?我正在考虑这个工作流程:用户将在网站中选择一个文本 > 点击共享图标 > 已安装的应用程序(不仅是共享对话框)打开所选文本。

4

3 回答 3

3

您需要打开 NSExtensionActivationSupportsWebURLWithMaxCount 以使扩展在 Safari 中可用。

当您从模板创建非 UI 操作扩展目标时,会自动创建一个 Action.js 文件。编辑文件以使用

document.getSelection().toString()

资源

于 2017-06-01T18:26:31.340 回答
2

因为所有扩展都在 iPhone 上运行,与主应用程序一样。您可以使用 App Group 之类的东西来共享信息。

因此,您需要在两个目标中启用 App Group 功能并与 UserDefault(suiteName:) 共享信息或使用共享容器文件目录(对于共享容器,您可能需要文件协调器来使 2 个进程不会同时使用该文件)。

更重要的是,如果两个进程都在运行,您可以使用 darwin 通知来通知另一个有新信息更新。

于 2017-05-27T08:58:51.847 回答
1

我认为您尝试做的是:

  1. 选择网站上的文字
  2. 单击 Safari 底部工具栏上的共享按钮
  3. 打开您的应用程序,并将所选文本附加到一些 userInfo 字典

不幸的是,我认为这是不可能的。您可以创建一个扩展程序来接受选定的文本,但它不会完全打开您的应用程序,而不仅仅是扩展程序。

问题是在 Safari 中标记文本时没有“打开方式...”选择(例如,如果您在 Dropbox 应用程序中选择文件,则选择“打开方式...”)。

据我了解功能(老实说,我没有深入研究它,所以我可能错了),当您单击 Safari 中的共享菜单时(可能是选择时黑色弹出气泡中的那个)文本或底部工具栏按钮中的一个),它将触发一个“一次性”扩展,让您执行特定操作(例如通过消息、电子邮件发送选择或将其放入您的笔记中)。执行扩展后,它将返回到它被触发的地方(意思是 safari)。

同样,这与“打开方式...”不同,您需要为您的应用程序实现自定义 url 方案以进行侦听。但这不适用于简单的文本选择。它需要一个真正的 url 方案。

也许这个问题可以帮助您更好地理解:iOS Share vs Action App Extension

总结一下:你正在尝试的东西很可能在 iOS 上是不可能的。

可能的想法:您可以尝试向共享扩展添加一个按钮,该按钮使用所选文本生成自定义 url 方案并要求系统打开 url,但我可以想象这不会真正起作用

于 2017-05-31T17:57:25.447 回答