-
universalLink配置,一共需要检查四个地方:
- 微信开放平台-管理中心-移动应用-开发配置- iOS应用- iPhone应用 -Universal Links
- 微信开放平台-管理中心-公众号-找到自己的服务号,点击查看-接口信息-网页跳转移动应用-关联设置- JS接口安全域名
- Xcode:wxapi注册时填写的universal link
- Xcode:Associated Domains: applinks:xxx 这里填写的也要一样
开放平台地址:open.weixin.qq.com
以上配置必须都是一级域名,H5的域名也是这个
-
H5注册WXApi时是服务号的AppId(微信开放平台-管理中心-公众号-找到自己的服务号)
jweixin.config({ debug: false, appId: 服务号的AppId, // 必填,公众号的唯一标识 timestamp: timestamp, // 必填,生成签名的时间戳 nonceStr: noncestr, // 必填,生成签名的随机串 signature: signature, // 必填,签名 jsApiList: [ "updateAppMessageShareData", "updateTimelineShareData", "showOptionMenu", "hideMenuItems", "hideAllNonBaseMenuItem", "showAllNonBaseMenuItem", ], // 必填,需要使用的JS接口列表 openTagList: ["wx-open-launch-app", "wx-open-launch-weapp"], }); -
跳转的appid是移动应用的Appid(微信开放平台-管理中心-移动应用)
<wx-open-launch-app :appid="appid" :extInfo="xxx" @launch="handleLaunch" @error="handleError" > <div v-is="'script'" type="text/wxtag-template"> <div>打开App</div> </div> </wx-open-launch-app> -
debug看一下
<wx-launch-app>标签内是否生成了<script>标签,我们用的Vue,一直没有生效,渲染出来还是<div>标签,找了很久的问题。最后时把其他项目的package-lock.json文件拿过来,至今没找到是哪个版本库的问题。 我把demo传到github上,有需要的可以自取。 -
正式环境才能测试,测试环境点击是没有反应的,不会有弹框。一般生成
<script>标签后,配置没问题就可以跳转了。
其他问题:
-
关于extInfo在iOS中接收的问题:
官方文档写的是会调用
SceneDelegate的scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity方法,实际回调的是scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts,获取到的数据是类似下面的格式:wx11111111://platformId=wechat?_wechat_sdk_erased_paste_board_data=1&_wechat_sdk_biz_data=11111&_wechat_sdk_biz_data_len=5解决方法:
SceneDelegate.m - (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts API_AVAILABLE(ios(13.0)) { NSArray *members = [URLContexts allObjects]; UIOpenURLContext *urlContext = [members firstObject]; if ([urlContext.URL.host isEqualToString:@"platformId=wechat"] ) { [WXApi handleOpenURL:urlContext.URL delegate:[AppShare sharedInstance]]; } }在WXApi回调中写:
- (void)onReq:(BaseReq*)req { if ( [req isKindOfClass:[LaunchFromWXReq class]] ) { LaunchFromWXReq * rex = (LaunchFromWXReq *)req; NSLog(@"%@", rex.message.messageExt); } }