UIApplicationLaunchOptionsURLKey 究竟何时被填充?

Posted

技术标签:

【中文标题】UIApplicationLaunchOptionsURLKey 究竟何时被填充?【英文标题】:When exactly does the UIApplicationLaunchOptionsURLKey get populated? 【发布时间】:2015-10-18 13:55:17 【问题描述】:

自定义 URL 何时填充到 launchOptions 文件中的 AppDelegate.m 中?我已经在 Safari 中加载了我的应用程序的自定义 URL,并且没有填充 UIApplicationLaunchOptionsURLKey

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    

    NSLog(@"app launch options");
    NSLog([launchOptions valueForKey:UIApplicationLaunchOptionsURLKey]);

【问题讨论】:

【参考方案1】:

当您尝试通过以下方式打开应用程序时,UIApplicationLaunchOptionsURLKey 会被填充:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"yourapp://"]];

...而yourapp 是not running。

然后 (BOOL)application:(UIApplication *):didFinishLaunchingWithOptions:(NSDictionary *) 将被执行,NSDictionary 将被填充两个键值 UIApplicationLaunchOptionsURLKeyUIApplicationLaunchOptionsSourceApplicationKey

【讨论】:

如果我终止我的应用程序然后在 xcode 中再次启动它,那么查看我的 NSLog 的最佳方式是什么?另外,当它来自 safari 时,launchOptions 是否不会被填充? 如果您在真实设备上运行应用程序。 Window->Devices,在那里你可以看到你设备的控制台日志。 ***.com/questions/10165641/… 你也可以在你的 Mac 上使用 Console.app 并打开 ~/Library/Logs/CoreSimulator//system.log【参考方案2】:

任何 C 派生程序的主要入口点是一个名为 main 的函数,而在 ObjC 中它被称为 int main。这引发了一系列事件,最终调用applicationDidFinishLaunchingWithOptions: 方法,最终导致用户看到您希望他们看到的第一个“屏幕”。

2 事情将发生在applicationDidFinishLaunchingWithOptions: 之后的下一系列事件中。

    如果存在填充的 URL 键,它将使用该 URL 键并调用 applicationDidBecomeActive:。

    如果没有设置了 URL 键,它将调用 application: openURL: sourceURL: annotation,您可以在其中设置它。

这确实留下了如何为applicationDidFinishLaunchingWithOptions: 中的初始调用填充它的问题。我相信您可以在 info.list 文件中进行设置。

【讨论】:

以上是关于UIApplicationLaunchOptionsURLKey 究竟何时被填充?的主要内容,如果未能解决你的问题,请参考以下文章