vue+h5 plus 第三方分享

Posted fanqiuzhuji

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue+h5 plus 第三方分享相关的知识,希望对你有一定的参考价值。


html:

<div class="box" style="margin-top:0;" @click="share(‘weixin‘)">微信分享</div>
<div class="box" style="margin-top:0;" @click="share(‘qq‘)">QQ分享</div>
<div class="box" style="margin-top:0;" @click="share(‘sinaweibo‘)">微博分享</div>

 

mounted() {
      if(window.plus) {
        this.updateSerivces();
      }
},

 


data() {
  return {
        buttons: [{
            title: ‘我的好友‘,
            extra: {
              scene: ‘WXSceneSession‘
            }
          },
          {
            title: ‘朋友圈‘,
            extra: {
              scene: ‘WXSceneTimeline‘
            }
          },
        ],
        buttons1: [{
            title: ‘QQ‘,
            extra: {
              scene: ‘WXSceneSession‘
            }
          },
        ],
        buttons2: [
          {
            title: ‘微博‘,
            extra: {
              scene: ‘WXSceneTimeline‘
            }
          },
        ],
        sweixin: null,
        shares: null,
        sqq: null,
        sinaweibo: null,
    };
},

 

 

 methods: {
      /**
       * 获取微信分享通道
       */
      updateSerivces() {
        let _this = this;
        plus.share.getServices(function (s) {
          _this.shares = {};
          for (var i in s) {
            var t = s[i];
            _this.shares[t.id] = t;
          }
          _this.sweixin = _this.shares[‘weixin‘];
          _this.sqq = _this.shares[‘qq‘];
          _this.sinaweibo = _this.shares[‘sinaweibo‘];
        }, function (e) {
          plus.nativeUI.alert(‘获取分享服务列表失败:‘ + e.message);
        });
      },
      //第三方分享
      share(a) {
        let _this = this;

        if(a == ‘weixin‘){
          let msg = {
            type: ‘web‘, //分享的内容的类型
            title: ‘页面分享标题‘,
            content: ‘内容‘,
            thumbs: [‘http://img-cdn-qiniu.dcloud.net.cn/icon3.png‘],
            href: ‘https://www.baidu.com/‘,
            extra: {
              scene: "WXSceneSession"
            } // ‘WXSceneSession‘分享给好友,‘WXSceneTimeline‘分享到朋友圈
          }
          plus.nativeUI.actionSheet({
            title: ‘分享网页到微信‘,
            cancel: ‘取消‘,
            buttons: _this.buttons,
          }, function (e) {
              (e.index > 0) && _this.sharePage(_this.sweixin, msg, _this.buttons[e.index - 1]);
          })
        }
        if(a == ‘qq‘){
          let qq_msg = {
            type: ‘text‘, //分享的内容的类型
            title: ‘页面分享标题‘,
            content: ‘内容‘,
            thumbs: [‘http://img-cdn-qiniu.dcloud.net.cn/icon3.png‘],
            href: ‘https://www.baidu.com/‘,
          }
          plus.nativeUI.actionSheet({
            title: ‘分享网页到QQ‘,
            cancel: ‘取消‘,
            buttons: _this.buttons1,
          }, function (e) {
              (e.index > 0) && _this.sharePage(_this.sqq, qq_msg, _this.buttons[e.index - 1]);
          })
        }
        if(a == ‘sinaweibo‘){
          let sinaweibo_msg = {
            type: ‘web‘, //分享的内容的类型
            title: ‘页面分享标题‘,
            content: ‘内容‘,
            thumbs: [‘http://img-cdn-qiniu.dcloud.net.cn/icon3.png‘],
            href: ‘https://www.baidu.com/‘,
          }
          plus.nativeUI.actionSheet({
            title: ‘分享网页到微博‘,
            cancel: ‘取消‘,
            buttons: _this.buttons2,
          }, function (e) {
              (e.index > 0) && _this.sharePage(_this.sinaweibo, sinaweibo_msg, _this.buttons[e.index - 1]);
          })
        }

      },
      /**
       * 触发分享
       */
      sharePage(srv, msg, button) {
        let _this = this;
        // plus.nativeUI.alert(‘分享操作:‘);
        if (!srv) {
          plus.nativeUI.alert(‘无效的分享服务!‘);
          return;
        }
        button && (msg.extra = button.extra);
        // 发送分享
        if (srv.authenticated) {
          // plus.nativeUI.alert(‘---已授权---‘);
          _this.doShare(srv, msg);
        } else {
          // plus.nativeUI.alert(‘---未授权---‘);
          srv.authorize(function () {
            _this.doShare(srv, msg);
          }, function (e) {
            plus.nativeUI.alert(‘认证授权失败:‘ + JSON.stringify(e));
          });
        }
      },
      /**
       * 开始分享
       */
      doShare(srv, msg) {
        let _this = this;
        srv.send(msg, function () {
          plus.nativeUI.alert(‘分享到"‘ + srv.description + ‘"成功!‘);
        }, function (e) {
          plus.nativeUI.alert(‘分享到"‘ + srv.description + ‘"失败: ‘ + JSON.stringify(e));
        });
      },
}

 



 

以上是关于vue+h5 plus 第三方分享的主要内容,如果未能解决你的问题,请参考以下文章

前端开发Vue + Fabric.js + Element-plus 实现简易的H5可视化图片编辑器

vscode代码片段生成vue模板

vue h5页面 使用第三方聊天(环信集成web端)

Vue项目中引入第三方已做好的H5游戏

03 (H5*) Vue第三天

微信内分享第三方H5链接无法使用内置浏览器打开的解决方案