Implement a functional notification service

This commit is contained in:
vishnukvmd 2022-11-14 18:23:55 +05:30
parent ef0c302c94
commit 32605dc708
2 changed files with 58 additions and 53 deletions

View file

@ -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,
);
}
}

View file

@ -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"))