了解通用链接委托方法及其在 iOS 中的用途
Posted
技术标签:
【中文标题】了解通用链接委托方法及其在 iOS 中的用途【英文标题】:Understanding Universal links delegate method and its purpose in iOS 【发布时间】: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 文档并没有真正深入了解应用程序委托方法在该引擎下的工作原理。对于回答这些问题的帮助,我们将不胜感激。
【问题讨论】:
【参考方案1】:我只知道,continueUserActivity
每次都会打电话。如果应用程序尚未启动,application:didFinishLaunchingWithOptions
会先调用,然后再调用 continueUserActivity
方法。
【讨论】:
以上是关于了解通用链接委托方法及其在 iOS 中的用途的主要内容,如果未能解决你的问题,请参考以下文章