openURL在Share扩展中不起作用

use*_*008 6 ios ios8 ios-app-extension

尝试[self.extensionContext openURL:... completionHandler:...];在iOS 8 Share扩展程序中使用以打开包含应用程序永远不会打开应用程序,并始终使用success = NO调用完成处理程序.

以下是Action扩展的相同问题,但我认为Share扩展能够打开包含应用程序比Action扩展更合理.共享扩展的要点是上传一个可能很大的数据,并且在不打开应用程序的情况下执行此操作的唯一方法是通过NSURLSession,这只能执行HTTP(S)上载.但是应用程序可能希望通过与HTTP(S)上载不同的机制来共享内容.

Apple文档未声明openURL...不能用于任何特定类型的扩展.很难知道这是一个错误还是预期的行为.没有关于此的官方信息.

arc*_*att 8

以下是一些可能的解决方法...... 与Share扩展中的应用程序进行通信/打开

实际工作的可以总结为:

  • 使用UIDocumentInteractionController并使用特殊扩展类型注册容器应用程序以从您的扩展程序打开容器应用程序
  • 使用虚拟NSURLSessionTask来获取application:handleEventsForBackgroundURLSession:completionHandler:要调用的容器应用程序的UIApplicationDelegate类的方法.然后,在该方法中,您可以打电话[[UIApplication sharedApplication] openURL:url]打开您想要的任何内容.

这些方法都不是完美的,但它们确实有效(不确定Apple是否会喜欢它们).有关详细信息,请查看链接.希望这可以帮助 :)

编辑:您还可以使用描述的UIWebView /sf/answers/1723021261/


n8t*_*8tr 1

该文档确实表明“扩展点决定是否支持此方法”,并且实际上只有那些使用 Today Extension 的人才能使用 openUrl 启动其主机应用程序。共享、操作、键盘和文档提供程序不适用于任何人(测试版 5)。