yuminge-app/yun-min-program-plugin-master/packageI/AdBright/adService.js

280 lines
7.0 KiB
JavaScript

let _ADRootService = null;
try {
const { ADRootService } = requirePlugin('adbright-ad')
_ADRootService = ADRootService
} catch (error) {
}
class ADService extends _ADRootService {
constructor (config) {
super(config)
this.__modules = {}
}
// 请求
sendRequest ({
url,
data,
header = { 'content-type': 'application/x-www-form-urlencoded' },
timeout = 30000,
method = 'GET',
dataType = 'json'
}) {
return new Promise((resolve, reject) => {
wx.request({
url,
data,
header,
timeout,
method,
dataType,
success (res) {
if (res.statusCode === 200 && res.data.code === 200) {
resolve(res.data)
} else {
reject(res.data)
}
},
fail (error) {
reject(error)
}
})
})
}
// 请求/曝光/点击上报
request (opt) {
return new Promise((resolve, reject) => {
// 获取网络情况
wx.getNetworkType().then(({ networkType }) => {
this.sendRequest(this.addCommonQuery(opt, this.createNetworkParam({ connect_type: networkType }))).then(resolve).catch(reject)
}).catch(err => {
console.log(err)
})
})
}
// 跳转页面
navigateTo ({ url }) {
return wx.navigateTo({
url,
})
}
// 跳转小程序
navigateToMiniProgram (opt) {
return wx.navigateToMiniProgram(opt)
}
// 添加监听
addListeners (target) {
target.listeners = {
onLoad: () => {},
onShow: () => {},
onError: () => {},
onClose: () => {}
}
return target
}
// 创建激励视频
createWeixinMotivation (placementId, weixin, callback) {
try {
if (!weixin.unitId) {
return
}
this.destroyMotivation(placementId)
// 在页面中定义激励视频广告
let videoAd = null
// 在页面onLoad回调事件中创建激励视频广告实例
if (wx.createRewardedVideoAd) {
videoAd = wx.createRewardedVideoAd({
adUnitId: weixin.unitId,
multiton: weixin.multiton || false
})
const result = this.addListeners({
videoAd
})
videoAd.onLoad(() => {
// 回调
result.listeners.onLoad()
})
videoAd.onError((err) => {
// 回调
result.listeners.onError(err)
})
videoAd.onClose((res) => {
// 回调
result.listeners.onClose(res)
})
this.__modules[placementId] = result
typeof callback === 'function' && callback(videoAd)
return result
}
} catch (err) {
console.log(err)
}
}
// 显示激励视频
showMotivation (placementId, weixin) {
try {
if (this.__modules[placementId]) {
const videoAd = this.__modules[placementId].videoAd
const listeners = this.__modules[placementId].listeners
videoAd.load().then(() => {
videoAd.show().then(() => {
console.log('广告显示1')
// 回调
listeners.onShow()
}).catch(() => {
console.log('videoAd.isReady: ', videoAd.isReady())
if (videoAd.isReady()) {
return
}
this.showMotivationAgain(placementId)
})
}).catch(err => {
// 回调
listeners.onError(err)
})
return this.__modules[placementId]
} else if (weixin) {
return this.createWeixinMotivation(weixin, placementId, () => {
this.showMotivation(placementId)
})
}
} catch (err) {
console.log(err)
}
}
// 第二次显示
showMotivationAgain (placementId) {
if (this.__modules[placementId]) {
const videoAd = this.__modules[placementId].videoAd
const listeners = this.__modules[placementId].listeners
console.log('videoAd.isReady: ', videoAd.isReady())
videoAd.load().then(() => {
videoAd.show().then(() => {
console.log('广告显示2')
// 回调
listeners.onShow()
}).catch((err) => {
console.log('videoAd.isReady: ', videoAd.isReady())
// 回调
listeners.onError(err)
})
}).catch(err => {
// 回调
listeners.onError(err)
})
}
}
// 移除
destroyMotivation (placementId) {
const videoAd = this.__modules[placementId]
if (videoAd) {
videoAd.videoAd.destory()
delete this.__modules[placementId]
}
}
// 创建插屏
createWeixinInterstitial (placementId, weixin, callback) {
try {
if (!weixin.unitId) {
return
}
this.destroyInterstital(placementId)
// 在页面中定义激励视频广告
let interstitialAd = null
// 在页面onLoad回调事件中创建激励视频广告实例
if (wx.createInterstitialAd) {
interstitialAd = wx.createInterstitialAd({
adUnitId: weixin.unitId
})
const result = this.addListeners({
interstitialAd
})
interstitialAd.onLoad(() => {
// 回调
result.listeners.onLoad()
})
interstitialAd.onError((err) => {
// 回调
result.listeners.onError(err)
})
interstitialAd.onClose((res) => {
// 回调
result.listeners.onClose(res)
})
interstitialAd.load()
this.__modules[placementId] = result
typeof callback === 'function' && callback(interstitialAd)
return result
}
} catch (err) {
console.log(err)
}
}
// 显示
showInterstital (placementId, weixin) {
try {
if (this.__modules[placementId]) {
const interstitialAd = this.__modules[placementId].interstitialAd
const listeners = this.__modules[placementId].listeners
console.log(interstitialAd.getSplashAdShowStatus())
if (interstitialAd.getSplashAdShowStatus()) {
interstitialAd.show().then(() => {
console.log('广告显示1')
// 回调
listeners.onShow()
}).catch(err => {
// 回调
listeners.onError(err)
})
} else {
interstitialAd.load().then(() => {
interstitialAd.show().then(() => {
console.log('广告显示1')
// 回调
listeners.onShow()
}).catch(err => {
// 回调
listeners.onError(err)
})
}).catch(err => {
// 回调
listeners.onError(err)
})
}
return this.__modules[placementId]
} else if (weixin) {
return this.createWeixinInterstitial(weixin, placementId, () => {
this.showInterstital(placementId)
})
}
} catch (err) {
console.log(err)
}
}
// 移除
destroyInterstital (placementId) {
const interstitialAd = this.__modules[placementId]
if (interstitialAd) {
interstitialAd.interstitialAd.destory()
delete this.__modules[placementId]
}
}
}
export default ADService