Everyone
我正在开发一款支持查看文档文件(文档、文本和其他文件)的应用程序。由于我已经为这些文件类型注册了我的应用程序,如果有人通过电子邮件向我发送文档文件,我会使用didFinishLaunchingWithOptions方法获取文件的路径。现在的问题是,如果应用程序已经在后台运行,该怎么办?我将如何获取导致我的应用程序激活以打开该文件的文件路径?
向致以最诚挚的问候
从应用程序委托中使用"application:openURL:sourceApplication:annotation:";以下文本摘自苹果公司的文档
application:openURL:sourceApplication:annotation:
要求代理打开由URL标识的资源。- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
讨论
如果某个应用程序是由于另一个应用程序请求其打开URL资源而启动的,UIApplication会首先向该应用程序发送一条application:didFinishLaunchingWithOptions:message,然后调用此方法。此方法为处理应用程序的委托提供源应用程序的bundle ID以及该应用程序的任何注释信息。如果应用程序在收到打开URL的请求时已经在运行,则会调用此方法,但应用程序:didFinishLaunchingWithOptions:not。
如果未实现此方法,UIApplication将调用application:handleOpenURL:(如果已实现)。您应该优先于应用程序实现此方法:handleOpenURL:。
此方法没有匹配的通知。
通常,您不想在didFinishLaunchingWithOptions:
中打开文档,而是在application:openURL:sourceApplication:annotation:
或application:handleOpenURL:
中打开。
来自文档:
如果您的应用程序已经在运行当文档请求到达时事件的顺序取决于委托实施和iOS的当前版本。在iOS 4.2中,这个应用程序:openURL:源应用程序:注释:方法,并且应检查文档并打开它。如果您的代表没有实现方法,或者如果您的应用程序仅在iOS 4.1及更早版本中运行应用程序:handleOpenURL:方法被调用。