您好,小程序模板欢迎您。
小程序模板
当前位置 : 首页> 小程序教程> 小程序API wx.startLocationUpdateBackground 的使用

小程序API wx.startLocationUpdateBackground 的使用

若使用该接口,需要在 app.json 中进行声明

    requiredPrivateInfos: [
      "getLocation",
      "onLocationChange",
      "startLocationUpdate",
      "startLocationUpdateBackground"
    ],
    requiredBackgroundModes: [
      "audio",
      "location"
    ],

代码:
1、使用wx.startLocationUpdateBackground需要授权
2、搭配wx.onLocationChange api使用

    /**
     * 使用wx.startLocationUpdateBackground需要授权
     */
    getAuth() {
      const that = this
      wx.getSetting({
        success(res) {
          console.log(1, res.authSetting["scope.userLocationBackground"]);
          // 如果没有拿到scope.userLocationBackground授权,提示
          if (!res.authSetting["scope.userLocationBackground"]) {
            console.log("-------------");
            wx.authorize({
              scope: "scope.userLocationBackground",
              success() {
                console.log(2);
                // 用户已经同意,调用wx.startLocationUpdateBackground
                wx.startLocationUpdateBackground({
                  success(res) {
                    console.log("startLocationUpdateBackgroundsuccess");
                    // 成功开启后台定位, 调用实时位置变更
                    that.openLocaionListener()
                  },
                  fail(res) {
                    console.log("startLocationUpdateBackgroundfail", res);
                    wx.showToast({
                      icon: "error",
                      title: "开启后台定位失败"
                    })
                  }
                })
              },
              fail(res) {
                wx.showToast({
                  title: "授权失败,点击右上角设置位置为使用时和离开后!",
                  icon: "none",
                  duration: 5000,
                  mask: true,
                  success: () => {
                    wx.navigateBack()
                  }
                })
              }
            })
          } else {
            console.log(4);
            // 已经拿到scope.userLocationBackground授权调用
            wx.startLocationUpdateBackground({
              success(res) {
                console.log(5, res);
                // 成功开启后台定位,
                that.openLocaionListener()
              },
              fail(res) {
                console.log(6, res);
                wx.showToast({
                  icon: "error",
                  title: "开启后台定位失败"
                })
              }
            })
          }
        }
      })
    }

    openLocaionListener() {
      const that = this
      console.log("openLocaionListener")
      wx.onLocationChange((_res) => {
        if (that.isUpdateLocation) {
          that.isUpdateLocation = false
          console.log("定位发生改变", _res, new Date())
          const date = new Date()
          const res = {
            "result": _res,
            "time": date
          }
          // const jsonStr = JSON.stringify(res)
          // console.log(jsonStr);
          wx.reportEvent("update_location", {
            "data": res
          })
        }
      })
      let i = 0
      console.log("updateLocationInterval", this.updateLocationInterval);
      
      if (!this.updateLocationInterval) {
        this.updateLocationInterval = setInterval(() => {
          console.log(i++, new Date());
          this.isUpdateLocation = true
        }, 5000)
      }

    }
联系客服 意见反馈

签到成功!

已连续签到1天,签到3天将获得积分VIP1天

知道了