Ios &引用;“以…开头”;如果应用程序尚未打开,则会出现问题

Ios &引用;“以…开头”;如果应用程序尚未打开,则会出现问题,ios,objective-c,appdelegate,ios6.1,Ios,Objective C,Appdelegate,Ios6.1,我的应用程序可以读取通过“打开方式…”对话框打开的.txt文件。我在两个 -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 及 方法 有趣的是,它似乎只在应用程序之前打开的情况下才起作用。如果我在电子邮件中打开一个.txt文件并选择“打开方式”,则我的应用程序。

我的应用程序可以读取通过“打开方式…”对话框打开的.txt文件。我在两个

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

方法

有趣的是,它似乎只在应用程序之前打开的情况下才起作用。如果我在电子邮件中打开一个.txt文件并选择“打开方式”,则我的应用程序。我可以在控制台上看到

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
有人打电话来。我还可以看到正确文件的URL,该文件在

file://localhost/private/var/mobile/Applications/F15C57D0-4F62-4979-943A-2D387488D59C/Documents/Inbox/myFile.txt

但是当我试图打开文件时,我得到一个错误,即文件不存在

如果我重复这些步骤(应用程序在后台打开),那么文件就会被找到并立即工作。
这是为什么?

您应该处理“打开…”在
应用程序期间:通过使用
uiapplicationaunchoptionsurlkey
键从
options
字典中获取URL,而不是直接传入
应用程序:openUrl:sourceApplication:annotations
URL
完成启动


您应该只在
应用程序:openUrl:sourceApplication:annotations
中处理该情况。根据文件():

如果必须启动应用程序才能打开URL,应用程序将首先调用
应用程序:willFinishLaunchingWithOptions:
应用程序:didffinishlaunchingwithoptions:
方法,然后调用此方法。这些方法的返回值可用于防止调用此方法。(如果应用程序已在运行,则仅调用此方法。)


所以,不再需要在
应用程序:didFinishLaunchingWithOptions:
中处理打开文件。

您指的是
打开url:url
的url,还是
应用程序:didFinishLaunchingWithOptions:
的选项字典中由键
UIApplicationLaunchionSurlkey指定的值?如果您的应用程序尚未运行,您将收到一条
应用程序:didFinishLaunchingWithOptions:
消息,其中包含选项词典中的URL,然后您还将收到一条
应用程序:openURL:sourceApplication:注释:
消息。确保您没有在第一个方法中删除文件,然后在调用第二个方法时希望它仍然存在。这可能就是问题所在。我在
didfishlaunchingwithoptions
之后删除了该文件,而
应用程序:openURL
没有找到任何内容。我现在只处理
应用程序中的文件:openURL
,它似乎工作正常。谢谢@rob mayoff。我也确实如此。在启动时的清理过程中,我正在删除该文件。但是,如何处理对已在后台打开的应用程序的调用<代码>应用程序:didFinishLaunchingWithOptions
不会再次被调用,对吗?这正是我需要知道的,方法调用的顺序,我在别处找不到。
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation