ad.ts 1012 字节
Newer Older
fxy060608's avatar
fxy060608 已提交
1 2
import { registerServiceMethod } from '@dcloudio/uni-core'

d-u-a's avatar
d-u-a 已提交
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
const _adDataCache: Record<string, any> = {}

function getAdData(data: any, onsuccess: Function, onerror: Function) {
  const { adpid, width } = data
  const key = adpid + '-' + width
  const adDataList = _adDataCache[key]
  if (adDataList && adDataList.length > 0) {
    onsuccess(adDataList.splice(0, 1)[0])
    return
  }

  plus.ad.getAds(
    data,
    (res) => {
      const list = res.ads
      onsuccess(list.splice(0, 1)[0])
      _adDataCache[key] = adDataList ? adDataList.concat(list) : list
    },
    (err) => {
      onerror({
        errCode: err.code,
        errMsg: err.message,
      })
    }
  )
}

fxy060608's avatar
fxy060608 已提交
30 31
export function subscribeAd() {
  registerServiceMethod('getAdData', (args, resolve) => {
d-u-a's avatar
d-u-a 已提交
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
    getAdData(
      args,
      (res: any) => {
        resolve({
          code: 0,
          data: res,
        })
      },
      (err: any) => {
        resolve({
          code: 1,
          message: err,
        })
      }
    )
fxy060608's avatar
fxy060608 已提交
47 48
  })
}