// 跳转关卡
onGoLevel(e) {
const that = this;
const idx = e.currentTarget.dataset.idx;
const level = that.data.pageLevels[idx];
const levelId = that.data.pageLevels[idx].id;
console.log(idx, levelId);
if (level.unlocked) {
wx.navigateTo({
url: `/pages/level/index?id=${level.id}`
});
} else {
// 用户看广告可打开关卡
wx.showModal({
title: '解锁关卡',
content: '关卡解锁需要观看广告,确定要解锁吗?',
success: (res) => {
if (res.confirm) {
// 播放广告
loadRewardedAd(
'adunit-2ce6db3cb1e45a86',
() => {
// wx.showToast({ title: '广告观看成功,发放奖励' });
// 这里写奖励逻辑(如加积分、解锁功能等)
console.log('用户看广告解锁',levelId);
that.forceOpen(levelId);
},
(err) => {
wx.showToast({
title: err,
icon: 'none'
});
}
);
} else {
console.log('用户取消解锁')
}
}
});
}
},
forceOpen(levelId) {
// 打开本关
console.log('强制解锁',levelId);
const title = '强制解锁关卡' + levelId;
const content = app.globalData.devId + '设备上报';
report.rptErrInfo(title, content);
const ok = loader.forceUnlockLevel(levelId)
console.log('解锁值,', ok);
if (ok) {
this.refreshPage();
// wx.navigateTo({
// url: `/pages/level/index?id=${levelId}`
// });
}
},
找问题两天,完成播放广告后,会出现正常解锁和不能解锁的情况,随机出现,经排查是取值问题,我在弹窗前取值为5,但是播放广告完回调就变成了6,很奇怪,有的时候会正常,网上查了一下,是闭包陷阱,我试着修改了一下,使用const在传值前重新定义,但是还会出现问题。怀疑是sdk问题。请帮忙看看,谢谢!

手机上也会出现,并且值为上个关卡的值
广告回调入口就变了,很奇怪,从日志上就可以看到