首页 > 解决方案 > 了解通用链接委托方法及其在 iOS 中的用途

问题描述

我目前在我的 iOS 应用中实现了通用链接。但是,我有一个场景,我的应用程序似乎

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

首先调用方法,然后仅调用通用链接委托方法

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler

因此,当通过通用链接打开应用程序并检查时,launchOptions[@"UIApplicationLaunchOptionsUserActivityDictionaryKey"][@"UIApplicationLaunchOptionsUserActivityKey"]我看到应用程序是由NSUserActivity. 基于此,我有以下问题:

  1. 我的逻辑在处理链接时应该放在哪里?逻辑应该在didFinishLaunchingWithOptions还是通用链接应用委托方法?didFinishLaunchingWithOptions根据应用程序的启动方式,我是否应该有一个遵循不同逻辑的 if 语句?
  2. 调用委托方法的顺序是什么?因此,例如,它似乎didFinishLaunchingWithOptions首先被调用,是continueUserActivity仅在didFinishLaunchingWithOptions完成时被调用还是它开始didFinishLaunchingWithOptions让代码在此方法中运行,然后也在continueUserActivity单独的线程上启动代码?我发现didFinishLaunchingWithOptions它将在主线程上运行,但如果任何代码在didFinishLaunchingWithOptions并发线程上运行,即didFinishLaunchingWithOptions进行服务调用,那么该continueUserActivity方法在没有完成的情况下开始运行didFinishLaunchingWithOptions。当这种情况发生时,就会在主线程上开始出现有趣的问题。如何continueUserActivity只能在didFinishLaunchingWithOptions完成时调用?对于这种情况,我应该做些什么NSOperation吗?
  3. 是否应该didFinishLaunchingWithOptions将正在管理的链接的结果存储在缓存中,然后何时continueUserActivity调用然后返回该结果中的值?

Apple 文档并没有真正深入了解应用程序委托方法如何在该引擎盖下工作。非常感谢回答这些问题的一些帮助。

标签: iosappdelegateios-universal-links

解决方案


我只知道,那是continueUserActivity每次都来电。如果应用程序尚未启动,则application:didFinishLaunchingWithOptions先调用,然后再调用continueUserActivity方法。


推荐阅读