iOS Universal Links(通用链接)详细教程

本文详细介绍了iOS9中UniversalLinks的功能、实现步骤(包括移动端和服务器端操作)、测试方法以及常见问题排查,帮助开发者理解如何通过HTTPS链接引导用户无缝跳转至应用或显示网页。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:Universal Links是用来做什么的?

iOS9.0推出的用于应用之间跳转的一种机, 通过一个https的链接启动app。如果手机有安装需要启动的app,可实现无缝跳转。如果没有安装,会打开网页。

实现场景:微信链接无缝跳转App, 网页链接无缝跳转App

二:Universal Links实现步骤

移动端iOS实现:

1:找到app的Bundle Identifler 和Team ID并记录

Bundle Identifler所在的位置 :

图1

Team ID所在的位置:打开https://developer.apple.com/account页面,登录apple 开发者账号,划到页面下方,找到会员资格详细信息: 

图2

 2:app添加Associated Domains:

图3

图4
图5

Associated Domains格式:applinks:域名  例如:applinks:developer.apple.com 

服务端实现:

1:创建apple-app-site-association文件

 新建一个txt文件,命名:apple-app-site-association ,将以下json文本复制进去,并修改teamID和Bundle Identifler。

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "YourTeamID.YourBundleIdentifler",
                "paths": [
                    "*"
                ]
            }
        ]
    }
}

details:是数组,可以有多个数据,即可支持多个app

appID:team ID和Bundle Identifler组成,中间有个.

paths:可以指定路径,*是通配符,即该域名下的所有路径都可以访问app

保存以后,txt文件需要去掉后缀。

注意事项:文件需要存放在后台的根目录下的.well-known,最终的访问路径是:https://域名/.well-known/apple-app-site-association文件url在safari打开,右击选择检查元素,如下:

图6

三:测试

测试方法1:

重新安装一个最新的,并启动一下app。在浏览器输入Associated Domains的域名和apple-app-site-association文件中的允许路径,例如上文中的域名是developer.apple.com,path是*,所以在浏览器输入https://developer.apple.com(也可以输入https://developer.apple.com/123 因为path写的全路径,所以只要是https://developer.apple.com开头的都可以识别),就可以看到下方效果(safari自动弹出打开app的弹框,点击打开可以跳转到app):

测试方法2:

在备忘录输入https://developer.apple.com,长按该链接,可以弹出app选项(点击在app中打开,可以直接跳到app里),如下图:

四:问题统计

上述的Universal Links配置步骤完成还是无法跳转?

        第一步:核对apple-app-site-association文件的appID的Bundle Identifler 和Team ID是否正确。

       第二步:app是否是重新安装,或者第一次启动,要确保app下载了apple-app-site-association,后台可看到请求日志

       第三步:核对apple-app-site-association文件的格式和内容可参考图6,apple-app-site-association文件相关配置可让后台技术人员查阅相关资料

### iOS Universal Links 的实现与配置 #### 一、概述 Universal Links 是 Apple 在 iOS 9 引入的一种深度链接技术,能够使用户通过点击网页链接直接进入应用程序中的特定页面。这种机制无需依赖自定义 URL Scheme 或其他中间跳转方式即可完成操作[^3]。 #### 二、工作原理 当设备检测到一个 Universal Link 被触发时,其行为取决于上下文环境以及用户的交互历史: - **Safari 浏览器中** - 首次点击 Universal Link:会先加载对应的网页并展示系统级别的提示横幅 “在 xxx 中打开”,提供选项让用户决定是否立即切换至 App。 - 如果选择了“始终”选项,则后续再次访问该域名下的任何链接都会自动启动关联的应用程序而不再询问。 - **其他场景下(如邮件客户端、消息应用等)** - 只要满足条件,就会绕过 Web 加载过程直通目标 APP 并调用内部逻辑处理请求数据。 #### 三、具体实施步骤 ##### (1)启用 Associated Domains 功能 开发者需前往 Apple Developer Portal 创建新的证书文件来激活此项特性,并将其下载安装回 Xcode 工程里去。接着,在项目的 Capabilities 设置界面勾选 `Associated Domains` 开关以正式开启此服务[^1]。 ##### (2)服务器端准备 AASA 文件 (Apple App Site Association) 为了验证某个网站确实属于某款移动软件的一部分,必须由站点管理员上传名为 apple-app-site-association(AASA) 的 JSON 文档到指定位置,默认路径为 https://<yourdomain>/apple-app-site-association 。注意不要加扩展名 .json ,因为它是无格式纯文本形式存在。 以下是典型的 AASA 结构示例: ```json { "applinks": { "apps": [], "details": [ { "appID": "ABCD1234.com.example.app", "paths": ["*"] } ] } } ``` 其中 appID 参数是由 Team ID 和 Bundle Identifier 组成; paths 字段用来声明哪些 URI 模式可以被解析为有效的 ALs 请求[^2]。 ##### (3)客户端集成代码调整 最后一步是在项目源码层面增加必要的监听函数以便接收来自外部世界的意图信号。对于基于原生 Objective-C/Swift 编写的工程来说,主要关注 UIApplicationDelegate 方法重写部分: ```swift func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { guard let incomingURL = userActivity.webpageURL, let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true), let host = components.host else { return false } // Handle the incoming URL... print("Incoming universal link: \(incomingURL)") processDeepLink(incomingURL) return true } ``` 而对于采用 uni-app 构建的跨平台解决方案而言,则需要额外遵循框架特有的指南来进行适配改造[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值