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 | 是 | 否 | 围栏服务上下文。 | 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 { wantAgent } from '@kit.AbilityKit'; 44 45export default class MyFenceExtensionAbility extends FenceExtensionAbility { 46 async onFenceStatusChange(transition: geoLocationManager.GeofenceTransition, 47 additions: Record<string, string>): void { 48 // 接受围栏状态变化事件,处理业务逻辑 49 hilog.info(0x0000, "TAG", 50 `on geofence transition,id:${transition.geofenceId},event:${transition.transitionEvent},additions:${JSON.stringify(additions)}`); 51 52 // 可以发送围栏业务通知 53 let wantAgentInfo: wantAgent.WantAgentInfo = { 54 wants: [ 55 { 56 bundleName: 'com.example.myapplication', 57 abilityName: 'EntryAbility', 58 parameters: 59 { 60 "geofenceId": transition?.geofenceId, 61 "transitionEvent": transition?.transitionEvent, 62 } 63 } as Want 64 ], 65 actionType: wantAgent.OperationType.START_ABILITY, 66 requestCode: 100 67 }; 68 let wantAgentMy = await wantAgent.getWantAgent(wantAgentInfo); 69 let notificationRequest: notificationManager.NotificationRequest = { 70 id: 1, 71 content: { 72 notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, 73 normal: { 74 title: `围栏通知`, 75 text: `on geofence transition,id:${transition.geofenceId},event:${transition.transitionEvent},additions:${JSON.stringify(additions)}`, 76 } 77 }, 78 notificationSlotType: notificationManager.SlotType.SOCIAL_COMMUNICATION, 79 wantAgent: wantAgentMy 80 }; 81 notificationManager.publish(notificationRequest); 82 } 83} 84 85``` 86## FenceExtensionAbility.onDestroy 87 88onDestroy(): void; 89 90接收FenceExtensionAbility的销毁事件并处理,会在FenceExtensionAbility销毁前回调。 91 92**系统能力**:SystemCapability.Location.Location.Geofence 93 94**示例:** 95 96```ts 97import { FenceExtensionAbility } from '@kit.LocationKit'; 98 99class MyFenceExtensionAbility extends FenceExtensionAbility { 100 onDestroy(): void { 101 // 处理ability销毁事件 102 hilog.info(0x0000, "TAG", `on ability destroy`); 103 } 104} 105 106```