打开App:微信浏览器内部打开app跳转

微信内打开App终于开发完成了: 说说我踩过的坑吧:

1,跨域问题,微信给的api地址是微信的前缀,访问时是需要处理跨域的,一般的跨域问题处理方式:

1.1:请求让后端完成,后端请求不会出现跨域问题。1.2:前端做代理,前端做代理是代理的本地,再将服务器nigix的代理做好,就能将服务器的代理也完成。

2,appid的问题,微信标签里面写的appid不是公众号的appid,而是移动应用的appid。这个怪我没好好读文档导致的。

<wx-open-launch-app
	 id="launch-btn"
	 appid="wxc8d81336736a6d43" //**app的appid**
	 extinfo=""
	>

3,

  • import wx from 'weixin-js-sdk'

这个weixin-js-sdk是一定要在使用页面引入的。判断是否引入成功,就是后面的debug模式一定要开启的。

4,

wx.config({
    debug: true, // 开启调试模式,
    appId: 'wxcdbe7983be8fb746', // 必填,企业号的唯一标识,此处填写企业号corpid
    timestamp: this.time, // 必填,生成签名的时间戳
    nonceStr: this.nums, // 必填,生成签名的随机串
    signature: this.signature,// 必填,签名,见附录1
	   jsApiList: ['wx-open-launch-app'],
    openTagList: ['wx-open-launch-app'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
  });
  • 在调试的时候,一定要将debug调成true,这样的话就进入的是调试模式,调试模式下,进入页面后,就会有弹框弹出:config:fail表示这个标签引入是失败的;
    config:ok表示这个标签的引入是成功的。

5,

wx.ready(function (res) {
	console.log(res)
});
wx.error(function (res) {
    console.log(res)
  
});

var btn = document.getElementById('launch-btn');
 btn.addEventListener('launch', function (e) {
console.log('success');
 });
 btn.addEventListener('error', function (e) {
console.log('fail', e.detail);
 });

这段代码的回调判断可以直接得到wx的引入是否成功。e.detail.errMsg的报错信息是比较关键的。具体的报错原因要到微信的官方上看。上面给出了很多种报错的可能性以及解决方案。

附录5-常见错误及解决方法https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#62

兼容性问题
现在开发遇到了一个兼容性的问题,正在解决当中。问题描述如下:

  • 在安卓机型的微信浏览器中,打开h5页面,点击出现弹框,但是弹框的按钮部分,本来应该是“打开App”字样,但是却是空白的。

    解决排查方案:

  1. 思考是否是兼容的问题:

  2. 线索:苹果手机可以正常显示“打开App”字样,只有安卓机型不显示。所以初步判定是兼容的问题,但是另一个banner上的“打开App”可以正常显示,所以这个标签本身对安卓是不过敏的,因此我认为不显示和弹框有很大的关系。

  3. 排查步骤: 是否是Dom层的问题:因此我去掉了微信标签,换成了原来的按钮html,
    现在的结果是:按钮显示出来了,文字也显示了。完成✅

  4. 进行下一步:让按钮上的文字能有正常的显示样式。完成✅

  5. 进行第4步:将微信标签加到Dom中。观察按钮是否还在。❌完全不显示了

  6. 5,排查一下是否是标签外部没加view导致的。因此我在标签外部加了view,并且给了这个view宽度以及高度和背景颜色。❌即使外部的框显示出来了,内部的也没有显示。

  7. 我将没有问题的代码直接复制过来了,看看会不会出错。❌我已经试了所有的可能性,还是没出现这个按钮!!!我绝望了

  8. 也许是z-index 的问题吗?好像就是❌,并不是的。

  9. 终于发现了问题,这个微信标签是不可以和position :
    fixed一起用的。我的弹框的样式都是用固定定位写的,因此出了问题。那么,我写在外面可不可以呢??试一下吧:我将标签按钮写在了position:fixed的外面。答案是:可以的。🙆✅

  10. 在网上:微信开放平台的问答区找到了合适的方法。将这个标签的定位定在弹框的确认按钮上,然后将这个按钮设为完全透明,这样用户点击时,实际上触法的是覆盖在弹框上的透明按钮。✅
    这里要注意的点是:微信标签的按钮宽高样式不支持rpx,使用px就好。还有覆盖层级z-index要注意。

  11. 最后一步了,现在安卓手机的兼容问题已经解决了大部分。安卓上按钮可以点击了。但是:按钮不可以和v-show一起用!!!这样的问题就是:按钮会一直存在于页面上,不会和弹框一起消失,一起出现!!现在还没解决这个问题!!

  12. ✅终于解决了这个问题:v-show会让按钮在安卓机上不显示呢,换成v-if就可以了。 ⛽️😄

    完成啦!!!
    代码会在下一篇文章中贴出来。

### 微信小程序中安卓端点击后自动跳转到手机外部浏览器打开APP下载链接的功能实现 为了实现在微信小程序中,当用户在安卓设备上点击某个按钮时能够自动跳转到手机外部浏览器打开APP下载链接的功能,可以参考以下技术方案: #### 技术背景 由于微信内置浏览器的安全策略限制,在微信环境中直接触发外部浏览器的行为需要特定的技术手段。对于安卓平台而言,可以通过`WebView`的特性以及URL Scheme机制来间接实现这一目标[^2]。 #### 解决思路 1. **利用微信内置浏览器的局限性** 当前微信环境下的H5页面如果尝试直接调用外部应用或强制跳转外部浏览器,通常会被阻止。然而,通过某些特殊的方式(如模拟文件下载行为),仍然可以在一定程度上绕过这些限制[^3]。 2. **具体实现逻辑** 针对安卓设备,可以通过创建一个隐藏的iframe标签,并将其src属性设置为目标下载链接的方式来诱导微信内部浏览器主动唤起系统的默认浏览器。以下是具体的代码示例: ```javascript function redirectToExternalBrowser(url) { const iframe = document.createElement('iframe'); iframe.style.display = 'none'; iframe.src = url; document.body.appendChild(iframe); } ``` 上述代码片段的作用是在当前文档中动态插入一个不可见的iframe元素,并将它的源指向所需的下载地址。此操作往往会促使安卓版微信启动系统级浏览器加载对应资源。 3. **注意事项** - 对于iOS设备来说,这种方法未必有效,因为iOS上的Safari拥有更严格的沙盒保护措施。 - 如果希望兼容更多场景,则需额外考虑服务端配合下发不同类型的响应头(Content-Disposition字段设为attachment形式)从而进一步增强跨平台适配能力。 4. **补充说明** 此外需要注意的是,随着各大社交软件不断更新其安全防护政策,未来此类做法可能会面临更大的挑战甚至完全失效的风险。因此建议始终关注官方最新API文档和技术公告以便及时调整开发策略[^5]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值