stat.js 3.3 KB
Newer Older
1
import Report from './report.js'
2 3 4 5 6 7 8

import { set_page_residence_time } from '../utils/pageTime.js'
import {
  get_page_types,
  get_platform_name,
  get_space,
  is_debug,
9 10
} from '../utils/pageInfo.js'

11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
class Stat extends Report {
  static getInstance() {
    if (!uni.__stat_instance) {
      uni.__stat_instance = new Stat()
    }

    // 2.0 init 服务空间
    if (__STAT_VERSION__ === '2') {
      let space = get_space(uniCloud.config)
      if (!uni.__stat_uniCloud_space) {
        //   判断不为空对象
        if (space && Object.keys(space).length !== 0) {
          let spaceData = {
            provider: space.provider,
            spaceId: space.spaceId,
            clientSecret: space.clientSecret
          }
          if(space.endpoint){
            spaceData.endpoint = space.endpoint
          }
          uni.__stat_uniCloud_space = uniCloud.init(spaceData)
          // console.log(
          //   '=== 当前绑定的统计服务空间spaceId:' +
          //     uni.__stat_uniCloud_space.config.spaceId
          // )
        } else {
          console.error('当前尚未关联统计服务空间,请先在manifest.json中配置服务空间!')
        }
      }
    }

    return uni.__stat_instance
  }
  constructor() {
    super()
  }

  /**
   * 进入应用
   * @param {Object} options 页面参数
   * @param {Object} self	当前页面实例
   */
  launch(options, self) {
    // 初始化页面停留时间  start
    let residence_time = set_page_residence_time()
    this.__licationShow = true
    this.sendReportRequest(options, true)
  }
  load(options, self) {
    this.self = self
    this._query = options
  }

  appHide(self) {
    this.applicationHide(self, true)
  }

  appShow(self) {
    this.applicationShow(self)
  }

  show(self) {
    this.self = self
    if (get_page_types(self) === 'page') {
      this.pageShow(self)
    }

    // #ifdef VUE3
    if (get_platform_name() !== 'h5' && get_platform_name() !== 'n') {
      if (get_page_types(self) === 'app') {
        this.appShow()
      }
    }
    // #endif

    // #ifndef VUE3
    if (get_page_types(self) === 'app') {
      this.appShow()
    }
    // #endif
  }

  hide(self) {
    this.self = self
    if (get_page_types(self) === 'page') {
      this.pageHide(self)
    }
98

99 100 101 102 103 104 105
    // #ifdef VUE3
    if (get_platform_name() !== 'h5' && get_platform_name() !== 'n') {
      if (get_page_types(self) === 'app') {
        this.appHide()
      }
    }
    // #endif
106

107 108 109 110 111 112
    // #ifndef VUE3
    if (get_page_types(self) === 'app') {
      this.appHide()
    }
    // #endif
  }
113

114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
  error(em) {
    // 开发工具内不上报错误
    if (this._platform === 'devtools') {
      if (process.env.NODE_ENV === 'development') {
        console.info('当前运行环境为开发者工具,不上报数据。')
        return
      }
    }
    let emVal = ''
    if (!em.message) {
      emVal = JSON.stringify(em)
    } else {
      emVal = em.stack
    }
    let options = {
      // ak: this.statData.ak,
      // uuid: this.statData.uuid,
      // p: this.statData.p,
      lt: '31',
      ut: this.statData.ut,
      ch: this.statData.ch,
      mpsdk: this.statData.mpsdk,
      mpv: this.statData.mpv,
      v: this.statData.v,
      em: emVal,
      usv: this.statData.usv,
      t: parseInt(new Date().getTime() / 1000),
    }
    this.request(options)
  }
}
145
export default Stat