Bladeren bron

Implement a functional notification service

vishnukvmd 2 jaren geleden
bovenliggende
commit
32605dc708
2 gewijzigde bestanden met toevoegingen van 58 en 53 verwijderingen
  1. 56 53
      lib/services/notification_service.dart
  2. 2 0
      macos/Flutter/GeneratedPluginRegistrant.swift

+ 56 - 53
lib/services/notification_service.dart

@@ -1,53 +1,56 @@
-// import 'dart:io';
-//
-// import 'package:flutter_local_notifications/flutter_local_notifications.dart';
-//
-// class NotificationService {
-//   static final NotificationService instance =
-//       NotificationService._privateConstructor();
-//
-//   NotificationService._privateConstructor();
-//   final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin =
-//       FlutterLocalNotificationsPlugin();
-//
-//   Future<void> init() async {
-//     if (!Platform.isAndroid) {
-//       return;
-//     }
-//     const AndroidInitializationSettings initializationSettingsAndroid =
-//         AndroidInitializationSettings('notification_icon');
-//     const InitializationSettings initializationSettings =
-//         InitializationSettings(
-//       android: initializationSettingsAndroid,
-//     );
-//     await _flutterLocalNotificationsPlugin.initialize(
-//       initializationSettings,
-//       onSelectNotification: selectNotification,
-//     );
-//   }
-//
-//   Future selectNotification(String? payload) async {}
-//
-//   Future<void> showNotification(String title, String message) async {
-//     if (!Platform.isAndroid) {
-//       return;
-//     }
-//     const AndroidNotificationDetails androidPlatformChannelSpecifics =
-//         AndroidNotificationDetails(
-//       'io.ente.photos',
-//       'ente',
-//       channelDescription: 'ente alerts',
-//       importance: Importance.max,
-//       priority: Priority.high,
-//       showWhen: false,
-//     );
-//     const NotificationDetails platformChannelSpecifics =
-//         NotificationDetails(android: androidPlatformChannelSpecifics);
-//     await _flutterLocalNotificationsPlugin.show(
-//       0,
-//       title,
-//       message,
-//       platformChannelSpecifics,
-//     );
-//   }
-// }
+import 'dart:io';
+
+import 'package:flutter_local_notifications/flutter_local_notifications.dart';
+
+class NotificationService {
+  static final NotificationService instance =
+      NotificationService._privateConstructor();
+
+  NotificationService._privateConstructor();
+  final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin =
+      FlutterLocalNotificationsPlugin();
+
+  Future<void> init() async {
+    if (!Platform.isAndroid) {
+      return;
+    }
+    const AndroidInitializationSettings initializationSettingsAndroid =
+        AndroidInitializationSettings('notification_icon');
+    const InitializationSettings initializationSettings =
+        InitializationSettings(
+      android: initializationSettingsAndroid,
+    );
+    await _flutterLocalNotificationsPlugin.initialize(
+      initializationSettings,
+    );
+    final implementation =
+        _flutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation<
+            AndroidFlutterLocalNotificationsPlugin>();
+    if (implementation != null) {
+      implementation.requestPermission();
+    }
+  }
+
+  Future<void> showNotification(String title, String message) async {
+    if (!Platform.isAndroid) {
+      return;
+    }
+    const AndroidNotificationDetails androidPlatformChannelSpecifics =
+        AndroidNotificationDetails(
+      'io.ente.auth',
+      'auth',
+      channelDescription: 'auth alerts',
+      importance: Importance.max,
+      priority: Priority.high,
+      showWhen: false,
+    );
+    const NotificationDetails platformChannelSpecifics =
+        NotificationDetails(android: androidPlatformChannelSpecifics);
+    await _flutterLocalNotificationsPlugin.show(
+      0,
+      title,
+      message,
+      platformChannelSpecifics,
+    );
+  }
+}

+ 2 - 0
macos/Flutter/GeneratedPluginRegistrant.swift

@@ -6,6 +6,7 @@ import FlutterMacOS
 import Foundation
 
 import connectivity_macos
+import flutter_local_notifications
 import flutter_secure_storage_macos
 import package_info_plus_macos
 import path_provider_macos
@@ -17,6 +18,7 @@ import url_launcher_macos
 
 func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
   ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin"))
+  FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin"))
   FlutterSecureStorageMacosPlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStorageMacosPlugin"))
   FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin"))
   PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))