微信通用链接:
1.配置证书时打开associate domain
2.在Xcode设置里Capabilities里添加associate domains填写:applinks:admin.yujiankang.com(不要https://)
3.编写JSON文件
{
"applinks": {
"apps": [],
"details": [
{
"appID": "FN4XLWNR5J.com.rzhysoft.DongnanEyeHospital",
"paths": [ "/app/dnyk/hos/" ]
},
{
"appID": "SCWKUTTN5A.com.RuanZhiHongYi.QuanZhouMaternityHospital",
"paths": [ "/app/qzfxfc/hos/" ]
},
{
"appID": "X4235N59DD.com.RuanZhiHongYi.MagawHospital",
"paths": [ "/app/mgi/hos/" ]
},
{
"appID": "WN5Z5LM42V.com.rzhysoft.YuJianKangHospital",
"paths": [ "/app/yjk/hos/" ]
}
]
}
}
多个app可以共用一个JSON文件,paths那里确定唯一路径,写好后给后台放入https服务器的域名根目录下
在浏览器输入https://admin.yujiankang.com/apple-app-site-association 可以直接打开JSON文件(不要去下载)
程序先卸载掉,运行填写好associate domains配置的这个程序
在手机备忘录里输入,https://admin.yujiankang.com/app/yjk/hos保存后变黄,长按是否可以弹出跳转到这个APP
4.pod 'WechatOpenSDK'
5.在 Xcode 中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序 id
6.在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在 “info”标签栏的“LSApplicationQueriesSchemes“添加weixin 和weixinULAPI
7.#import "WXApi.h" WXApiDelegate
重写 AppDelegate 的 handleOpenURL 和 openURL 方法:
- (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];
}
重写AppDelegate或SceneDelegate的continueUserActivity方法: 注意:适配了SceneDelegate的App,系统将会回调SceneDelegate的continueUserActivity方法,所以需要重写SceneDelegate的该方法。
AppDelegate:
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray
oring>> * __nullable restorableObjects))restorationHandler {
return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}
SceneDelegate:
- (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity {
[WXApi handleOpenUniversalLink:userActivity delegate:self];
}
8.程序要实现和微信终端交互的具体请求与回应,因此需要实现 WXApiDelegate 协议的两个方法:
-(void) onReq:(BaseReq*)reqonReq
是微信终端向第三方程序发起请求,要求第三方程序响应。第三方程序响应完后必须调用 sendRsp 返回。在调用 sendRsp 返回时,会切回到微信终端程序界面。
-(void) onResp:(BaseResp*)resp
如果第三方程序向微信发送了 sendReq 的请求,那么 onResp 会被回调。sendReq 请求调用后,会切到微信终端程序界面。
具体在此两方法中所要完成的内容由你定义,具体可参考微信开发工具包中的 SDK Sample Demo 源码。
[5] 如果你的程序要发消息给微信,那么需要调用 WXApi 的 sendReq 函数:
- (void)sendReq:(BaseReq *)req completion:(void (^
__nullable)(BOOL success))completion;
9.测试
SDK1.8.7版本,WXApi新增了自检函数checkUniversalLinkReady:,帮助开发者排查SDK接入过程中遇到的问题。
注意事项:
- 调用自检函数之前必须要先调用registerApp:universalLink接口, 并确认调用成功
- 自检过程中会有Log产生,可以先调用startLogByLevel函数,根据Log排查问题
- 会多次回调block
- 仅用于新接入SDK时调试使用,请勿在正式环境的调用
示例代码:
//在register之前打开log, 后续可以根据log排查问题
[WXApi startLogByLevel:WXLogLevelDetail logBlock:^(NSString *log) {
NSLog(@"WeChatSDK: %@", log);
}];
//务必在调用自检函数前注册
[WXApi registerApp:APP_ID universalLink:UNIVERSAL_LINK];
//调用自检函数
[WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult* result) {
NSLog(@"%@, %u, %@, %@", @(step), result.success, result.errorInfo, result.suggestion);
}];
WXULCheckStep值说明:
1step = WXULCheckStepParams: 参数检查
2step = WXULCheckStepSystemVersion: 当前系统版本检查
3step = WXULCheckStepWechatVersion: 微信客户端版本检查
4step = WXULCheckStepSDKInnerOperation: 微信SDK内部操作检查
5step = WXULCheckStepLaunchWechat: App拉起微信检查
6step = WXULCheckStepBackToCurrentApp: 由微信返回当前App检查
7step = WXULCheckStepFinal: 最终检查
会依次回调这7个step,当回调了WXULCheckStepFinal,说明检测通过,SDK接入成功。 任一step回调的result.success为NO, 流程终止,后续不再回调,可以根据result.errorInfo的查看当前步骤错误的原因,根据result.suggestion修复问题.