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