ios - 了解通用链接委托方法及其在 iOS 中的用途
问题描述
我目前在我的 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 文档并没有真正深入了解应用程序委托方法如何在该引擎盖下工作。非常感谢回答这些问题的一些帮助。
解决方案
我只知道,那是continueUserActivity
每次都来电。如果应用程序尚未启动,则application:didFinishLaunchingWithOptions
先调用,然后再调用continueUserActivity
方法。
推荐阅读
- ktor - Ktor Location API:将 JSON 映射到通用 Map 对象
- python - 在 BST 中找到最接近目标的值,但在赋值之前遇到引用的变量,即使我已经涵盖了所有情况?
- c++ - C++ 枚举作为构造函数参数
- c# - C# String 删除两个字符之间的字符
- javascript - 打字稿类约束字符串
- reactjs - 在 Sharepoint 上分享我的 react 本地主机网站
- windows - 显示和更改活动键盘映射
- python - /accounts/register/ 处的 UnboundLocalError
- excel - 结合 IF 和 MAX
- xpath - 在 C# 中使用 xpath 写入节点值