我目前已在我的 iOS 应用程序中实现了通用链接。然而,我有一个场景,其中我的应用程序似乎
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
首先调用方法,然后才调用通用链接委托(delegate)方法
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler
因此,当通过通用链接打开应用程序并检查 launchOptions[@"UIApplicationLaunchOptionsUserActivityDictionaryKey"][@"UIApplicationLaunchOptionsUserActivityKey"]
时,我发现该应用程序是通过 NSUserActivity
。基于此我有以下问题:
- 处理链接时我的逻辑应该放在哪里?逻辑应该位于
didFinishLaunchingWithOptions
中还是通用链接应用程序委托(delegate)方法中?我是否应该在didFinishLaunchingWithOptions
中有一个 if 语句,根据应用的启动方式遵循不同的逻辑? - 调用委托(delegate)方法的顺序是什么?因此,例如,似乎首先调用了
didFinishLaunchingWithOptions
,只有在didFinishLaunchingWithOptions
完成或启动didFinishLaunchingWithOptions
时才调用continueUserActivity
code> 让代码在此方法中运行,然后在单独的线程上启动continueUserActivity
中的代码?我发现didFinishLaunchingWithOptions
将在主线程上运行,但是didFinishLaunchingWithOptions
中的任何代码都应该在并发线程上运行,即didFinishLaunchingWithOptions
创建一个服务调用,然后continueUserActivity
方法开始运行,而didFinishLaunchingWithOptions
尚未完成。当这种情况发生时,主线程上就会开始出现有趣的问题。如何仅在didFinishLaunchingWithOptions
完成时才调用continueUserActivity
?对于这种情况,我应该做某种NSOperation
吗? - 是否应该
didFinishLaunchingWithOptions
将管理链接的结果存储在缓存中,然后在调用continueUserActivity
时返回该结果中的值?
Apple 文档并没有真正深入了解应用程序委托(delegate)方法在该引擎盖下的工作原理。如果能帮助回答这些问题,我们将不胜感激。
最佳答案
我只知道,continueUserActivity
每次都会调用。如果应用程序尚未启动,application:didFinishLaunchingWithOptions
首先调用,然后调用 continueUserActivity
方法。
关于ios - 了解通用链接委托(delegate)方法及其在 iOS 中的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51215072/