Universal Links踩坑

博客主要分享了两个踩坑经历及相关过程,虽未提及具体内容,但围绕踩坑展开,为读者提供了可能遇到的问题及处理过程的参考。

踩坑1

这里写图片描述

踩坑2

踩坑2

过程

这里写图片描述

### 配置 iOS Universal Links 的方法 Universal Links 是 iOS 提供的一种深度链接技术,允许用户通过点击网页链接直接打开已安装的应用程序。要正确配置 Universal Links,需要确保以下关键步骤: 1. **域名要求** 必须使用 HTTPS 协议,并且 SSL 证书必须合规,否则 Universal Links 将无法正常工作。如果公司无法提供合规的证书,可以考虑使用第三方服务(如 MobLinkLinkedMe、魔窗)来生成可用的 Universal Links 并提供相应的页面支持[^1]。 2. **部署 `apple-app-site-association` 文件** 该文件必须放置在网站的根目录或 `.well-known` 子目录下,例如: - `https://example.com/.well-known/apple-app-site-association` - `https://example.com/apple-app-site-association` 文件内容应如下所示(使用通配符匹配所有路径): ```json { "applinks": { "apps": [], "details": [ { "appID": "TEAMID.com.example.app", "paths": [ "*" ] } ] } } ``` 确保文件格式正确且无 `.json` 后缀。可以通过苹果官方的 App Search API Validation Tool 验证该文件是否配置正确。 3. **配置 Xcode 工程** 在 Xcode 中启用 Associated Domains 功能,并添加域名。例如: ``` applinks:example.com ``` 此外,如果需要与微信集成,还需在 Xcode 中添加 `weixinULAPI` 白名单,并确保微信 SDK 版本为 1.8.6.1 或更高版本[^2]。 4. **绑定 AppID 并校验** 确保 `apple-app-site-association` 文件中的 `appID` 正确无误,格式为 `TeamID.bundleID`。企业证书用户还需额外配置 TeamID 以确保 Universal Links 能够正常工作。在微信 Universal Links 接入中,还需要校验 AppID 以防止伪造请求。 5. **路径匹配规则** `paths` 字段用于指定哪些网页路径可以触发 Universal Links。可以使用通配符 `*` 匹配所有路径,也可以指定特定路径。例如: ```json "paths": [ "/pages/*", "/home" ] ``` 这样,只有访问 `/pages/` 下的任意页面或 `/home` 页面时,Universal Links 才会生效[^1]。 6. **兼容旧版本回调机制** 为了兼容不支持 Universal Links 的旧版本微信,还需同时实现 URL Scheme 回调机制。确保应用能够同时处理两种跳转方式,并在收到链接时进行相应处理。 7. **验证与调试** 可以使用苹果官方的 App Search API Validation Tool 检查 `apple-app-site-association` 文件是否正确部署。此外,使用 `AASA Validator` 或 `curl` 命令测试文件是否可访问: ```bash curl -v https://example.com/.well-known/apple-app-site-association ``` 如果返回 200 状态码且内容正确,则表示文件配置成功。 8. **常见问题排查** - **关联文件访问失败**:检查文件路径是否正确,服务器是否返回 200 状态码。 - **证书校验异常**:确保 SSL 证书合规,且域名与 `apple-app-site-association` 文件中的域名一致。 - **AppID 错误**:检查 `TeamID` 和 `bundleID` 是否正确拼接。 - **微信 Universal Links 不生效**:确保微信 SDK 版本符合要求,并正确配置白名单和回调逻辑。 ### 示例代码:Universal Links 处理逻辑 在 AppDelegate 中实现处理 Universal Links 的方法: ```swift import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { if userActivity.activityType == NSUserActivityTypeBrowsingWeb { if let url = userActivity.webpageURL { print("Universal Link URL: $url)") // 处理跳转逻辑 return true } } return false } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值