iOS微信授权登录与通用链接配置

Overview

微信的openSDK在1.8.6版本支持了Universal Links方式的跳转,在使用新版本的时候需要设置Universal Links

Universal Links 是在WWDC 2005提出了iOS9的新特性之一。

具体的使用可以参考Support Universal LinksAllowing Apps and Websites to Link to Your Content两篇文章。

这篇文章主要整理微信openSDK的对接和Universal Links的配置。

Universal Links配置

当你支持通用链接时,iOS用户点击一个你网站的链接,可以被无缝地重定向到你安装的应用程序,而无需通过Safari。如果你的应用程序没有被安装,点击你网站的一个链接会在Safari中打开。

开发者账号配置

找到相应的App ID,勾选Associated Domains选项,然后点击保存即可。

勾选Associated Domains选项

apple-app-site-association 文件编写

关于apple-app-site-association的编写,可以查看Support Universal Links中相应文档的介绍。

为通用链接添加支持非常简单,需要采取以下三个步骤:

  1. 创建一个apple-app-site-association文件,其中包含有关应用程序可以处理的 url 的 JSON 数据。
  2. apple-app-site-association 文件上传到 HTTPS web 服务器。 可以将文件放在Web服务器的根目录或子目录.well-known下。
  3. 开始你的应用程序来处理通用链接。

Note:apple-app-site-association文件是纯文本文件,没有后缀名。

关于apple-app-site-association的编写的官方示例如下方所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"applinks": {
"apps": [],
"details": [
{
"appID": "9JA89QQLNQ.com.apple.wwdc",
"paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
},
{
"appID": "ABCD1234.com.apple.wwdc",
"paths": [ "*" ]
}
]
}
}

其中appID中的9JA89QQLNQ为团队ID,com.apple.wwdc为BundleID。如需添加多个appID,如上方所示。

关于微信对Universal Links配置的要求

  1. Universal Links必须支持https
  2. Universal Links配置的paths不能带query参数
  3. 微信使用Universal Links拉起第三方App时,会在Universal Links末尾拼接路径和参数,因此App配置的paths必须加上通配符/*

微信示例:

1
2
3
4
{ 
"appID": "8P7343TG54.com.tencent.xin.SDKSample",
"paths": ["/sdksample/*"]
}

Note:本文项目的通用链接我存放到个人的阿里云中,路径如下:

1
https://blog-zhouwei.oss-cn-beijing.aliyuncs.com/apple-app-site-association

apple-app-site-association 文件验证

将编写好的apple-app-site-association文件上传到Web服务器的根目录或子目录.well-known下后,我们可以进行校验一下服务器的配置是否正确。

可以通过App Search API Validation Tool网页工具进行校验。

打开App Search API Validation Tool网页工具,输入apple-app-site-association 在web 服务器中的地址,类似于https://***/apple-app-site-association

验证的结果可能分为三种:验证通过-未上线、验证通过-已上线和验证失败。其结果分别如下所示。

验证通过-未上线

验证通过-未上线

验证通过-已上线

验证通过-已上线

验证失败

验证失败

Note:验证失败后,将apple-app-site-association存放到服务器的地址复制到浏览器中,查看apple-app-site-association 是否可以下载,如果可以下载查看文件内的JSON数据格式是否正确,如果不可以下载所以服务端配置的有问题。

工程配置

如果上方的操作都已经做完,可以在工程中进行配置。

配置相对来说比较简单在 TARGETS->Signing&Capabilities 中选择 + Capability 然后搜索Associated Domains进行添加。

如图所示:

项目配置通用链接

添加完以后,将通用链接地址填入到Domains中。
Associated Domains

Note:

如果提供的apple-app-site-association文件地址为https://blog-zhouwei.oss-cn-beijing.aliyuncs.com/apple-app-site-association

Associated Domains中需要填写(applinks:为固定格式):applinks:blog-zhouwei.oss-cn-beijing.aliyuncs.com

代码注册和微信开发平台中填写:https://blog-zhouwei.oss-cn-beijing.aliyuncs.com/

其实配置到这里,选中证书,运行到手机。运行完后,在手机浏览器中输入https://blog-zhouwei.oss-cn-beijing.aliyuncs.com/ ,下滑的时候会出现从App中打开的选项。

如果将该链接复制到文本文档中,常按也会出现从App中打开的选项。

这说明Universal Links已经配置完成了。

微信配置

微信的通用链接配置如下方所示:

配置微信开发平台的通用链接

Note: 就如同上方中写道,如果通用链接地址为https://**/apple-app-site-association,微信的Universal Links需要添加https://**/即可。

配置URL Types

配置完Universal Links后项目中同时还需要在工程中的TARGETS->info->URL Types中添加URL scheme,其中URL scheme为所注册的程序id。

如下图所示:

配置URL Types

配置LSApplicationQueriesSchemes

在工程的info.plist中添加LSApplicationQueriesSchemes并添加weixinweixinULAPI,如下图所示:

info.plist配置

参考文档