uniapp实现H5分享并增加积分

一、下载微信 js-sdk 到项目

npm instaill jweixin-module --save

微信 JS-SDK 说明文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html

二、创建一个 wechat.js 文件

import store from "@/store/index.js";
import reply from "@/utils/reply.js";
import { addIntegral } from '@/api/all.js' // 增加积分接口

let jweixin = require('jweixin-module')

export default {
    // 判断是否在微信中  
    isWechat () {
        let ua = window.navigator.userAgent.toLowerCase();
        if (ua.match(/micromessenger/i) == 'micromessenger') {
            // console.log(‘是微信客户端‘)
            return true;
        } else {
            // console.log(‘不是微信客户端‘)
            return false;
        }
    },
    // 初始化sdk配置  
    initJssdkShare(info,link) {
        uni.request({
            url: store.getters.requestUrl + '/api.wechat/jssdk', // 需要向后端拿签名
            method: 'post',
            data: {
                url: window.location.href // 根据后端需要的地址
            },
            success: res => {
                if (res.data.code == 1) {
                    const newData = res.data.data;
                    jweixin.config({
                        /* debug 开启调试模式,调用的所有api的返回值会在客户端alert出来,
                           若要查看传入的参数信息可在pc端通过log打出。*/
						debug: true, 
						appId: newData.appId, // 公众号的唯一标识
						timestamp: newData.timestamp, // 生成签名的时间戳
						nonceStr: newData.nonceStr, // 生成签名的随机串
						signature: newData.signature, // 签名
						jsApiList: [
							'checkJsApi',
							'updateAppMessageShareData',
							'updateTimelineShareData',
							'onMenuShareWeibo'
						], // 需要使用的JS分享接口列表
					});
					jweixin.ready(function () {
					    let shareData = {
					        title: info.title,
					        desc: info.desc,
					        link: link,
					        imgUrl: info.img,
					        success: async res => {
								/* 手机上返回的是sendAppMessage:ok,
                                   微信开发者工具上返回的是onMenuShareAppMessage:ok */
								if(res.errMsg == "onMenuShareAppMessage:ok" || 										res.errMsg == 'sendAppMessage:ok') {
									const result = await addIntegral();
									if(result.code == 1) {
										reply.tips({title: '分享积分获取成功'});
									} else {
										reply.tips({title: result.info});
									}
								}
							},
							fail: err => {}
					    };
					     // 分享给朋友/分享到QQ接口  
						jweixin.updateAppMessageShareData(shareData);
					    // 分享到朋友圈/分享到QQ空间接口
						jweixin.updateTimelineShareData(shareData);
						// 分享到腾讯微博接口
						jweixin.onMenuShareWeibo(shareData);
					});
					jweixin.error(function (err) {});
                }
            }
        });
    },
    // 在需要分享的页面中调用  
    share(info,link) {
        if (!this.isWechat()) return false;
        link = link || window.location.href;
        this.initJssdkShare(info,link);
    }
}

这里有几个坑需要注意:

  1. 公众号的分享只能通过右上角 … h5的分享触发,默认分享当前页面,这里只是配置分享内容
  2. 当前分享页面的链接必须与后台配置JS接口安全域名和网页授权域名一致
  3. 分享接口成功:手机返回 sendAppMessage:ok,微信开发者工具返回 onMenuShareAppMessage:ok
  4. 无论分享成功还是取消都会走success事件,点击查看官方解释

三、在 main.js 中全局引入

import wechat from './utils/wechat.js'
if (wechat.isWechat()) Vue.prototype.$wechat = wechat;

四、在页面中使用

// 在 onLoad 中调用
share() {
    if (this.$wechat && this.$wechat.isWechat()) {
        this.$wechat.share({
            title: "分享标题",
            desc: "描述",
            img: "http://xxx.jpg",
        });
    }
},
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值