我目前在我的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文档并没有真正探讨应用程序委托方法在这种情况下如何工作。在回答这些问题方面的一些帮助将不胜感激。
答案 0 :(得分:0)
我只知道,continueUserActivity
每次都会调用。如果尚未启动应用程序,则application:didFinishLaunchingWithOptions
首先调用,然后调用continueUserActivity
方法。