notification.dart 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter_local_notifications/flutter_local_notifications.dart';
  3. import '../utils/events.dart';
  4. class Notifications {
  5. static FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin;
  6. static void init(BuildContext context) async {
  7. flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
  8. // initialise the plugin. app_icon needs to be a added as a drawable resource to the Android head project
  9. const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings('icon');
  10. final IOSInitializationSettings initializationSettingsIOS = IOSInitializationSettings(onDidReceiveLocalNotification: onDidReceiveLocalNotification);
  11. final MacOSInitializationSettings initializationSettingsMacOS =
  12. MacOSInitializationSettings();
  13. final InitializationSettings initializationSettings = InitializationSettings(
  14. android: initializationSettingsAndroid,
  15. iOS: initializationSettingsIOS,
  16. macOS: initializationSettingsMacOS);
  17. await flutterLocalNotificationsPlugin.initialize(initializationSettings, onSelectNotification: selectNotification);
  18. }
  19. static Future onDidReceiveLocalNotification (int id, String title, String body, String payload) async {
  20. final bool result = await flutterLocalNotificationsPlugin
  21. .resolvePlatformSpecificImplementation<
  22. IOSFlutterLocalNotificationsPlugin>()
  23. ?.requestPermissions(
  24. alert: true,
  25. badge: true,
  26. sound: true,
  27. );
  28. }
  29. static Future selectNotification(String payload) async {
  30. // if (payload != null) {
  31. // Events.fire(NotifyMessage(payload));
  32. // } else {
  33. // print("get notify");
  34. // }
  35. }
  36. static Future showNotify(String title, String body, { String payload }) async {
  37. const AndroidNotificationDetails androidPlatformChannelSpecifics =
  38. AndroidNotificationDetails(
  39. 'your channel id', 'your channel name', 'your channel description',
  40. importance: Importance.max,
  41. priority: Priority.high,
  42. showWhen: false);
  43. const NotificationDetails platformChannelSpecifics =
  44. NotificationDetails(android: androidPlatformChannelSpecifics);
  45. return await flutterLocalNotificationsPlugin.show(
  46. 0, title, body, platformChannelSpecifics,
  47. payload: payload);
  48. }
  49. }