- wx-open-launch-app同一手机,不同微信号,拉起app效果不一致;一个成功另一个失败?
在同一款手机上出现 wx-open-launch-app的效果 不一致;sdk注入,以及config 配置注入、接口权限获取均成功;但是 微信号 的更换 ,wx-open-launch-app 出现不一样效果;一个微信号拉起app成功,一微信号个拉起app失败:失败报错launch:fail; 成功的微信号为:bhyigww 失败的微信号为:gf565385945 网页授权域名地址 拉起app地址:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6b090c8d382a827c&redirect_uri=https%3A%2F%2Fhlweixin-test.upoem2.com%2Flcsc%2Fshare%2Fjjxq%3Fname%3D%25E5%25A4%25A7%25E6%2591%25A9%25E5%2585%25BB%25E8%2580%25812040(FOF)%26id%3D764794%26type%3Dgmjj&response_type=code&scope=snsapi_userinfo&state=014022#wechat_redirect&forcePopup=true
10-28 - wx-open-launch-app,套壳Android无法唤起app,报launch:fail?
华为机型:鸿蒙OS ; 小米机型:澎湃OS; 使用 wx-open-launch-app 都会 报 error , e.detail : launch:fail; 其他 普通Android机型 以及 IOS机型 均可以正常 唤起app ,不报错,流程正常; 提供的案例日志:(手机微信上传日志: 我->设置->帮助与反馈右上角上报日志的入口,微信号以及时间点) 微信号为:nlddjqcl 时间点为:2024年08月20日 15:48 左右, 目前的问题还是 华为机型 鸿蒙的系统 会报 launch:fail; 其他的iPhone 小米 vivo OPPO 都没问题; ------------- Web报错log: [图片] 初始化函数: const initWechatJsSDK = async () => { // 微信开放标签 逻辑 // lcsc/wxChat/getWXConfig // 获取JS-SDK标签 配置信息 const res = await Network.call('lcsc/wxChat/getWXConfig', { url: location.href }); const { wxConfig } = res.cxlb[0]; // 设置微信JS-SDK的配置信息 wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印 appId: wxConfig.appId, // 必填,公众号的唯一标识 timestamp: wxConfig.timestamp, // 必填,生成签名的时间戳 nonceStr: wxConfig.nonceStr, // 必填,生成签名的随机串 signature: wxConfig.signature, // 必填,签名 jsApiList: wxConfig.jsApiList, // 必填,需要使用的JS接口列表 openTagList: wxConfig.openTagList, // 可选,需要使用的开放标签列表,例如['wx-open-launch-app'] }); // 配置完成后调用微信Js-SDK的ready函数 wx.ready(() => { // 在ready函数中可以调用微信Js-SDK的其他接口 console.log('初始化完成, wx config success'); // 注入成功之后 才会显示 拉起app 按钮 (wx-open-launch-app) launchAppActions.ready(); wx.checkJsApi({ jsApiList: wxConfig.jsApiList, // 需要检测的JS接口列表,所有JS接口列表见附录2 success: (res) => { console.log('[ checkJsApi ] >', res); }, fail: (res) => { console.log('检查Api', res); }, }); wx.hideMenuItems({ menuList: [ 'menuItem:share:appMessage', 'menuItem:share:timeline', 'menuItem:share:qq', 'menuItem:share:weiboApp', 'menuItem:favorite', 'menuItem:share:facebook', 'menuItem:share:QZone', ], }); // 监听返回事件 关闭微信窗口 pushHistory(); window.addEventListener("popstate", () => { wx.closeWindow(); }, false); try { window.tbs_bridge.nativeExec('network', 'type', 0, null); } catch (e) { console.error(e); } // window.addEventListener('beforeunload', () => { // // 处理页面即将离开的逻辑,可以在这里执行你的返回操作 // wx.closeWindow(); // console.log('用户即将离开页面'); // }); }); // 在配置出错的情况下调用错误处理函数 wx.error((err) => { console.error(err); }); document.addEventListener('WeixinOpenTagsError', (e) => { console.error('无法使用开放标签的错误原因', e.detail); console.error('无法使用开放标签的错误原因', e.detail.errMsg); // 无法使用开放标签的错误原因,需回退兼容。仅无法使用开放标签,JS-SDK其他功能不受影响 }); }; 封装组件为: ** * 覆盖式 微信开放标签 样式 方法 (微信中 未注册成功 wx-open-launch-app,不会影响 外部父元素 点击; 采用 子绝父相 的方式,高度由 open-btn 默认撑开) * 注:wx-open-launch-app 未注册成功,微信内部浏览器 将不会生成 插槽 内的 元素,相当于 wx-open-launch-app标签下 没有元素 ,无高度 * 引用组件时 需要传入父元素id(不能与项目内id重复),且给父元素 增加相对定位; */ // TODO extinfo 需要与APP 对接参数 两种情况:1.进入首页的 理财tab 2.新开webview 进入理财路由的 ewe/transfer // TODO extinfo 默认不传 应该 是进入首页的 理财tab , 在组件外部判断是否 传还是不传 分享组合详情 account 参数判断 const LaunchAppWrapper = ({ _downloadApp, style, targetAppId, extinfoUrl, openBtnRealHeightBoxId}) => { // 如果没有app 下载app方法 const downloadApp = _downloadApp || dowloadAPP; const appId = targetAppId || TARGET_APP_ID; const wxRef = useRef(null); useEffect(() => { console.log('wxRef.current', wxRef.current); if (wxRef.current) { const script = document.createElement('script'); script.type = `text/wxtag-template`; // 微信标签的 内部插槽(text/wxtag-template) 的元素 不支持外部样式编写,只能在style中填写 // getDomByIdHeight(openBtnRealHeightBoxId) script.innerHTML = ` <style>.open-btn{ width:100%; height:${getDomByIdHeight(openBtnRealHeightBoxId)}px; } </style> <div class="open-btn"> </div> `; wxRef.current.appendChild(script); wxRef.current.addEventListener('launch', (e) => { console.log('success', e.detail); }); wxRef.current.addEventListener('error', (e) => { const { errMsg, appId, extInfo } = e.detail; console.log('fail', e.detail); console.log('appId', appId); console.log('extInfo', extInfo); // errMsg // "launch:fail" -> 当前场景不支持跳转,或Android上该应用未安装,或iOS上用户在弹窗上点击确认但该应⽤未安装 // "launch:fail_check fail" -> 校验App跳转权限失败,请确认是否正确绑定AppID if (errMsg === 'launch:fail_check fail') { Toast.show('校验App跳转权限失败,请确认是否正确绑定AppID'); return; } if(errMsg === 'launch:fail'){ // TODO 未下载 去下载app downloadApp(); return } Toast.show(errMsg); }); document.addEventListener('WeixinOpenTagsError', (e) => { console.error('无法使用开放标签的错误原因', e.detail); console.error('无法使用开放标签的错误原因', e.detail.errMsg); // 无法使用开放标签的错误原因,需回退兼容。仅无法使用开放标签,JS-SDK其他功能不受影响 }); } return () => { if (wxRef.current) { wxRef.current.removeEventListener('launch', () => {}); wxRef.current.removeEventListener('error', () => {}); } }; }, []); return ( <div> <wx-open-launch-app ref={wxRef} appid={appId} extinfo={extinfoUrl} style={style}></wx-open-launch-app> </div> ); }; LaunchAppWrapper.defaultProps = { _downloadApp: func.downloadPrompt, style: { position: 'absolute', overflow: 'hidden', top: '0', left: '0', right: '0', zIndex: 199, opacity: 0, }, targetAppId: '', extinfoUrl: 'upchina://fund/main', openBtnRealHeightBoxId: '', }; LaunchAppWrapper.propTypes = { _downloadApp: PropTypes.func, // 下载app方法 style: PropTypes.object, // 微信开放标签 wx-open-launch-app 的 外部样式 targetAppId: PropTypes.string, // 移动应用的 appID 不同于 服务号ID extinfoUrl: PropTypes.string, // 跳转所需额外信息 ( 跳转的原生app 解析) openBtnRealHeightBoxId: PropTypes.string, // 微信开放标签 外部套壳 的 父元素 id }; export default React.memo(LaunchAppWrapper);
08-27 - wx-open-launch-app 华为机型打不开已安装的app,报launch:fail?
除了华为机型 使用 wx-open-launch-app 会 报 error , e.detail : launch:fail; 其他 Android机型 以及 IOS机型 均可以正常 唤起app ; 然后还有一个问题就是 wx-open-launch-app 调起app, IOS冷启动 无法收到extinfo 做到信息接收
07-11