You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS中如何通过Universal Link获取其他App的返回值?

iOS通过Universal Link获取第三方App返回值的方案

一、核心实现逻辑与系统API

Universal Link本身是用于App间跳转的协议,要获取第三方App的返回值,本质是让第三方App在完成操作后,通过你的App的Universal Link跳转回来,并在链接中携带结果参数。iOS系统提供原生API处理这种跳转回调,不需要额外第三方库:

  • 对于iOS 12及以下,在UIApplicationDelegate中实现application(_:continue:restorationHandler:)方法,该方法会在第三方App跳转回你的App时被调用,你可以从传入的userActivity中提取跳转的Universal Link,解析其中的参数(比如支付状态、订单ID)。
  • 对于iOS 13及以上的Scene架构,在SceneDelegate中实现scene(_:continue:)方法,逻辑和上面一致,从userActivity中获取并解析链接。

示例代码片段:

// iOS 13+ SceneDelegate
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
          let url = userActivity.webpageURL else {
        return
    }
    // 解析Universal Link中的参数,比如支付结果
    if url.path == "/pay-result" {
        let components = URLComponents(url: url, resolvingAgainstBaseURL: true)
        let status = components?.queryItems?.first(where: { $0.name == "status" })?.value
        let orderId = components?.queryItems?.first(where: { $0.name == "orderId" })?.value
        // 处理返回结果
        print("支付状态:\(status ?? ""),订单ID:\(orderId ?? "")")
    }
}

二、URL Launcher打开第三方App后的结果获取

不管用哪种URL Launcher(原生UIApplication.shared.open(_:options:completionHandler:)还是第三方封装的工具)打开第三方App,要获取返回值的前提是:

  1. 你的App已配置好Universal Link(或URL Scheme),并将该链接告知第三方App(比如支付平台的后台配置);
  2. 第三方App支持在操作完成后,通过你的Universal Link跳转回你的App,并在链接中携带结果参数。

当第三方App跳转回来时,你只需在上述的Delegate回调方法中解析链接参数即可拿到结果。

三、App Extension是否适合?

App Extension不是接收第三方App返回值的合适方案。Extension是独立于主App的进程,主要用于扩展系统功能(比如分享、快捷操作)或嵌入其他App的界面,无法直接和主App实时交互获取跳转返回的结果,而且第三方App也不会主动将操作结果发送到你的Extension中。这种场景下,还是通过Universal Link/URL Scheme的跳转回调来实现才是正确路径。

内容的提问来源于stack exchange,提问作者chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 05:59:57