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