1# @ohos.app.ability.FenceExtensionAbility (FenceExtensionAbility) 2 3The **FenceExtensionAbility** class provides geofence-related capabilities. It is inherited from the **ExtensionAbility** class. 4 5> **NOTE** 6> 7> The initial APIs of this module are supported since API version 14. Newly added APIs will be marked with a superscript to indicate their earliest API version. 8> The APIs of this module can be used only in the stage model. 9 10## Modules to Import 11 12```ts 13import { FenceExtensionAbility } from '@kit.LocationKit'; 14``` 15 16## Attributes 17 18**System capability**: SystemCapability.Location.Location.Geofence 19 20| Name| Type| Readable| Writable| Description| 21| -------- | -------- | -------- | -------- | -------- | 22| context | [FenceExtensionContext](js-apis-app-ability-FenceExtensionContext.md) | Yes| No| Context of the Geofence service.| 23 24## FenceExtensionAbility.onFenceStatusChange 25 26onFenceStatusChange(transition: geoLocationManager.GeofenceTransition, additions: Record<string, string>): void; 27 28Represents the callback triggered when a geofence status change event is received. Service processing is then performed based on the event type and data. 29 30**System capability**: SystemCapability.Location.Location.Geofence 31 32**Parameters** 33| Name| Type| Mandatory | Description | 34| ------------ | ------------ | ------------ | ------------ | 35| transition | [geoLocationManager.GeofenceTransition](js-apis-geoLocationManager.md#geofencetransition12) | Yes| Geofence transition information, including the geofence ID and geofence event. | 36| additions | Record<string, string> | Yes | Additional information. | 37 38**Example** 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 // Receive the geofence status change event and process the service logic. 48 console.info(`on geofence transition,id:${transition.geofenceId},event:${transition.transitionEvent},additions:${JSON.stringify(additions)}`); 49 50 // Send a geofence notification. 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: "Geofence Notification", 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 88Represents the callback triggered when a **FenceExtensionAbility** destruction event is received. 89 90**System capability**: SystemCapability.Location.Location.Geofence 91 92**Example** 93 94```ts 95import { FenceExtensionAbility } from '@kit.LocationKit'; 96 97class MyFenceExtensionAbility extends FenceExtensionAbility { 98 onDestroy(): void { 99 // Process the FenceExtensionAbility destruction event. 100 console.info(`on ability destroy`); 101 } 102} 103 104``` 105