2012-11-28 35 views
0

我想赶上launchOptionsdidFinishLaunchingWithOptions,但在applicationDidBecomeActive(当我的应用程序需要关注)。 例如,我在Box中打开一个文档。然后,我选择“打开”并选择我的应用程序。然后我的应用程序成为焦点catch launchOptions in applicationDidBecomeActive

我怎样才能在我的UIApplicationDelegate中恢复launchOptions

感谢

回答

3

如果您的应用程序未运行并且通过其他应用程序打开,则会调用applicationDidBecomeActive,您可以访问launchOptions。该应用程序然后将致电application:openURL:sourceApplication:annotation:

但是,如果你的应用程序在后台,只是变得活跃,只有application:openURL:sourceApplication:annotation:被调用,所以你没有得到任何launchOptions。您应该能够从application:openURL:sourceApplication:annotation:的参数中获得所需的所有详细信息。

如果应用程序启动时为请求它来打开一个URL资源的其他应用程序的结果,UIApplication的首先发送应用程序:中:didFinishLaunchingWithOptions:消息,然后它会调用

application:openURL:sourceApplication:annotation:文档的全部细节这种方法。此方法为处理应用程序的委托提供源应用程序的包ID以及来自该应用程序的任何注释信息。如果应用程序在接收到打开URL的请求时已经运行,则调用此方法,但application:didFinishLaunchingWithOptions:不是。

+0

谢谢'应用:的OpenURL:sourceApplication:注释:'似乎提供了所有我需要的:) – ApheX

+2

没有你的意思'应用中:didFinishLaunchingWithOptions:'第一句话...? – turingtested

1

如果从外部应用程序,你将需要使用URL schemes打开您的应用。这会打开你的应用程序,无论它是在后台运行还是事实上已被终止(机会也会发生)。

使用此技术,方法- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation将在您的应用程序委托中调用。

在文档中查找该方法,以了解有关可传递给应用程序的参数的更多信息。通常你会使用一个你可以分析的网址并采取相应的行动。但是,如果您需要传递更多数据,则始终可以使用注释参数,这是一个plist,您可以将其转换为字典并从中提取所需的任何内容。