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