目录

地理围栏

接口声明

在manifest.json文件的 features属性中增加如下配置。

{ "name": "service.awareness" }

导入模块

在调用接口页面的<script>部分增加如下配置。

import awareness from '@service.awareness'

或

var awareness = require('@service.awareness')

使用限制

限制条件

说明

适用终端

HarmonyOS 2.0及以上或Android 7.0及以上版本的手机。

适用区域

中国大陆。

权限

需用户授权获取地理位置权限,并且设置为“始终允许”。

接口定义

接口

描述

awareness.getProvider()

获取服务提供商。

awareness.addBarrier(OBJECT)

添加围栏。

awareness.deleteBarrier(OBJECT)

删除围栏。

awareness.getBarrierLastStatus(OBJECT)

查询围栏状态。

awareness.enterLocationBarrier(OBJECT)

进入围栏。

awareness.exitLocationBarrier(OBJECT)

离开围栏。

awareness.stayLocationBarrier(OBJECT)

停留在围栏中。

[h2]awareness.getProvider()

描述

获取服务提供商。

返回值

字符串,服务提供商的代号,如厂商的英文品牌名称,如果无此服务则返回空字符串。返回空字符串时,请勿调用该服务其他接口,否则将抛出异常。

示例代码

awareness.getProvider();

[h2]awareness.addBarrier(OBJECT)

描述

添加围栏,该接口只有在获得用户同意获得位置信息后才可以使用。

OBJECT参数

参数

类型

是否必填

说明

appId

string

是

在华为开发者联盟上创建快应用后分配的唯一标识。获取方式请参见“创建快应用”中的“获取APP ID”章节。

key

string

是

围栏唯一标识符,根据此参数可以添加或替换对应的围栏。大小不能超过128KB。

autoRemove

boolean

是

是否使用autoRemove功能。

  • true:使用autoRemove功能。当注册围栏数量超过200时,自动删除较早注册的围栏,再进行围栏注册。
  • false:不使用autoRemove功能。当注册围栏数量超过200时,不自动删除较早注册的围栏,此时注册新围栏失败。

success

function

否

成功回调。

fail

function

否

失败回调。

fail返回错误代码

错误码

说明

200

通用错误。

201

用户拒绝。

204

操作超时。

1002

应用鉴权失败。

示例代码

awareness.addBarrier({
  appId: "101449471",
  key: "enterLocationBarrier",
  autoRemove: true,
  success: function (data) {
    console.log(JSON.stringify(data));
  },
  fail: function (data, code) {
    console.log(JSON.stringify(data + ", code = " + code));
  }
})

[h2]awareness.deleteBarrier(OBJECT)

描述

删除围栏。

OBJECT参数

参数

类型

是否必填

说明

appId

string

是

在华为开发者联盟上创建快应用后分配的唯一标识。获取方式请参见“创建快应用”中的“获取APP ID”章节。

key

string

是

需要删除围栏对应的标识符。

success

function

否

成功回调。

fail

function

否

失败回调。

fail返回错误代码

错误码

说明

200

通用错误。

示例代码

awareness.deleteBarrier({
  appId: "101449471",
  key: "enterLocationBarrier",
  success: function (data) {
    console.log(JSON.stringify(data));
  },
  fail: function (data, code) {
    console.log(JSON.stringify(data + ", code = " + code));
  }
})

[h2]awareness.getBarrierLastStatus(OBJECT)

描述

查询围栏状态。

OBJECT参数

参数

类型

是否必填

说明

appId

string

是

在华为开发者联盟上创建快应用后分配的唯一标识。获取方式请参见“创建快应用”中的“获取APP ID”章节。

key

string

是

需要删除围栏对应的标识符。

success

function

否

成功回调。

fail

function

否

失败回调。

success返回值

参数

类型

说明

status

number

对于不同类型的围栏,获取围栏状态会有所不同。

  • 进入围栏:进入围栏瞬间查询状态为1,进入后查询状态为0,如果查询过程中出现未获取经纬度或者没有信号的情况,则返回状态为2。
  • 离开围栏:离开围栏瞬间查询状态为1,离开后查询状态为0,如果查询过程中出现未获取经纬度或者没有信号的情况,则返回状态为2。
  • 停留在围栏中:当进入围栏中超过指定的时间查询状态为1,否则状态为0,如果查询过程中出现未获取经纬度或者没有信号的情况,则返回状态为2。

fail返回错误代码

错误码

说明

200

通用错误。

示例代码

awareness.getBarrierLastStatus({
  appId: '101449471',
  key: 'enterLocationBarrier',
  success: function (data) {
    console.log(data.status);
  },
  fail: function (data, code) {
    console.log(JSON.stringify(data + ', code = ' + code));
  }
})

[h2]awareness.enterLocationBarrier(OBJECT)

描述

进入围栏。

OBJECT参数

参数

类型

是否必填

说明

latitude

number

是

围栏中心点纬度,使用wgs84坐标系。

longitude

number

是

围栏中心点经度,使用wgs84坐标系。

radius

number

是

围栏半径,单位:米,最小半径为200米。

notification

object

是

进入围栏触发的通知消息,详细内容参见“notification说明”。

注意:

通知消息的标题和内容请勿包含敏感信息。

key

String

是

需要进入围栏对应的标识符。

success

function

否

成功回调。

fail

function

否

失败回调。

notification说明

参数

类型

是否必填

说明

contentTitle

string

是

标题。

contentText

string

是

内容。

clickAction

object

是

点击通知后触发动作的信息。

clickAction说明

参数

类型

是否必填

说明

uri

string

是

点击通知后跳转的页面地址。

支持的格式包括:

  1. 以"/"开头的应用内页面的路径,例:/about。
  2. 以非"/"开头的应用内页面的名称,例:About。
  3. 特殊情况,如果uri的值是"/",则跳转到path为"/"的页,没有对应页则跳转到首页。

可以通过“?param1=value1”的方式添加参数,参数可以在页面中通过this.param1的方式获取。

fail返回错误代码

错误码

说明

200

通用错误。

示例代码

awareness.enterLocationBarrier({
  notification: {
    contentTitle: 'title',
    contentText: 'content',
    clickAction: {
      uri: '/index.html?index=1'
    }
  },
  key: "enterLocationBarrier",
  latitude: "31.976427",
  longitude: "118.75277",
  radius: "200",
  success: function (data) {
    console.log(JSON.stringify(data));
  },
  fail: function (data, code) {
    console.log(JSON.stringify(data + ", code = " + code));
  }
})

[h2]awareness.exitLocationBarrier(OBJECT)

描述

离开围栏。

OBJECT参数

参数

类型

是否必填

说明

latitude

number

是

围栏中心点纬度,使用wgs84坐标系。

longitude

number

是

围栏中心点经度,使用wgs84坐标系。

radius

number

是

围栏半径,单位:米,最小半径为200米。

notification

object

是

进入围栏触发的通知消息,详细内容参见“notification说明”。

注意:

通知消息的标题和内容请勿包含敏感信息。

key

string

是

需要离开围栏对应的标识符。

success

function

否

成功回调。

fail

function

否

失败回调。

fail返回错误代码

错误码

说明

200

通用错误。

示例代码

awareness.exitLocationBarrier({
  notification: {
    contentTitle: 'title',
    contentText: 'content',
    clickAction: {
      uri: '/index.html?index=1'
    }
  },
  key: "exitLocationBarrier",
  latitude: "31.976427",
  longitude: "118.75277",
  radius: "200",
  success: function (data) {
    console.log(JSON.stringify(data));
  },
  fail: function (data, code) {
    console.log(JSON.stringify(data + ", code = " + code));
  }
})

[h2]awareness.stayLocationBarrier(OBJECT)

描述

停留在围栏中。添加围栏后,如果用户处于此围栏中,则围栏状态为true;如果用于处于围栏外,然后进入围栏中停留超过指定时间,则围栏状态也为true,并触发停留围栏事件。

OBJECT参数

参数

类型

是否必填

说明

timeOfDuration

number

是

停留时长,单位毫秒。

latitude

number

是

围栏中心点纬度,使用wgs84坐标系。

longitude

number

是

围栏中心点经度,使用wgs84坐标系。

radius

number

是

围栏半径,单位:米,最小半径为200米。

notification

object

是

进入围栏触发的通知消息,详细内容参见“notification说明”。

注意:

通知消息的标题和内容请勿包含敏感信息。

key

string

是

需要停留围栏对应的标识符。

success

function

否

成功回调。

fail

function

否

失败回调。

fail返回错误码

错误码

说明

200

通用错误。

示例代码

awareness.stayLocationBarrier({
 notification: {
    contentTitle: 'title',
    contentText: 'content',
    clickAction: {
      uri: '/index.html?index=1'
    }
  },
  key: "stayLocationBarrier",
  latitude: "31.976427",
  longitude: "118.75277",
  radius: "200",
  timeOfDuration: "30000",
  success: function (data) {
    console.log(JSON.stringify(data));
  },
  fail: function (data, code) {
    console.log(JSON.stringify(data + ", code = " + code));
  }
})

Tips

各接口存在调用的顺序关系,一般先调用 awareness.enterLocationBarrier 准备好进入围栏的信息,待接口返回成功后,调用 awareness.addBarrier 添加围栏(addBarrier传入的key值必须与enterLocationBarrier的key值保持一致),添加完围栏后,可以再删除或者查询对应的围栏。