iOS 9 Universal Links

1      简介

通用链接是Apple在WWDC2015上为IOS9引入的一个新功能,是通过传统HTTP链接来启动App的技术。可以使用相同的网址打开网站和App。

通过唯一的网址,就可以链接到App中具体的视图,不需要特殊的schema。如果用户没有安装App则链接到对应的普通网页。

2      先决条件

l  至少Xcode beta2

l  至少IOS9beta2(之前的测试版本要做额外的工作)

l  有一个注册通过SSL访问的域名

3      操作步骤

3.1   注册App并打开Associated Domains服务

如果你还没有注册App,则需要登陆developer.apple.com注册一个。

在Identifiers下AppIDs找到自己的App ID,编辑打开Associated Domains服务。


选中,并保存。

3.2   在Xcode中开启Associated Domains服务

a.打开Associated Domains服务


如果出现如下图所示的情况请检查下自己所选的组是否正确,以及Xcode工程中的bundle identifier和注册的App Identifier是否一致。


b.添加域名,点击Associated Domains的“+”添加前缀为applinks:的域名,如下图所示


c.确认在entitlements文件包含在工程中

3.3   配置apple-app-site-association文件

a.     创建apple-app-site-association的json文件

文件格式如下图所示:


其中apps项必须对应一个空的数组。details项对应一个字典的数组,网站所能支持的每个app一个字典。

appID对应项由前缀和ID两部分组成,可以在developer.apple.com中的Identifiers→AppIDs中点击对应的App ID查看。


paths对应域名中的path,用于过滤可以跳转到App的链接,支持通配符‘*’,‘?’以及‘NOT’进行匹配,匹配的优先级是从左至右依次降低。

b.     服务器配置要求:

域名需要SSL证书,如果不支持HTTPS,则需要对apple-app-site-association进行SSL认证。认证命令如下:

catapple-app-site-association-unsigned | openssl smime -sign -inkey yourdomain.com.key -signer yourdomain.com.cert -certfile digicertintermediate.cert -noattr-nodetach -outform DER > apple-app-site-association

服务器配置要求站点必须是youdomain.com/apple-app-site-association,请求头是‘application/pkcs7-mime’,返回HTTP码是200。

3.4   响应处理

点击链接跳入App,由UIApplicationDelegate中的application:continueUserActivity:restorationHandler:函数进行处理,通过如下方式获取URL,然后对不同的URL进行不同的响应。


4      一些注意的事项

1.    apple-app-site-association不需要.json后缀。

2.    如果要对没有path的域名进行支持(如:www.163.com),在json文件的paths中用通配符’*’是不行的,需要在paths数组中加入’/’进行匹配。

3.    对json文件的请求仅在App第一次启动时进行,如果此时网络连接出了问题apple会缓存请求,等有网的时候再去请求,而实际测试抓包并没有请求故通用连接会失效。

4.    paths匹配的优先级是从左至右依次降低,但需要明确,否则会出问题。比如"paths":["NOT /together/*","*"],在IOS9.2上path为/together/*都不会跳到App,但是在IOS9.0上会跳到。



一些坑:
http://www.gexiao.me/2016/03/10/iOS9-universal-links/


<think>好的,我现在需要帮助用户了解如何在iOS中配置Universal Links。首先,我得回忆一下自己之前学过的相关知识,并结合提供的引用内容来组织回答。 用户的问题很明确,他们想知道具体的设置和配置步骤。根据引用中的信息,特别是引用[3],里面提到了配置Universal Links的几个关键步骤,包括开启Associated Domains服务、配置apple-app-site-association文件、Xcode工程设置等。我需要按照逻辑顺序把这些步骤整理出来。 首先,开启Associated Domains服务。这部分需要进入苹果开发者账号,为应用启用这个功能,并在Xcode中配置对应的域名。记得要使用applinks:前缀,这点很重要,否则可能无法正确关联。 接下来是服务端配置apple-app-site-association文件。这个文件必须放在域名的根目录或者.well-known子目录下,且必须使用HTTPS访问。文件的结构需要正确,包含appID和paths等信息。用户可能需要检查MIME类型是否正确,避免服务器返回错误的类型导致问题。 然后是在Xcode中的工程配置,添加Associated Domains,并填写正确的域名。这一步需要确保团队标识和Bundle Identifier正确无误,否则应用可能无法正确验证关联。 测试和验证也是关键的一环。用户可以使用苹果提供的验证工具,或者直接在备忘录中点击链接测试。如果遇到问题,可能需要检查文件的签名和路径是否正确,以及是否支持HTTPS。 另外,引用[2]提到了一些外部链接,比如Dcloud的问答社区和简书上的教程,这些可能作为补充资源,但用户的主要步骤已经涵盖在引用[3]里了。需要确保引用的内容正确标注来源,比如在步骤末尾添加[^3]这样的标识。 还要注意用户提到的系统级指令,比如使用中文回答,正确格式化数学公式,但在这个问题中可能用不上数学公式,所以主要关注步骤的结构和引用。同时,生成相关的问题部分需要根据内容提出,比如配置失败怎么办,如何验证,与其他服务的集成等。 最后,确保回答结构清晰,分步骤说明,每个步骤都有对应的操作和注意事项,并引用正确的来源。可能还需要提醒用户,如果集成微信或支付宝等其他服务,还需要参考它们的文档,如引用[1]提到的。</think>### iOS Universal Links 配置步骤 #### 1. **开启 Associated Domains 服务** - **苹果开发者账号配置** 登录 [Apple Developer](https://developer.apple.com),在应用标识符(App ID)中启用 `Associated Domains` 功能。 - **Xcode 工程配置** 在项目的 `Signing & Capabilities` 中,添加 `Associated Domains`,填写格式:`applinks:<你的域名>`(例如 `applinks:example.com`)。 #### 2. **服务端配置 apple-app-site-association 文件** - **文件要求** 文件需命名为 `apple-app-site-association`,**无后缀名**,放置在域名根目录或 `.well-known` 子目录,支持 HTTPS 访问。 - **文件内容示例** ```json { "applinks": { "apps": [], "details": [ { "appID": "<TeamID>.<BundleIdentifier>", // 如 "ABCDE12345.com.example.app" "paths": ["*"] // 支持所有路径,或指定路径如 ["/openapp/*"] } ] } } ``` 确保 MIME 类型为 `application/json`。 #### 3. **Xcode 工程关联配置** - 在 `Associated Domains` 中添加条目,格式为 `applinks:<域名>`(如 `applinks:example.com`)。 - 检查 `Team ID` 和 `Bundle Identifier` 是否与苹果开发者账号一致[^2]。 #### 4. **验证配置** - **苹果官方验证工具** 访问 [Apple URL Scheme Validator](https://search.developer.apple.com/appsearch-validation-tool/) 检查文件有效性。 - **手动测试** 在备忘录或短信中粘贴 Universal Link(如 `https://example.com/openapp`),点击后应直接跳转 App。 #### 5. **常见问题** - **文件无法访问** 确保服务器支持 HTTPS,且文件未重定向或缓存。 - **路径不匹配** 检查 `paths` 字段是否覆盖目标链接路径。 - **跨平台集成** 若需接入微信/支付宝等功能,需额外配置其要求的白名单或参数[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值