daoji_h5/utils/jweixin.js

187 lines
4.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import $api from "@/api/index.js"
import $util from "@/utils/index.js"
import $store from "@/store/index.js"
var jweixin = require('jweixin-module');
export default {
//判断是否在微信中
async isWechat() {
var ua = window.navigator.userAgent.toLowerCase();
if (ua.match(/micromessenger/i) == 'micromessenger') {
//console.log('是微信客户端')
return true;
} else {
//console.log('不是微信客户端')
return false;
}
},
async initJssdk() {
// let page = window.location.href.split('#')[0]; //获取当前url然后传递给后台获取授权和签名信息
// let page = /(Android)/i.test(navigator.userAgent) ? window.location.href.split('?#')[0]+'?' : window.entryUrl;
let page = window.entryUrl;
// console.log(page)
var {
appid: appId,
timestamp,
nonceStr,
signature
} = await $api.base.getWebConfig({
page
});
// signature = signature + `abcdef`
jweixin.config({
debug: false,
appId,
timestamp,
nonceStr,
signature,
jsApiList: [ //这里是需要用到的接口名称
'checkJsApi', //判断当前客户端版本是否支持指定JS接口
'getLocation', //获取位置
'openLocation', //打开位置
'scanQRCode', //扫一扫接口
'chooseWXPay', //微信支付
'chooseImage', //拍照或从手机相册中选图接口
'previewImage', //预览图片接口
'uploadImage', //上传图片
'updateAppMessageShareData',
'updateTimelineShareData',
'onMenuShareAppMessage',
'onMenuShareTimeline',
'hideOptionMenu',
'showOptionMenu',
'showMenuItems'
]
});
},
wxReady: function(fn) {
jweixin.ready(function() {
fn()
})
},
async wxReady2() {
return new Promise((resolve, reject) => {
jweixin.ready(function() {
resolve(1)
})
});
},
// 关闭右上菜单
async hideOptionMenu() {
return new Promise((resolve, reject) => {
jweixin.hideOptionMenu()
});
},
// 开启右上菜单
async showOptionMenu() {
return new Promise((resolve, reject) => {
jweixin.showOptionMenu()
jweixin.showMenuItems({
menuList: [
'menuItem:share:appMessage',
'menuItem:share:timeline'
]
})
})
},
/*分享给微信朋友*/
shareAppMessage: function(title, desc, link, imgUrl) {
jweixin.updateAppMessageShareData({
title,
desc,
link,
imgUrl,
success: function(res) {
// console.log(res, "======shareAppMessage res")
}
})
jweixin.onMenuShareAppMessage({
title,
desc,
link,
imgUrl,
success: function(res) {
// console.log(res, "======onMenuShareAppMessage res")
}
})
},
/*分享微信朋友圈*/
shareTimelineMessage: function(title, link, imgUrl) {
jweixin.updateTimelineShareData({
title,
link,
imgUrl,
success: function(res) {
// console.log(res, "======shareTimelineMessage res")
}
})
jweixin.onMenuShareTimeline({
title,
link,
imgUrl,
success: function(res) {
// console.log(res, "======onMenuShareTimeline res")
}
})
},
async getWxLocation() {
let location = {
latitude: 0,
longitude: 0
}
return new Promise((resolve, reject) => {
try {
jweixin.checkJsApi({
jsApiList: ['getLocation'],
success: function(res) {
// 以键值对的形式返回可用的api值true不可用为false
// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
console.log(res, "=======checkJsApi")
let {
getLocation
} = res.checkResult
if (getLocation === true && getLocation !== 'false') {
jweixin.getLocation({
type: 'gcj02', // 默认为wgs84的gps坐标如果要返回直接给openLocation用的火星坐标可传入'gcj02'
success: function(res) {
console.log(res, "===== getLocation success")
resolve(res)
},
cancel: function(err){
console.log(err, "==== getLocation cancel")
resolve(location)
},
fail: function(err) {
console.log(err,"===== getLocation fail")
reject(err)
}
});
} else {
console.log(res, "==== getLocation else")
resolve(location)
}
},
fail: function(err){
console.log(res, "==== checkJsApi error")
}
})
} catch (e) {
console.log(1111111111111)
console.log(e)
jweixin.error((err) => {
console.log('wx-config-error', err);
if (err.errMsg.includes('invalid signature')) {
resolve(location)
}
});
}
});
}
}