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