| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import { ServiceExtensionAbility, Want } from '@ohos.ability.ServiceExtensionAbility';
- import { NotificationManager } from '@ohos.notificationManager';
- import { BusinessError } from '@ohos.base';
- export default class ForegroundService extends ServiceExtensionAbility {
- onCreate(want: Want) {
- super.onCreate(want);
- // 初始化通知
- this.initNotification(want.parameters?.notificationTitle, want.parameters?.notificationContent);
- }
- initNotification(title: string, content: string) {
- const notificationRequest: NotificationManager.NotificationRequest = {
- id: 1,
- slotType: NotificationManager.SlotType.SERVICE_INFORMATION,
- content: {
- contentType: NotificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
- normal: {
- title: title || '服务运行中',
- text: content || '服务正在运行,更新中...',
- additionalText: ''
- }
- },
- wantAgent: {
- want: {
- bundleName: 'com.example.myapp',
- abilityName: 'EntryAbility'
- }
- }
- };
- NotificationManager.publish(notificationRequest, (err: BusinessError) => {
- if (err) {
- console.error(`Failed to publish notification. Code is ${err.code}, message is ${err.message}`);
- return;
- }
- console.info('Succeeded in publishing notification.');
- });
- }
- // 更新通知栏内容
- updateNotification(title: string, content: string) {
- const notificationRequest: NotificationManager.NotificationRequest = {
- id: 1,
- slotType: NotificationManager.SlotType.SERVICE_INFORMATION,
- content: {
- contentType: NotificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
- normal: {
- title: title,
- text: content,
- additionalText: ''
- }
- },
- wantAgent: {
- want: {
- bundleName: 'com.example.myapp',
- abilityName: 'EntryAbility'
- }
- }
- };
- NotificationManager.publish(notificationRequest, (err: BusinessError) => {
- if (err) {
- console.error(`Failed to update notification. Code is ${err.code}, message is ${err.message}`);
- return;
- }
- console.info('Succeeded in updating notification.');
- });
- }
- // 保活逻辑
- onForeground() {
- // 这里可以添加保活逻辑,例如定时更新通知
- setInterval(() => {
- // this.updateNotification('服务运行中', '服务正在运行,更新中...');
- }, 60 * 1000); // 每分钟更新一次
- }
- // 服务销毁时的清理逻辑
- onDestroy() {
- super.onDestroy();
- // 取消通知
- NotificationManager.cancel(1, (err: BusinessError) => {
- if (err) {
- console.error(`Failed to cancel notification. Code is ${err.code}, message is ${err.message}`);
- return;
- }
- console.info('Succeeded in canceling notification.');
- });
- }
- }
|