[记录]H5集成微信js-sdk踩‘坑’之路

531 阅读4分钟

前言

因项目需要,紧急接了一个h5宣传页的开发。开发完成后发现在微信中分享该页面的展示效果极差,临时决定引入微信js-sdk完成分享图文展示的效果。本以为只需要按部就班的一步步完成就好,没想到too young too simple,便开始了踩‘坑’之路。于是今天就记录一下遇到的一些问题。

先附上微信JS-SDK官方文档

遇到的一些问题

对于那些文档中提到的常见问题在这里就不赘述了。仅在这里记录下个人遇到的一些奇葩问题。希望大家可以多多指教,一起沟通。

  1. 经典抛错:invalid url domain。经过排查,发现我的H5网页的协议是https的,而可信域名秘钥放在http的对应域名下,导致报错。注:可信域名的绑定不要加协议,端口只能使用默认端口。 因为我们域名的80端口没开,导致耗费了大量时间去尝试其他端口能否使用(即网页url是其他端口,可信域名使用默认端口,后发现不可行),最后换了三个域名后,还是用的默认端口,可信域名使用域名+路径的方式。

  2. ios中sdk不生效。 后从百度到的一个文档中发现该注意项:如果你的页面启用了https,务必引入 res.wx.qq.com/open/js/jwe… ,否则将无法在iOS9.0以上系统中成功使用JSSDK。
    但是官方文档中并未说明,而只是说明了可引用https的sdk,如下: 在需要调用JS接口的页面引入如下JS文件,(支持https):res.wx.qq.com/open/js/jwe… (支持https)。

    所以两者综合,我引用https://res2.wx.qq.com/open/js/jweixin-1.6.0.js,这样就完美解决ios中sdk不生效的问题了。

  3. 安卓部分机型分享的自定义配置无效。因为看到sdk文档写了新的分享方法(如下)

    自定义“分享给朋友”及“分享到QQ”按钮的分享内容(1.4.0)

    wx.ready(function () {   //需在用户可能点击分享按钮前就先调用
      wx.updateAppMessageShareData({ 
        title: '', // 分享标题
        desc: '', // 分享描述
        link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: '', // 分享图标
        success: function () {
          // 设置成功
        }
      })
    }); 
    

    自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容(1.4.0)

    wx.ready(function () {      //需在用户可能点击分享按钮前就先调用
      wx.updateTimelineShareData({ 
        title: '', // 分享标题
        link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: '', // 分享图标
        success: function () {
          // 设置成功
        }
      })
    }); 
    

    但是发现这样子不行啊。于是经过万能的百度查到需要同时使用旧的sdk方法(如下)。而这两个方法在官方文档中明明标注了即将被废弃的...无力吐槽。

    获取“分享到朋友圈”按钮点击状态及自定义分享内容接口(即将废弃)

    wx.onMenuShareTimeline({
      title: '', // 分享标题
      link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
      imgUrl: '', // 分享图标
      success: function () {
      // 用户点击了分享后执行的回调函数
      }
    }
    

    获取“分享给朋友”按钮点击状态及自定义分享内容接口(即将废弃)

    wx.onMenuShareAppMessage({
      title: '', // 分享标题
      desc: '', // 分享描述
      link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
      imgUrl: '', // 分享图标
      type: '', // 分享类型,music、video或link,不填默认为link
      dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
      success: function () {
      // 用户点击了分享后执行的回调函数
      }
    }
    

    经过多机型测试,算是ok啦。

总结

初次做集成微信js-sdk的web,觉得文档还是要应该多看,但是不能迷信文档,还是要多尝试,多试验。才能发现不一样的精彩哦。初次发文章,希望可以和大家多多交流。