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```