From 0f45fd0e2f4b20b5b02e4e747d124effdfc9e482 Mon Sep 17 00:00:00 2001 From: CodingGorit Date: Fri, 12 Sep 2025 09:44:06 +0800 Subject: [PATCH] feat: Enhance example app with local notifications and service initialization --- .../example/lib/main.dart | 60 +++++++- .../example/ohos/build-profile.json5 | 17 +- .../example/pubspec.lock | 145 ++++++++++++++---- .../example/pubspec.yaml | 4 + 4 files changed, 188 insertions(+), 38 deletions(-) diff --git a/flutter_service/flutter_test_background_service/flutter_background_service_ohos/example/lib/main.dart b/flutter_service/flutter_test_background_service/flutter_background_service_ohos/example/lib/main.dart index cfa0b13..d38b598 100644 --- a/flutter_service/flutter_test_background_service/flutter_background_service_ohos/example/lib/main.dart +++ b/flutter_service/flutter_test_background_service/flutter_background_service_ohos/example/lib/main.dart @@ -1,10 +1,15 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; import 'dart:async'; import 'package:flutter/services.dart'; import 'package:flutter_background_service_ohos/flutter_background_service_ohos.dart'; +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; -void main() { +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + await initializeService(); runApp(const MyApp()); } @@ -15,6 +20,28 @@ class MyApp extends StatefulWidget { State createState() => _MyAppState(); } +final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = + FlutterLocalNotificationsPlugin(); + +Future initializeService() async { + const OhosNotificationAction ohosChannel = OhosNotificationAction( + 'my_foreground', // id + 'MY FOREGROUND SERVICE', // title + ); + + if (Platform.operatingSystem == "ohos") { + await flutterLocalNotificationsPlugin.initialize( + const InitializationSettings( + iOS: DarwinInitializationSettings(), + android: AndroidInitializationSettings('ic_bg_service_small'), + ohos: OhosInitializationSettings(''), + // macOS: DarwinInitializationSettings(), + // linux: LinuxInitializationSettings(defaultActionName: 'Open'), + ), + ); + } +} + class _MyAppState extends State { String _platformVersion = 'Unknown'; final _flutterBackgroundServiceOhosPlugin = FlutterBackgroundServiceOhos(); @@ -32,7 +59,8 @@ class _MyAppState extends State { // We also handle the message potentially returning null. try { platformVersion = - await _flutterBackgroundServiceOhosPlugin.getPlatformVersion() ?? 'Unknown platform version'; + await _flutterBackgroundServiceOhosPlugin.getPlatformVersion() ?? + 'Unknown platform version'; } on PlatformException { platformVersion = 'Failed to get platform version.'; } @@ -55,8 +83,32 @@ class _MyAppState extends State { title: const Text('Plugin example app'), ), body: Center( - child: Text('Running on: $_platformVersion\n'), - ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text('Running on: $_platformVersion\n'), + ElevatedButton( + onPressed: () async { + flutterLocalNotificationsPlugin.show( + 888, + 'COOL SERVICE', + 'Awesome ${DateTime.now()}', + const NotificationDetails( + ohos: OhosNotificationDetails( + OhosNotificationSlotType.SERVICE_INFORMATION, + icon: '', + ongoing: true, + ), + ), + ); + }, + child: const Text("handle send notification"), + ), + ], + ) + + // 添加一个 button 主动触发通知 + ), ), ); } diff --git a/flutter_service/flutter_test_background_service/flutter_background_service_ohos/example/ohos/build-profile.json5 b/flutter_service/flutter_test_background_service/flutter_background_service_ohos/example/ohos/build-profile.json5 index 1c112b1..ee59001 100644 --- a/flutter_service/flutter_test_background_service/flutter_background_service_ohos/example/ohos/build-profile.json5 +++ b/flutter_service/flutter_test_background_service/flutter_background_service_ohos/example/ohos/build-profile.json5 @@ -1,7 +1,20 @@ - { "app": { - "signingConfigs": [], + "signingConfigs": [ + { + "name": "default", + "type": "HarmonyOS", + "material": { + "certpath": "C:\\Users\\Administrator\\.ohos\\config\\default_ohos_hB8ZFg_gRFxaYK552mNEt30ancbINTdfIAVHenB_1u4=.cer", + "keyAlias": "debugKey", + "keyPassword": "0000001B46B0A88E2729884CDCDA844E54625B1F4EB9CDBFC0DC582FD2C84AEAE84CB0123621BEF4FDA8A4", + "profile": "C:\\Users\\Administrator\\.ohos\\config\\default_ohos_hB8ZFg_gRFxaYK552mNEt30ancbINTdfIAVHenB_1u4=.p7b", + "signAlg": "SHA256withECDSA", + "storeFile": "C:\\Users\\Administrator\\.ohos\\config\\default_ohos_hB8ZFg_gRFxaYK552mNEt30ancbINTdfIAVHenB_1u4=.p12", + "storePassword": "0000001B9055A74FDF6D1892DECE8717EE9CA53A4A8100632D9336F362C8977DD2CDA1AB8B9D229630E255" + } + } + ], "products": [ { "name": "default", diff --git a/flutter_service/flutter_test_background_service/flutter_background_service_ohos/example/pubspec.lock b/flutter_service/flutter_test_background_service/flutter_background_service_ohos/example/pubspec.lock index 9a42f5f..74d0053 100644 --- a/flutter_service/flutter_test_background_service/flutter_background_service_ohos/example/pubspec.lock +++ b/flutter_service/flutter_test_background_service/flutter_background_service_ohos/example/pubspec.lock @@ -1,6 +1,14 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + args: + dependency: transitive + description: + name: args + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.7.0" async: dependency: transitive description: @@ -21,26 +29,26 @@ packages: dependency: transitive description: name: characters - sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.flutter-io.cn" source: hosted - version: "1.4.0" + version: "1.3.0" clock: dependency: transitive description: name: clock - sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.2" + version: "1.1.1" collection: dependency: transitive description: name: collection - sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.flutter-io.cn" source: hosted - version: "1.19.1" + version: "1.18.0" cupertino_icons: dependency: "direct main" description: @@ -49,14 +57,30 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.0.8" + dbus: + dependency: transitive + description: + name: dbus + sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.7.11" fake_async: dependency: transitive description: name: fake_async - sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" url: "https://pub.flutter-io.cn" source: hosted - version: "1.3.3" + version: "2.1.3" file: dependency: transitive description: @@ -90,6 +114,31 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "3.0.2" + flutter_local_notifications: + dependency: "direct main" + description: + path: flutter_local_notifications + ref: HEAD + resolved-ref: "54f0edcbfe686d01a0e32f284b12803fb1af47e6" + url: "https://gitcode.com/openharmony-sig/fluttertpc_flutter_local_notifications.git" + source: git + version: "17.1.0" + flutter_local_notifications_linux: + dependency: transitive + description: + name: flutter_local_notifications_linux + sha256: c49bd06165cad9beeb79090b18cd1eb0296f4bf4b23b84426e37dd7c027fc3af + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.0.1" + flutter_local_notifications_platform_interface: + dependency: transitive + description: + name: flutter_local_notifications_platform_interface + sha256: "85f8d07fe708c1bdcf45037f2c0109753b26ae077e9d9e899d55971711a4ea66" + url: "https://pub.flutter-io.cn" + source: hosted + version: "7.2.0" flutter_test: dependency: "direct dev" description: flutter @@ -109,26 +158,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0" + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" url: "https://pub.flutter-io.cn" source: hosted - version: "11.0.1" + version: "10.0.4" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" url: "https://pub.flutter-io.cn" source: hosted - version: "3.0.10" + version: "3.0.3" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" url: "https://pub.flutter-io.cn" source: hosted - version: "3.0.2" + version: "3.0.1" lints: dependency: transitive description: @@ -141,34 +190,42 @@ packages: dependency: transitive description: name: matcher - sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.flutter-io.cn" source: hosted - version: "0.12.17" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.flutter-io.cn" source: hosted - version: "0.11.1" + version: "0.8.0" meta: dependency: transitive description: name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" url: "https://pub.flutter-io.cn" source: hosted - version: "1.16.0" + version: "1.12.0" path: dependency: transitive description: name: path - sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.9.0" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 url: "https://pub.flutter-io.cn" source: hosted - version: "1.9.1" + version: "6.0.2" platform: dependency: transitive description: @@ -197,7 +254,7 @@ packages: dependency: transitive description: flutter source: sdk - version: "0.0.0" + version: "0.0.99" source_span: dependency: transitive description: @@ -210,18 +267,18 @@ packages: dependency: transitive description: name: stack_trace - sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.flutter-io.cn" source: hosted - version: "1.12.1" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.4" + version: "2.1.2" string_scanner: dependency: transitive description: @@ -250,18 +307,26 @@ packages: dependency: transitive description: name: test_api - sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" url: "https://pub.flutter-io.cn" source: hosted - version: "0.7.6" + version: "0.7.0" + timezone: + dependency: transitive + description: + name: timezone + sha256: "2236ec079a174ce07434e89fcd3fcda430025eb7692244139a9cf54fdcf1fc7d" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.9.4" vector_math: dependency: transitive description: name: vector_math - sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" url: "https://pub.flutter-io.cn" source: hosted - version: "2.2.0" + version: "2.1.4" vm_service: dependency: transitive description: @@ -278,6 +343,22 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "3.0.3" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.1.0" + xml: + dependency: transitive + description: + name: xml + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 + url: "https://pub.flutter-io.cn" + source: hosted + version: "6.5.0" sdks: - dart: ">=3.8.0-0 <4.0.0" + dart: ">=3.4.0 <4.0.0" flutter: ">=3.18.0-18.0.pre.54" diff --git a/flutter_service/flutter_test_background_service/flutter_background_service_ohos/example/pubspec.yaml b/flutter_service/flutter_test_background_service/flutter_background_service_ohos/example/pubspec.yaml index beaf2c0..931b482 100644 --- a/flutter_service/flutter_test_background_service/flutter_background_service_ohos/example/pubspec.yaml +++ b/flutter_service/flutter_test_background_service/flutter_background_service_ohos/example/pubspec.yaml @@ -20,6 +20,10 @@ dependencies: cupertino_icons: ^1.0.6 flutter_background_service_ohos: path: '../' + flutter_local_notifications: + git: + url: https://gitcode.com/openharmony-sig/fluttertpc_flutter_local_notifications.git + path: flutter_local_notifications dev_dependencies: integration_test: -- Gitee