有项目使用到了IOS移动应用跳转微信小程序支付的 因为对接合作的银行费率低没有移动应用SDK于H5支付SDK 无奈只能使用此方式 官网文档写的很简洁明了
第一步登录苹果开发者中心配置
1.登录苹果开发者中心 打开 Associated Domains
2.在ios项目里面配置 applinks,applinks:你的域名,比如 applinks: ,就是域前面是固定格式(不要https://,不要加路径path)
第二步 服务器配置《必须配置》
1)创建一个json文件,名称必须为 apple-app-site-association,⚠️该文件不可带 .json 的后缀名
apple-app-site-association 文件必须放在https服务器的根目录下,例: 这个路径下 ⚠️一定是根目录,也就是说该文件必须是一级目录,供下载使用
apple-app-site-association 文件格式:
{"applinks": {"apps": [],"details": [{"appID": "teamID.bundleId","paths": ["*"]}]}}
appID 格式为 teamID.bundleId形式,比如说我的teamID是12324,<查看tameID如图>bundleId是com.test.app
那么我的appID就是:.test.app。
paths:使用*配置,则整个网站都可以使用
他是用来告诉safari(APP)那些是Universal Links。例如: 是你的域名,path配置为["/test/*"],那么你在手机里safari打开/test/xxx就会有app打开提示 试验图就不弄了 自行验证
验证apple-app-site-association文件 https://search./appsearch-validation-tool/ 显示如图4 则成功了有问题自行查看苹果官方文档App Search Programming Guide: Support Universal Links
第三步 集成微信sdk
集成前先简单的介绍下
Universal Links
要对接最新的微信sdk,你必须要了解一下Universal Links是什么,因为最新sdk根据Universal Links来判断来源app是否可信。
IOS主流跳转方案有两种:
1:Scheme
2:Universal Links
Scheme的协议是由开发者完全自定义,同时访问失败没有任何内容可以展现,所以IOS9就引入Universal Links。Universal Links 是通过域名下apple-app-site-association来确定app,因为域名又必须是https又不会重复,还能当作地址来访问网页,解决了上述两个问题。
1.官方sdk下载集成文档介绍https://developers./doc/oplatform/Mobile_App/Launching_a_Mini_Program/iOS_Development_example.html
2.以上步骤操作集成完过后下面我们开始接入sdk 导入头文件 WXApi.h
调用微信api注册我们的appid 与universalLink
universalLink 你的域名比如百度 如下
[WXApi registerApp:@"微信appid 不是小程序id" universalLink:@"/"];
在AppDelegate实现实现以下方法 <如果项目里面有集成聚合sdk,比如友盟分享,可以用聚合的不用实现以下 个别方法了>
- (BOOL)application:(UIApplication *)appopenURL:(NSURL *)urloptions:(NSDictionary<NSString *,id> *)options {return [WXApi handleOpenURL:url delegate:self];}- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {return [WXApi handleOpenURL:url delegate:self];}- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {return [WXApi handleOpenURL:url delegate:self];}//对应我们配置的 Universal Links- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler{return [WXApi handleOpenUniversalLink:userActivity delegate:self];}
接下来开始测试
下面遇到一个坑,小程序是前段开发的就问他小程序的userName是多少,前段妹子直接报了小程序的名字,我再三确认他说小程序的userName就是小程序的名字。好吧就开始测试了。微信登录分享都正常未读小程序跳转不过去。
最好查阅资料才发现小程序的userName就是小程序的初始id 登录小程序开放中心找到点击设置
查看方法如图
WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];launchMiniProgramReq.userName = @"小程序的初始id";launchMiniProgramReq.miniProgramType = WXMiniProgramTypeRelease;return [WXApi sendReq:launchMiniProgramReq completion:nil];
当遇到报错weixinULAPI://" -error:"This app is not allowed to query for scheme weixinulapi...时漏写白名单了噢
如需配置微信sdk相关
其中links地址要带上https://(看微信提示文字即可)
配置Url Type
填入微信开放平台对应的appid即可
如果遇到集成后每次跳转小程序都跳转两次 自检不通过 可能是apple-app-site-association服务器上没配置对 官方要求在服务器跟目录建.ewll-know目录但是这个目录是Linux的隐藏文件夹访问不到,最终需要的都是配置APPID的json串 所以解决方案可以为配置Nginx代理 将配置好的json传代理为HTTPS通用链接
// 123.baidu.wqeq.qweq 为需要修改的APPid path可以为当前的*location /apple-app-site-association {charset UTF-8; default_type text/html; return 200 '{\"applinks\": {\"apps\": [],\"details\": [{\"appID\": \"123.baidu.wqeq.qweq\",\"paths\": [\"*\"]}]}}';}
location /apple-app-site-association {charset UTF-8;default_type text/html;alias E:/XXX/XXX/apple-app-site-association;}
如果遇到集成后跳转小程序后在回跳APP流程中止 说明没有实现全部微信的方法请查看官方文档
其余的自行验证