关于分享功能,微信官方的api也写的很清楚了,不过·注意不要和onShareAppMessage混在一起,那玩意是监听右上角的不是自己设置地方的
wx.shareAppMessage({
title: "你是一个,一个一个一个",
imageUrl: ""//可以是网络图片Url也可以本地路径
})
但是这样也只是单纯的分享罢了,如果你想要在分享的同时获得奖励,在你需要调用的地方的onload方法,你得写上onShow方法
(注:微信现在已经取消分享回调,也就是说用户无论是分享成功还是失败都是没有办法直接判断的,onshow方法也会直接执行)
wx.onShow(function () {
}}
那么问题来了,有时候你需要很多个分享,并且每种分享的奖励都是不一样的。既然分享也不能获得回调,那么要怎么判断是否分享成功了呢
我们首先来说一下很多个分享怎么办,实际上只要写一个标识符就可以了
然后给他赋值就行,比如this.shareTag = “keys” 一类的
onshow里面就可以这样判断了
let self = this;
wx.onShow(function () {
if (self.isShared && self.shareTag == "keys") {
//分享成功
console.log("分享成功");
self.isShared = false;
self.shareTag = "";
//这里可以放上奖励方法啥的
}
)}
所以说说了半天。还没说要怎么判断是否成功吗,连成功失败都判断不了写个茄子
这里我的方法是比较简单的方法,是使用时间来进行判断,当分享时间在3秒以上就执行判断成功,虽然有些不妥当但是是对于新手来说最为简单的方法
接下来是获取系统时间,可以参考这篇有关获取本地时间
this.isShared = true;
this.shareTag = "keys";
this.closeTime = new Date().getTime();
if (CC_WECHATGAME) { //判断是否为微信平台,这样写可以让你在原生平台上不报错卡住
wx.shareAppMessage({
title: "乖乖站好♂",
imageUrl: ""
})
}
然后在onload就可以这样判断时间了
if (typeof (wx) !== "undefined") {
let self = this;
wx.onShow(function () {
if (self.isShared && self.shareTag == "keys") {
//分享后返回
let curTime = new Date().getTime();
if (curTime - self.closeTime >= 3000) {
//分享成功
console.log("分享成功");
self.isShared = false;
self.shareTag = "";
self.closeTime = curTime;
}
}
)}
}
右上角监听同理,不过要使用的api就是文章开头说的onShareAppMessage(),在使用之前请记得开启右上角的转发按钮,因为默认是关闭的嘛
if (typeof (wx) !== "undefined") {
wx.onShareAppMessage({
title: "WSND&NMSL",
imageUrl: "NMSL is not a function"
});
}
开启代码如下
wx.showShareMenu({
});