说明:公司项目需求要接入微信支付和支付宝支付,因为以前没接触过支付功能,在次过程中也走了些弯路,因此留下笔记已做纪念。现在主要是记录我在接入的过程踩的坑,像在微信开放平台和支付宝开发平台上填写资料这些就忽略,因为很容易找到解决办法。
Univeral Link的配置有3方面:Apple Developer网站配置、XCode配置、服务器资源配置(apple-app-site-association文件创建和存放) 首先说下我们的需求:支持一个域名下多个APP(目前是两个)的universal Link 跳转
Universal Link访问地址为:
App项目:abc123.com/
一、Apple Developer网站配置
项目的App ID 需要开通Associated Domains。
【操作】:(1)登录Apple Developer网站 (Sign In - Apple),点开Identifiers一栏,找到我们项目的App ID。点击这个APP ID,进入APP ID设置页面。
(2)在APP ID的设置页面,勾选Associated Domains。(如果在创建配置文件Profiles之后再勾选的Associated Domains,需要重新创建一下配置文件Profiles,然后下载最新的改APP ID的配置文件Profiles,重新安装上配置文件Profiles)。
二、 服务器资源配置(apple-app-site-association文件创建和存放) 【原理】:在第一次安装APP的时候,手机的iOS系统会去指定的路径(这个路径是后面后端开发人员给的)下载apple-app-site-association文件。通过这个文件,iOS系统就会知道哪些URL是Universal Links,哪些不是Universal Links。从而我们指定的路径可以发生跳转。这个apple-app-site-association文件需要开发者去创建和放到一个苹果可以访问的服务器上。这个过程在XCode调试的时候也会发生。
1、apple-app-site-association文件创建
新建一个名字为apple-app-site-association的纯文本文件(Json格式),不要有任何后缀,文件内容为
{ "applinks": { "apps": [], "details": [ //可以有多组,加入我们有多个应用,都可以使用这一个文件 { "appID": "teamID.bundleID", //这里填写的是我们的 团队id,可以在证书或者开发者账号中查看 "paths": [ "*" ] //path路径为,域名后面的路径,可以使用通配符,这里*表示任意路径都可以 } { "appID": "D1I2O3P3PK.com.example.appstore", //案例 teamid + bundleid "paths": [ "/qq_zone/*","/qq/*" ] //通配符表示weixin或者qq路径下,后面任意路径或者参数 }, { "appID": "D1I2O3P3PP.com.example.enterprise", "paths": [ "/weixin/*","/wechat/10000000/*", /wx/10010/* ] } ] } }
上述填写内容,主要是appID和paths的填写,其他不用理会。
一组{"appID":"XXX", "paths":"["/xxx/","/xxxx/",...]"}有多少个APP,就写多少组。我们的需求是一个域名下支持一个App,因为要支持微信支付和支付宝支付,后期可能还有苹果支付(待修改)。
(1)填写appID appID最正确的填写方式,就是XCode运行后,找到这个包,然后找到这个包下的配置文件embedded.mobileprovision, 在这个文件中的application-identifier是什么,APP ID就填写什么。 【找appID方法】:参考这篇文章Universal Link的apple-app-site-association填写appID最正确的方法_jifaliwo123的博客-CSDN博客
(2)填写paths
如果是一个服务器对应一个APP跳转,那么这里其实填写一个 “”就可以了。如果一个服务器支持多个APP跳转,则需要用不同的专用路径节点(填写“/节点/”)去互相屏蔽。比如地址abc123.com/AHost/XXX(p… 只能用于A应用的跳转;地址abc123.com/BHost/XXX(p…
2、apple-app-site-association文件的存放
这个文件创建好之后,交给后端人员。让他们把这个文件放到指定的url的根目录下,比如上传至服务器根目录(IIS为wwwroot文件夹) 或者 .well-known(用命令创建) 目录下,切记,只能这两个目录。
【验证】:验证后端是否正确放置的方法,这是浏览器输入这个地址,会直接下载apple-app-site-association文件。如果没有下载到这个软件,说明服务器配置不对。 比如:abc123.com/.well-known…
【注意1】:我这里下载下来的apple-app-site-association文件名字不是“apple-app-site-association”,但是这没有影响。只要放到服务器的名字是apple-app-site-association就行。 【注意2】:对于paths有填写专用路径节点的情况(比如我这里写的【"paths": ["/wechat/*"]】), 服务器不用在这个路径下添加真实的文件访问路径!访问applinks这个域名网址的时候,找不到的话不要重定向!!访问applinks网址的时候,找不到的话不要写一个专门的空白页!
三、 XCode配置
1、点击Signing & Capabilities一栏
2、一定要点击这个All。因为这里的一些配置会区分Debug 版和Release版。粗心一点的,就会在后面混淆了是Debug 还是Release。
3、(1)取消掉这个Automatically manage siging(自动签名)的勾选(取消勾选)。
(2)因为我们使用的手动签名,所以在这里要选择到能用的Proivsioning Profile。选择了之后运行看是否报错。报错的话再去重新去 Apple Developer网站 (Sign In - Apple)生成一个正确的下载下来装上。
4、配置Associated Domains的applinks,格式为:“applinks:xxx”。这里的xxx为一个域名,没有“https://”前缀,也没有“/”后缀。
在第二步服务器资源配置(apple-app-site-association文件创建和存放)的2、apple-app-site-association文件的存放的步骤里,我们已经拿到了一个URL。将这个URL填入。
我们的服务器地址为【abc123.com/】,所以这里填写的是:… 四、检验的时候到了
上面的步骤都做完,检查完之后。正常来说,universal link就是配置好了可以测试使用了。
测试方法:
1、在Safari输入完整地址: https://+applinks配置的域名+apple-app-site-association里的paths 比如:abc123.com/wechat/ ,看是否能发生跳转,跳转到手机已经安装上的APP,有跳转表示配置成功。
2、在1、中的地址拷贝。在浏览器输入并前往,页面会出现一个下载该APP的区域。(也有可能会出现一个error页面,但是往下滑动一下页面,那个下载APP的区域就出来了)。
四、 在微信开发平台上的设置
这个Universal Link地址和微信SDK调用地址WX_UNIVERSAL_LINK要保持一致,要不调起失败。 BOOL success = [WXApi registerApp:WX_APP_ID universalLink:WX_UNIVERSAL_LINK];
打开调试,可以查看到结果。 [WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult* result) {}];
五、 微信SDK调用 就是要安装微信SDK的文档要求执行,使用他们提供的类型或者对象。
最后就是如果调用微信支付sdk和支付宝sdk,仔细阅读各家文档即可。