| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import 'package:awesome_notifications/awesome_notifications.dart';
- import 'package:cloud_firestore/cloud_firestore.dart';
- import 'package:firebase_auth/firebase_auth.dart';
- import 'package:firebase_messaging/firebase_messaging.dart';
- import 'package:flutter/foundation.dart';
- import 'package:flutter/material.dart';
- import 'package:physigo/Services/AuthService.dart';
- void handleMessages() async {
- FirebaseMessaging messaging = FirebaseMessaging.instance;
- final _firestore = FirebaseFirestore.instance;
- NotificationSettings settings = await messaging.requestPermission(
- alert: true,
- announcement: false,
- badge: true,
- carPlay: false,
- criticalAlert: false,
- provisional: false,
- sound: true,
- );
- localNotificationsSetup();
- if (settings.authorizationStatus == AuthorizationStatus.denied) {
- return;
- }
- FirebaseMessaging.onMessage.listen((RemoteMessage message) {
- AwesomeNotifications().createNotification(
- content: NotificationContent(
- id: 10,
- channelKey: 'basic_channel',
- title: message.notification?.title,
- body: message.notification?.body,
- color: Colors.blue,
- )
- );
- });
- messaging.onTokenRefresh.listen((fcmToken) async {
- final fcmToken = await messaging.getToken();
- final user = _firestore.collection('Users').doc(FirebaseAuth.instance.currentUser?.uid);
- user.update({
- 'token': fcmToken,
- });
- });
- }
- void localNotificationsSetup() {
- AwesomeNotifications().initialize(
- // set the icon to null if you want to use the default app icon
- null,
- [
- NotificationChannel(
- channelGroupKey: 'basic_channel_group',
- channelKey: 'basic_channel',
- channelName: 'Basic notifications',
- channelDescription: 'Notification channel for basic tests',
- )
- ],
- debug: kDebugMode);
- AwesomeNotifications().isNotificationAllowed().then((isAllowed) {
- if (!isAllowed) {
- // This is just a basic example. For real apps, you must show some
- // friendly dialog box before call the request method.
- // This is very important to not harm the user experience
- AwesomeNotifications().requestPermissionToSendNotifications();
- }
- });
- }
|