0

我想赶上但在launchOptions(当我的应用程序成为焦点时)。例如,我在 Box 中打开一个文档。然后,我选择“打开方式”并选择我的应用程序。然后我的应用程序成为焦点。didFinishLaunchingWithOptionsapplicationDidBecomeActive

launchOptions我该如何恢复UIApplicationDelegate

谢谢

4

2 回答 2

3

如果您的应用程序没有运行并且它是通过另一个应用程序打开的,applicationDidBecomeActive则调用它并且您可以访问launchOptions. 然后应用程序将调用application:openURL:sourceApplication:annotation:.

但是,如果您的应用程序在后台并且只是处于活动状态,那么只会application:openURL:sourceApplication:annotation:调用它,因此您不会得到任何launchOptions. 您应该能够从application:openURL:sourceApplication:annotation:.

来自application:openURL:sourceApplication:annotation:文档的完整详细信息:

如果应用程序由于另一个应用程序请求它打开 URL 资源而启动,则 UIApplication 首先向应用程序发送 application:didFinishLaunchingWithOptions: 消息,然后调用此方法。此方法为处理应用程序的委托提供源应用程序的捆绑 ID 以及来自该应用程序的任何注释信息。如果应用程序在收到打开 URL 的请求时已经在运行,则调用此方法,但不会调用 application:didFinishLaunchingWithOptions:。

于 2012-11-28T11:52:34.063 回答
1

如果您从外部应用程序打开您的应用程序,您将需要使用URL 方案。这将打开您的应用程序,无论它是在后台运行还是实际上已终止(这种情况也可能发生)。

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

在文档中查找该方法以了解有关可以传递给应用程序的参数的更多信息。通常你会使用一个你可以分析并采取相应行动的网址。但是如果你需要传递更多的数据,你总是可以使用 annotation 参数,这是一个 plist,你可以转换成字典并从中提取任何你想要的东西。

于 2012-11-28T11:46:22.020 回答