scene(openURLContexts)或scene(willConnectTo)何时会有多个urlContexts?
多
UIOpenURLContext 常见出现场景 - 批量文件共享场景
当用户在文件App、相册等系统应用中同时选中多个文件,通过共享表单批量发送到你的App时,系统会为每一个文件生成独立的UIOpenURLContext,所有实例会打包成Set一次性传入对应的Scene回调中。每个实例的url属性对应不同的本地文件临时地址,annotation也会携带对应文件的独立元数据。 - 批量快捷指令/自动化触发场景
如果用户通过快捷指令App编写了同时触发多个你的App的URL Scheme操作的规则,或者第三方自动化脚本批量发起唤醒你的App的URL请求,系统判定这些请求属于同批次可并行处理的场景时,会将所有请求对应的UIOpenURLContext合并传入回调。 - 冷启动积压请求场景
如果App处于完全退出的状态下,系统队列中积压了多个未处理的唤醒你的App的URL请求,此时用户触发App冷启动,scene(_:willConnectTo:options:)回调的UIScene.ConnectionOptions参数中,urlContexts会包含所有积压的上下文实例。
注:绝大多数普通场景下系统仅会传入单个
UIOpenURLContext,这也是多数实现直接取urlContexts.first的原因。如果你的App支持批量文件导入、批量快捷指令操作能力,必须遍历整个Set处理所有上下文,否则会出现请求丢失的问题。
内容的提问来源于stack exchange,提问作者Gannon Prudhomme
相关产品推荐
相关产品推荐

