以下是我尝试过的无效方法:
以下是我所想到的不起作用:
以下是我正在考虑的选项:
UIDocumentInteractionController被确认在Xcode 6.5中工作,但流程有点不稳定。 NSURL的东西应该也可以,但它也有点可疑。有没有人有任何其他想法让我的包含应用程序从共享扩展中打开,或者想要通过共享扩展与它进行通信?
答案 0 :(得分:5)
我已经确认NSURLSession方式("考虑"选项上面的第二个子弹)确实有效。我还在解决一些问题,但这里有基础知识。使用此方法,您确实可以从共享扩展程序中打开您的应用程序。
此方法需要3个主要步骤,如下所示:
确保您下载的内容需要足够长的时间才能在下载任务完成之前终止扩展。
NSString *address = @"https://googledrive.com/host/0B5zObXR9UzgmbFpob2J5eXpjNXc/file3m";
self.mySession = [self configureMySession];
NSURL *url = [NSURL URLWithString:address];
NSURLSessionTask *myTask = [self.mySession downloadTaskWithURL:url];
[myTask resume];
exit(0);
然后,在您的包含应用程序的UIApplicationDelegate类中,实现
application:handleEventsForBackgroundURLSession:completionHandler:
方法。在您的扩展程序终止后下载任务完成时,将调用此方法。然后,在此方法中,您可以调用
[[UIApplication sharedApplication] openURL:url];
或在您的应用内容中执行其他操作。
此方法的主要问题是扩展程序终止的时间与包含应用程序启动的时间之间存在延迟。与UIDocumentInteractionController方法相比,此方法的主要优点是不需要额外的用户交互。我将继续进行实验,将会有更多细节。