背景:由于公司可能需要在微信群里面使用打卡功能,因此做了个技术调研。
方案:微信在更新分享接口后,原有的在onShareAppMessage中直接拿shareTicket已不复存在。根据最新文档显示,需要在App.onLaunch()跟App.onShow()中获取。
Demo核心代码:
index.js
-
Page({
-
-
/**
-
* 页面的初始数据
-
*/
-
data: {
-
openGid: ''
-
},
-
-
/**
-
* 生命周期函数--监听页面加载
-
*/
-
onLoad: function (options) {
-
let that = this
-
wx.showShareMenu({
-
withShareTicket: true
-
})
-
app.getShareTiket(function (globalData) {
-
console.log('clickReload---globalData-->' + JSON.stringify(globalData))
-
that.setData({
-
openGid: globalData.openGid
-
})
-
})
-
},
-
clickReload: function () {
-
let that = this
-
app.getShareTiket(function (globalData) {
-
console.log('clickReload---globalData-->' + JSON.stringify(globalData))
-
that.setData({
-
openGid: globalData.openGid
-
})
-
})
-
}
-
})
index.wxml
-
<!--index.wxml-->
-
<view wx:if="{{openGid}}" class='groupName'>
-
群名称:<open-data type="groupName" open-gid="{{openGid}}"></open-data>
-
</view>
-
-
<view wx:else>
-
<button bindtap='clickReload'>点击加载群名称</button>
-
</view>
-
-
<view>{{openGid ? openGid : '无'}}</view>
app.js
-
//app.js
-
App({
-
globalData: {
-
shareTicket: '',
-
openGid: ''
-
},
-
onLaunch: function (options) {
-
-
},
-
onShow: function (options) {
-
let that = this
-
if (options && options.scene == 1044) {
-
that.globalData.shareTicket = options.shareTicket
-
}
-
console.log('onShow---options=--->' + JSON.stringify(options))
-
},
-
getShareTiket: function (cb) {
-
let that = this
-
// 展示本地存储能力
-
if (that.globalData.shareTicket) {
-
wx.getShareInfo({
-
shareTicket: that.globalData.shareTicket,
-
success: function (res) {
-
console.log('getShareTiket---shareTicket-->' + JSON.stringify(res))
-
let js_encryptedData = res.encryptedData
-
let js_iv = res.iv
-
wx.login({
-
success: function (res) {
-
let js_code = res.code
-
console.log('code-->' + js_code)
-
wx.request({
-
url: 'xxxxxxxx',
-
method: 'POST',
-
data: {
-
code: js_code,
-
appId: 'xxxxx',
-
encryptedData: js_encryptedData,
-
iv: js_iv
-
},
-
success: function (res) {
-
that.globalData.openGid = res.data.openGId
-
console.log('getShareTiket---openGid' + that.globalData.openGid)
-
typeof cb == "function" && cb(that.globalData)
-
},
-
fail: function (err) {
-
console.log('getShareTiket---err' + JSON.stringify(err))
-
}
-
})
-
}
-
})
-
}
-
})
-
} else {
-
console.log('不存在shareTicket')
-
}
-
}
-
})
注意事项
1:必须调用这个接口wx.showShareMenu({withShareTicket: true}),否则在App.onLaunch()跟App.onShow()时,你拿不到shareTicket.
|