vue引入微信sdk 实现分享朋友圈获取地理位置功能

 更新时间:2019年07月04日 13:34:48   作者:Love_Life  
这篇文章主要介绍了h5 vue引入微信sdk 实现分享朋友圈,分享给朋友,获取地理位置功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

最近入职的公司主要做微信端的h5,所以在所难免要引用sdk。虽然官方文档写的还算清楚,但是还是有坑。

1.在index.html中 引入微信sdk

<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>

2.在assets/js 下新建文件 wx.js

export default {
 wxShowMenu: function (that,sign='') {
  let url = window.location.href.split('#')[0]
  that.$http.post('/xxx', //请求你们公司后台的接口 获取相关的配置
   that.$getSingQuery({
    appKey: 'xxx',
    url
   }))
   .then(res => {
    var getMsg = res.data.data;
    // console.log('微信配置----------')
    // console.log(res.data)
    wx.config({
     debug: false, //生产环境需要关闭debug模式  测试环境下可以设置为true 可以在开发者工具中查看问题
     appId: getMsg.appid, //appId通过微信服务号后台查看
     timestamp: getMsg.timestamp, //生成签名的时间戳
     nonceStr: getMsg.noncestr, //生成签名的随机字符串
     signature: getMsg.sign, //签名
     jsApiList: [ //需要调用的JS接口列表
      'updateAppMessageShareData', //自定义“分享给朋友”及“分享到QQ”按钮的分享内容(1.4.0) 新接口
      'updateTimelineShareData', //自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容(1.4.0) 老接口
      'onMenuShareTimeline', //分享到朋友圈 老接口
      'onMenuShareAppMessage',//分享给盆友 老接口
      'getLocation' //获取定位
     ]
    });
    wx.error(function (res) {
     // alert(JSON.stringify(res))
     console.log(res)
     // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
    });
    wx.ready(function () {
     if(sign=='location'){ //由于 获取定位往往是页面一加载 就提示获取地理位置 所以可以直接在写在 wx.ready
      wx.getLocation({
       type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
       success: function (res) {
        var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
        var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
        var speed = res.speed; // 速度,以米/每秒计
        var accuracy = res.accuracy; // 位置精度
        that.latitude=res.latitude;
        that.longitude=res.longitude;
        that.geocodeRegeo()//逆地理编码 调用你vue实例里的方法
        do something...
       }
      });
     }
    });
   })
   .catch(error => {
    alert(error)
    console.log(error)
   })
 }
}

3.在main.js 将WXConfig绑在vue原型上 这样哪个页面需要初始化 直接通过原型就可以拿到

import WXConfig from './assets/js/wx' //微信分享
Vue.prototype.WXConfig = WXConfig

4.在需要的页面 进行初始化

微信JS-SDK说明文档:同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用。

所以 我们在你需要的页面 mounted 时, this.WXConfig.wxShowMenu(this); 调用就可以。

我这里将this传入 只是为了能直接在wx.js 调用vue上的一些方法。比如axios

mounted: function () {
  this.WXConfig.wxShare(this);
 },

通过按钮自定义触发

html

<div class="fxbox bor_b"
   @click="shareFriend">分享给朋友</div>
<div class="fxbox bor_b"
   @click="shareFriendCircle">分享到朋友圈</div>

js

 shareFriendCircle () {
   let that = this
   wx.onMenuShareTimeline({
    title: this.dataCode.title, // 分享标题
    desc: this.dataCode.desc, //分享描述
    link: this.dataCode.link,// 分享链接
    imgUrl: this.dataCode.imgUrl, // 分享图标
    success () {
     console.log('分享给朋友圈 旧')

    }
   });
  },
    // 分享给朋友 旧
  shareFriend () {
   let that = this
   wx.onMenuShareAppMessage({
    title: this.dataCode.title, // 分享标题
    desc: this.dataCode.desc, //分享描述
    link: this.dataCode.link,// 分享链接
    imgUrl: this.dataCode.imgUrl, // 分享图标
    success () {
     console.log('分享给朋友 旧')
    }
   });
  },

5.新老接口的区别

新接口 
  'updateAppMessageShareData' //自定义“分享给朋友”及“分享到QQ”按钮的分享内容(1.4.0) 
  'updateTimelineShareData',//自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容(1.4.0)
老接口
  'onMenuShareTimeline', //分享到朋友圈 
  'onMenuShareAppMessage',//分享给盆友

注意

新接口中的 success 回调函数 指的是 你的那些title desc... 自定义设置成功 了的回调函数,而不是用户主动点击微信右上角的三个点,点击分享给朋友或者朋友圈,分享成功的回调函数。
老接口 success 回调函数 是指 用户成功分享 给朋友或者朋友圈的回调函数
经测试 使用新接口 在 ios 下表现正常 ,在 部分安卓机下失效 了

建议使用老接口 无此问题

6.补充

还有一点, link: this.dataCode.link,// 分享链接

该链接域名或路径必须与当前页面对应的公众号JS安全域名一致

总结

以上所述是小编给大家介绍的vue引入微信sdk 实现分享朋友圈获取地理位置功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • vue获取验证码倒计时组件

    vue获取验证码倒计时组件

    这篇文章主要为大家详细介绍了vue获取验证码倒计时组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • 基于express中路由规则及获取请求参数的方法

    基于express中路由规则及获取请求参数的方法

    下面小编就为大家分享一篇基于express中路由规则及获取请求参数的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • vue如何动态设置class、动态设置style

    vue如何动态设置class、动态设置style

    这篇文章主要介绍了vue如何动态设置class、动态设置style,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue如何使用vant组件的field组件disabled修改默认样式

    vue如何使用vant组件的field组件disabled修改默认样式

    这篇文章主要介绍了vue如何使用vant组件的field组件disabled修改默认样式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • vue实现图片上传功能

    vue实现图片上传功能

    这篇文章主要为大家详细介绍了vue实现图片上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • Vue2 Dialog弹窗函数式调用实践示例

    Vue2 Dialog弹窗函数式调用实践示例

    这篇文章主要为大家介绍了Vue2 Dialog弹窗函数式调用实践示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Vue3.0数据响应式原理详解

    Vue3.0数据响应式原理详解

    这篇文章主要介绍了Vue3.0数据响应式原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 解决vue admin element noCache设置无效的问题

    解决vue admin element noCache设置无效的问题

    今天小编就为大家分享一篇解决vue admin element noCache设置无效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 基于vue3+antDesign2+echarts 实现雷达图效果

    基于vue3+antDesign2+echarts 实现雷达图效果

    这篇文章主要介绍了基于vue3+antDesign2+echarts 实现雷达图,本文通过实例代码图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • vue之使用echarts图表setOption多次很卡问题及解决

    vue之使用echarts图表setOption多次很卡问题及解决

    这篇文章主要介绍了vue之使用echarts图表setOption多次很卡问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07

最新评论