zan*_*ken 22 cocoa-touch ios ios8-share-extension
我想为我的应用创建一个Android Style共享功能.我创建了一个共享扩展,当你在股票照片应用程序中选择图片并按下共享时,它会被调用.现在我想将这些图片发送到主应用程序并在那里处理.我现在的问题是:
coy*_*yer 30
Swift 3.1中的工作解决方案(在iOS10中测试):
您需要创建自己的URL Scheme,然后将此函数添加到ViewController并调用它@objc
@objc func openURL(_ url: URL) -> Bool {
// Code below.
}
Run Code Online (Sandbox Code Playgroud)
编辑:澄清说明:
openURL是UIApplication的一种方法 - 因为你的ShareExtension不是从UIApplication派生的,所以我添加了自己openURL("myScheme://myIdentifier")的定义与UIApplication相同的定义,以保持编译器满意(这样#selector(openURL(_ :) can can被发现).
然后我通过响应者,直到找到一个真正来自openURL并响应的响应者openURL.
更简单的示例代码,它将ShareExtension中的文件复制到本地目录,序列化文件名并在另一个应用程序上调用openURL:
Argument of '#selector' refers to instance method 'openURL' that is not exposed to Objective-C
Run Code Online (Sandbox Code Playgroud)
Tom*_*ton 11
目前没有办法做到这一点.共享扩展程序无法打开包含的应用程序.
共享扩展的预期方法是它们自己处理所有必要的工作.扩展可以通过使用自定义框架与其包含的应用程序共享代码,因此在大多数情况下这没有问题.
如果要将数据提供给应用程序,可以设置应用程序组,以便拥有共享目录.扩展可以在那里写入数据,应用程序可以读取它.但是,直到下次用户启动应用程序时才会发生这种情况.
从技术上讲,您无法从共享扩展中打开包含应用程序,但您可以安排本地通知,这就是我最终要做的。就在我调用 super.didSelectPost 之前,我用一些文本安排本地通知,如果用户想要打开包含应用程序,他们可以,如果不是 - 他们可以继续他们的工作流程。我什至认为这是比自动打开包含应用程序并破坏他们正在做的事情更好的方法。
| 归档时间: |
|
| 查看次数: |
18029 次 |
| 最近记录: |