【发布时间】:2018-07-06 17:14:50
【问题描述】:
我目前在我的 iOS 应用中实现了通用链接。但是,我有一个场景,我的应用程序似乎
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
先调用方法,然后才调用通用链接委托方法
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler
因此,当通过通用链接打开应用程序并检查launchOptions[@"UIApplicationLaunchOptionsUserActivityDictionaryKey"][@"UIApplicationLaunchOptionsUserActivityKey"] 时,我看到应用程序是由NSUserActivity 中的链接打开的。基于此,我有以下问题:
- 在处理链接时我的逻辑应该放在哪里?逻辑应该在
didFinishLaunchingWithOptions还是通用链接应用委托方法?我是否应该在didFinishLaunchingWithOptions中有一个 if 语句,根据应用的启动方式遵循不同的逻辑? - 调用委托方法的顺序是什么?因此,例如,似乎首先调用
didFinishLaunchingWithOptions,是仅在didFinishLaunchingWithOptions完成时调用continueUserActivity,还是启动didFinishLaunchingWithOptions让代码在此方法中运行,然后在continueUserActivity中启动代码一个单独的线程?我发现didFinishLaunchingWithOptions将在主线程上运行,但如果didFinishLaunchingWithOptions中的任何代码在并发线程上运行,即didFinishLaunchingWithOptions进行服务调用,那么continueUserActivity方法在didFinishLaunchingWithOptions完成的情况下开始运行.当这种情况发生时,就会在主线程上开始出现有趣的问题。continueUserActivity怎么只能在didFinishLaunchingWithOptions完成后调用?对于这种情况,我应该做某种NSOperation吗? - 是否应该
didFinishLaunchingWithOptions将正在管理的链接的结果存储在缓存中,然后在调用continueUserActivity时返回该结果中的值?
Apple 文档并没有真正深入了解应用程序委托方法在该引擎下的工作原理。对于回答这些问题的帮助,我们将不胜感激。
【问题讨论】:
标签: ios appdelegate ios-universal-links