近期发现微信登录跳转机制升级为了universal link的方式,想到17年做过的一个需求,从微信内打开的网页直接跳转至App指定页面。将曾今写过的一篇文章分享出来。
在以往的应用中,从微信端打开 App 分享出的链接,能实现跳转至 Appstore中,再从 Appstore 中下载或者打开 App。Universal link 技术的使用提供了更优质的体验,能直接从微信中的链接跳入到 App的指定页面。
App从分享至微信到从微信中直接打开指定 App页面整个流程如下, 如果App 未下载,则直接跳转至 Appstore(此步骤不在本文范围讨论)。
实现通用链路,需具备的先决条件:
有两个注册的域名
通过 SSL 访问域名
至少 Xcode7
至少 iOS9.0
如果都有了,按照下面三个步骤来实现:
1、添加域名Capabilitie
首先, 你必须在 Xcode 的 capabilities 里 添加域名(下图蓝色处), 必须用applinks: 前置它,还可以添加一些你可能用到的子域和扩展(www.domain.com, news.domain.com 等等)。
这将使你的 APP 从你的域名请求一个特殊的 JSON 文件 apple-app-site-association。当你第一次启动 APP,它会从 https://xxx.xxx.xxxx/apple-appsite-association 下载这个文件。
2、上传 apple-app-site-association
切记该文件所处的域名必须支持 https访问,且不能和分享页面在同一个域名下(实践得出)。你可以打开一个文本编辑器然后写一个这样的简单 JSON 格式:
根据 paths 键设定一个允许的路径列表, App根据不同路径触发的调起可以做不同的处理逻辑。 或只是一个星号如果你想打开 APP 而不管路径是什么。你可能想知道此处appID从何而来,就是:团队开发者账号标识+bundle id.你可以从你的苹果开发者账号里获取你的团队标识. 最后, 上传这个文件到第 1 步中 App 所注册的域名根目录。如果你打开https://xxx.xxx.xxx/apple-app-site-association 可以看到你的文件, 那么你就可以继续下一步了。
3、在 App 里处理通用链接
分享至微信的分享页跳转至 App按钮点击事件要实现如下参考代码(蓝色部分为步骤1添加的域名):
为了在 APP 里支持通用链接, 你需要在 AppDelegate 里实现如下参考代码:
webpageURL 即为在微信中的分享页面中触发跳转 App 按钮时的链接,因为App 中使用了通用链接技术,注册了此域名,所以在代理方法中自动获取到。 上述 iOS 代码中检测到了 game字段后发送名为 “jump”的通知,App 其它页面获取这个通知后做相应处理。
4、记得在苹果开发者官网中检测此 app设置允许使用Associated Domains。
抛砖引玉,如有说得不够详尽之处敬请谅解