push notifications added.
parent
acee8f5488
commit
58f5fbab5e
@ -1,65 +1,80 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
||||
import 'package:permission_handler/permission_handler.dart';
|
||||
|
||||
class NotificationManger {
|
||||
// private constructor to avoid create object
|
||||
NotificationManger._();
|
||||
|
||||
static FlutterLocalNotificationsPlugin localNotificationsPlugin = FlutterLocalNotificationsPlugin();
|
||||
static FlutterLocalNotificationsPlugin localNotificationsPlugin; //= FlutterLocalNotificationsPlugin();
|
||||
|
||||
/// initialisation setting for all platform
|
||||
/// onNotificationPressed action when notification pressed to open tap
|
||||
/// onIOSNotificationPressed action when notification pressed
|
||||
/// to open tap in iOS versions older than 10
|
||||
Future<void> requestPermissions() async {
|
||||
|
||||
}
|
||||
static initialisation(Function(NotificationResponse) onNotificationPressed, DidReceiveLocalNotificationCallback onIOSNotificationPressed) async {
|
||||
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
|
||||
FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
|
||||
// initialise the plugin. app_icon needs to be a added as a drawable resource to the Android head project
|
||||
const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings(
|
||||
'app_icon',
|
||||
);
|
||||
const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings('@drawable/ic_stat_name');
|
||||
|
||||
final DarwinInitializationSettings initializationSettingsDarwin = DarwinInitializationSettings(onDidReceiveLocalNotification: onIOSNotificationPressed);
|
||||
|
||||
final InitializationSettings initializationSettings = InitializationSettings(android: initializationSettingsAndroid, iOS: initializationSettingsDarwin, macOS: initializationSettingsDarwin);
|
||||
localNotificationsPlugin = _flutterLocalNotificationsPlugin;
|
||||
|
||||
if (Platform.isIOS) {
|
||||
await localNotificationsPlugin.resolvePlatformSpecificImplementation<IOSFlutterLocalNotificationsPlugin>()?.requestPermissions(alert: true, badge: true, sound: true);
|
||||
} else if (Platform.isAndroid) {
|
||||
AndroidFlutterLocalNotificationsPlugin androidImplementation = localNotificationsPlugin.resolvePlatformSpecificImplementation<AndroidFlutterLocalNotificationsPlugin>();
|
||||
bool granted = await androidImplementation?.requestPermission();
|
||||
granted = granted ?? false;
|
||||
if (granted == false) {
|
||||
if (kDebugMode) {
|
||||
print("-------------------- Permission Granted ------------------------");
|
||||
print(granted);
|
||||
}
|
||||
await Permission.notification.request();
|
||||
}
|
||||
}
|
||||
|
||||
await flutterLocalNotificationsPlugin.initialize(initializationSettings, onDidReceiveNotificationResponse: onNotificationPressed);
|
||||
await localNotificationsPlugin.initialize(initializationSettings, onDidReceiveNotificationResponse: onNotificationPressed);
|
||||
//localNotificationsPlugin = flutterLocalNotificationsPlugin;
|
||||
}
|
||||
|
||||
// push new notification
|
||||
static Future showNotification({@required BuildContext context, @required String title, @required String subtext, @required int hashcode, String payload}) async {
|
||||
final AndroidNotificationDetails androidChannel = AndroidNotificationDetails(
|
||||
'com.newtrack.testsa',
|
||||
'Test SA',
|
||||
channelDescription: 'Push notification service for Test SA',
|
||||
|
||||
|
||||
// push new notificationBuildContext
|
||||
static Future showNotification({@required context, @required String title, @required String subtext, @required int hashcode, String payload}) async {
|
||||
const AndroidNotificationDetails androidChannel = AndroidNotificationDetails(
|
||||
'com.hmg.atoms',
|
||||
'ATOMS',
|
||||
channelDescription: 'Push notification service for ATOMS',
|
||||
importance: Importance.max,
|
||||
priority: Priority.max,
|
||||
icon: "@drawable/ic_stat_name",
|
||||
playSound: true,
|
||||
channelShowBadge: true,
|
||||
enableLights: true,
|
||||
// enableLights: false,
|
||||
visibility: NotificationVisibility.public,
|
||||
ledColor: Theme.of(context).colorScheme.secondary,
|
||||
ledOnMs: 1,
|
||||
ledOffMs: 0,
|
||||
//ledColor: Theme.of(context).colorScheme.secondary,
|
||||
// ledOnMs: 1,
|
||||
// ledOffMs: 0,
|
||||
enableVibration: true,
|
||||
groupKey: 'com.newtrack.testsa',
|
||||
groupKey: 'com.hmg.atoms',
|
||||
);
|
||||
|
||||
const DarwinNotificationDetails iosNotificationDetails = DarwinNotificationDetails(
|
||||
categoryIdentifier: "testSA",
|
||||
categoryIdentifier: "atoms",
|
||||
);
|
||||
|
||||
final platformChannel = NotificationDetails(
|
||||
android: androidChannel,
|
||||
iOS: iosNotificationDetails,
|
||||
macOS: iosNotificationDetails,
|
||||
);
|
||||
const platformChannel = NotificationDetails(android: androidChannel, iOS: iosNotificationDetails, macOS: iosNotificationDetails);
|
||||
|
||||
await localNotificationsPlugin.show(
|
||||
hashcode,
|
||||
title,
|
||||
subtext,
|
||||
platformChannel,
|
||||
payload: payload,
|
||||
);
|
||||
await localNotificationsPlugin.show(hashcode, title, subtext, platformChannel, payload: payload);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue