• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.app.ability.FenceExtensionAbility (FenceExtensionAbility)
2
3FenceExtensionAbility为开发者提供的地理围栏相关的能力,继承自ExtensionAbility。
4
5> **说明:**
6>
7> 本模块首批接口从API version 14开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```ts
12import { FenceExtensionAbility } from '@kit.LocationKit';
13```
14
15## 属性
16
17**系统能力**:SystemCapability.Location.Location.Geofence
18
19| 名称 | 类型 | 可读 | 可写 | 说明 |
20| -------- | -------- | -------- | -------- | -------- |
21| context | [FenceExtensionContext](js-apis-app-ability-FenceExtensionContext.md) | 是 | 否 | 围栏服务上下文。 |
22
23## FenceExtensionAbility.onFenceStatusChange
24
25onFenceStatusChange(transition: geoLocationManager.GeofenceTransition, additions: Record<string, string>): void;
26
27接收系统通知的地理围栏事件,根据围栏事件类型和数据进行相应处理。
28
29**系统能力**:SystemCapability.Location.Location.Geofence
30
31**参数:**
32| 参数名 |  类型 | 必填  | 说明  |
33| ------------ | ------------ | ------------ | ------------ |
34|  transition |  [geoLocationManager.GeofenceTransition](js-apis-geoLocationManager.md#geofencetransition12) |  是 | 地理围栏事件信息;包含地理围栏ID和具体的地理围栏事件。  |
35| additions  | Record<string, string>  | 是  | 附加信息  |
36
37**示例:**
38
39```ts
40import { FenceExtensionAbility, geoLocationManager } from '@kit.LocationKit';
41import { notificationManager } from '@kit.NotificationKit';
42import { Want, wantAgent } from '@kit.AbilityKit';
43
44export class MyFenceExtensionAbility extends FenceExtensionAbility {
45  onFenceStatusChange(transition: geoLocationManager.GeofenceTransition, additions: Record<string, string>): void {
46    // 接受围栏状态变化事件,处理业务逻辑
47    console.info(`on geofence transition,id:${transition.geofenceId},event:${transition.transitionEvent},additions:${JSON.stringify(additions)}`);
48
49    // 可以发送围栏业务通知
50    let wantAgentInfo: wantAgent.WantAgentInfo = {
51      wants: [
52        {
53          bundleName: 'com.example.myapplication',
54          abilityName: 'EntryAbility',
55          parameters:
56          {
57            "geofenceId": transition?.geofenceId,
58            "transitionEvent": transition?.transitionEvent,
59          }
60        } as Want
61      ],
62      actionType: wantAgent.OperationType.START_ABILITY,
63      requestCode: 100
64    };
65    wantAgent.getWantAgent(wantAgentInfo).then((wantAgentMy) => {
66      let notificationRequest: notificationManager.NotificationRequest = {
67        id: 1,
68        content: {
69          notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
70          normal: {
71            title: `围栏通知`,
72            text: `on geofence transition,id:${transition.geofenceId},event:${transition.transitionEvent},additions:${JSON.stringify(additions)}`,
73          }
74        },
75        notificationSlotType: notificationManager.SlotType.SOCIAL_COMMUNICATION,
76        wantAgent: wantAgentMy
77      };
78      notificationManager.publish(notificationRequest);
79    });
80  }
81}
82```
83## FenceExtensionAbility.onDestroy
84
85onDestroy(): void;
86
87接收FenceExtensionAbility的销毁事件并处理,会在FenceExtensionAbility销毁前回调。
88
89**系统能力**:SystemCapability.Location.Location.Geofence
90
91**示例:**
92
93```ts
94import { FenceExtensionAbility } from '@kit.LocationKit';
95
96class MyFenceExtensionAbility extends FenceExtensionAbility {
97  onDestroy(): void {
98    // 处理ability销毁事件
99    console.info(`on ability destroy`);
100  }
101}
102
103```