了解通用链接委托方法及其在iOS中的用途

问题描述 投票:3回答:1

我目前在我的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文档并没有深入探讨应用程序委托方法在这种情况下如何工作。在回答这些问题方面的一些帮助将不胜感激。

ios appdelegate ios-universal-links
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.