我目前在我的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
,仅当continueUserActivity
完成或仅启动didFinishLaunchingWithOptions
时才调用didFinishLaunchingWithOptions
,让代码以该方法运行,然后再在continueUserActivity
中启动代码一个单独的线程?我发现didFinishLaunchingWithOptions
将在主线程上运行,但是didFinishLaunchingWithOptions
中的任何代码都应在并发线程上运行,即didFinishLaunchingWithOptions
进行服务调用,然后continueUserActivity
方法将在没有完成didFinishLaunchingWithOptions
的情况下开始运行。发生这种情况时,在主线程上就会出现有趣的问题。仅在完成continueUserActivity
后如何调用didFinishLaunchingWithOptions
?对于这种情况,我应该使用某种NSOperation
来代替吗?didFinishLaunchingWithOptions
是否应将链接管理的结果存储在缓存中,然后在调用continueUserActivity
时返回该结果中的值?Apple文档并没有深入探讨应用程序委托方法在这种情况下如何工作。在回答这些问题方面的一些帮助将不胜感激。
我只知道,每次continueUserActivity
都会调用。如果尚未启动应用程序,则先调用application:didFinishLaunchingWithOptions
,然后再调用continueUserActivity
方法。