iOS 通用链接的配置(Universal Links)

一、打开Associated Domains

1.首先登录 苹果开发者网站
2.Certificates, Identifiers & Profiles 下的Identifiers 找到要配追的Identifiers 点进去
3.打开Associated Domains然后保存
在这里插入图片描述

二、更新Profile文件

如果我们使用自动的,可以忽略这一步,手动的创建的证书,选择对应的配置文件,点击Edit进入修改页,直接点击Save,保存后点击Download下载并打开

三、在项目中添加 Associated Domains

打开项目Target -> signing & Capability -> + Capability -> Associated Domains
在这里插入图片描述在这里插入图片描述

四、填写域名

将https://替换为applinks:
在这里插入图片描述

五、创建apple-app-site-association文件

创建一个纯文本,文件名字为apple-app-site-association的文件,不能有后缀

1)打开文本编辑

在这里插入图片描述

2)文本编辑->设置->打开和存储->☑️给纯文本添加".txt"扩展名在这里插入图片描述
3)格式->制作纯文本

在这里插入图片描述

### 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]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值