是否可以使用 iOS 8 操作扩展将选定文本从 Safari 浏览器发送到已安装的应用程序?我正在考虑这个工作流程:用户将在网站中选择一个文本 > 点击共享图标 > 已安装的应用程序(不仅是共享对话框)打开所选文本。
3 回答
您需要打开 NSExtensionActivationSupportsWebURLWithMaxCount 以使扩展在 Safari 中可用。
当您从模板创建非 UI 操作扩展目标时,会自动创建一个 Action.js 文件。编辑文件以使用
document.getSelection().toString()
因为所有扩展都在 iPhone 上运行,与主应用程序一样。您可以使用 App Group 之类的东西来共享信息。
因此,您需要在两个目标中启用 App Group 功能并与 UserDefault(suiteName:) 共享信息或使用共享容器文件目录(对于共享容器,您可能需要文件协调器来使 2 个进程不会同时使用该文件)。
更重要的是,如果两个进程都在运行,您可以使用 darwin 通知来通知另一个有新信息更新。
我认为您尝试做的是:
- 选择网站上的文字
- 单击 Safari 底部工具栏上的共享按钮
- 打开您的应用程序,并将所选文本附加到一些 userInfo 字典
不幸的是,我认为这是不可能的。您可以创建一个扩展程序来接受选定的文本,但它不会完全打开您的应用程序,而不仅仅是扩展程序。
问题是在 Safari 中标记文本时没有“打开方式...”选择(例如,如果您在 Dropbox 应用程序中选择文件,则选择“打开方式...”)。
据我了解功能(老实说,我没有深入研究它,所以我可能错了),当您单击 Safari 中的共享菜单时(可能是选择时黑色弹出气泡中的那个)文本或底部工具栏按钮中的一个),它将触发一个“一次性”扩展,让您执行特定操作(例如通过消息、电子邮件发送选择或将其放入您的笔记中)。执行扩展后,它将返回到它被触发的地方(意思是 safari)。
同样,这与“打开方式...”不同,您需要为您的应用程序实现自定义 url 方案以进行侦听。但这不适用于简单的文本选择。它需要一个真正的 url 方案。
也许这个问题可以帮助您更好地理解:iOS Share vs Action App Extension
总结一下:你正在尝试的东西很可能在 iOS 上是不可能的。
可能的想法:您可以尝试向共享扩展添加一个按钮,该按钮使用所选文本生成自定义 url 方案并要求系统打开 url,但我可以想象这不会真正起作用