我希望在launchOptions
中抓住didFinishLaunchingWithOptions
,但在applicationDidBecomeActive
(我的应用重点关注时)。
例如,我在Box中打开一个文档。然后,我选择“打开方式”并选择我的应用程序。然后我的应用程序重点关注。
如何在launchOptions
中恢复UIApplicationDelegate
?
由于
答案 0 :(得分:3)
如果您的应用未运行且已通过其他应用打开,则会调用applicationDidBecomeActive
,您可以访问launchOptions
。然后该应用会调用application:openURL:sourceApplication:annotation:
。
但是,如果您的应用在后台并且只是变为有效状态,则只会调用application:openURL:sourceApplication:annotation:
,因此您不会获得任何launchOptions
。您应该能够从application:openURL:sourceApplication:annotation:
的参数中获取所需的所有详细信息。
application:openURL:sourceApplication:annotation:文档中的完整详细信息:
如果应用程序是由于另一个应用程序请求打开URL资源而启动的,则UIApplication首先向应用程序发送application:didFinishLaunchingWithOptions:message,然后调用此方法。此方法为处理应用程序的委托提供源应用程序的包ID以及该应用程序的任何注释信息。如果应用程序在收到打开URL的请求时已在运行,则会调用此方法,但应用程序:didFinishLaunchingWithOptions:不是。
答案 1 :(得分:1)
如果您要从外部应用打开您的应用,则需要使用URL schemes。这将打开你的应用程序,无论它是在后台运行还是实际终止(可能会发生这种情况)。
使用此技术,将在您的App委托中调用方法- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
。
在文档中查看该方法,以了解有关可以传递给应用的参数的更多信息。通常你会使用一个你可以分析并相应行动的网址。但是如果你需要传递更多的数据,你总是可以使用注释参数,这是一个plist,你可以转换成字典并从中提取你想要的任何东西。