ios - 了解通用链接委托(delegate)方法及其在 iOS 中的用途

标签 ios appdelegate ios-universal-links

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

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

首先调用方法,然后才调用通用链接委托(delegate)方法

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

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

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

Apple 文档并没有真正深入了解应用程序委托(delegate)方法在该引擎盖下的工作原理。如果能帮助回答这些问题,我们将不胜感激。

最佳答案

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

关于ios - 了解通用链接委托(delegate)方法及其在 iOS 中的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51215072/

相关文章:

ios - Swift Playgrounds 程序中的程序约束问题

ios - iBeacon 应用程序 : Custom code when launched from lockscreen

swift - iOS 13 之前的场景委托(delegate)如何使用?

ios - 深度链接未显示正确的 Storyboard

iOS9 通用链接不适用于 Safari,但适用于其他应用程序

ios - Xcode Storyboard - 使用很棒的字体制作文本 RTL

ios - 我们如何在 ios 中使用 for 循环为 1 个或多个文本字段设置背景颜色

c# - 如何打破 View Controller 和数据源之间的引用循环

ios - 如何显示特定的 VC ,更像是导航到 VC 堆栈

ios - 如何在 Nginx/Rails 上为 apple-app-site-association 文件设置正确的内容类型