Files
fcs/lib/data/provider/messaging_fcm.dart

69 lines
2.1 KiB
Dart
Raw Normal View History

2020-10-07 02:33:06 +06:30
import 'package:fcs/data/services/messaging_service.dart';
2021-09-11 08:27:27 +06:30
import 'package:firebase_core/firebase_core.dart';
2020-09-06 02:36:57 +06:30
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:logging/logging.dart';
final msgLog = Logger('backgroundMessageHandler');
2021-09-11 08:27:27 +06:30
Future<void> backgroundMessageHandler(RemoteMessage message) async {
await Firebase.initializeApp();
msgLog.info("background onMessage: $message");
2020-09-06 02:36:57 +06:30
}
class MessagingFCM {
final log = Logger('MessagingFCM');
2021-09-11 08:27:27 +06:30
late FirebaseMessaging _firebaseMessaging;
2020-09-06 02:36:57 +06:30
2020-09-20 05:34:49 +06:30
MessagingFCM(OnNotify onMessage,
2021-09-11 08:27:27 +06:30
{OnNotify? onLaunch,
OnNotify? onResume,
OnSetupComplete? onSetupComplete}) {
_firebaseMessaging = FirebaseMessaging.instance;
init(onMessage: onMessage, onSetupComplete: onSetupComplete);
}
init({OnNotify? onMessage, OnSetupComplete? onSetupComplete}) async {
NotificationSettings settings = await _firebaseMessaging.requestPermission(
alert: true,
announcement: false,
badge: true,
carPlay: false,
criticalAlert: false,
provisional: false,
sound: true,
2020-09-06 02:36:57 +06:30
);
2021-09-11 08:27:27 +06:30
print('User granted permission: ${settings.authorizationStatus}');
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
log.info("onMessage: $message");
if (onMessage != null) _onNotify(message.data, onMessage);
if (message.notification != null) {
print('Message also contained a notification: ${message.notification}');
}
2020-09-06 02:36:57 +06:30
});
2021-09-11 08:27:27 +06:30
2021-09-11 16:56:20 +06:30
try {
String? token = await _firebaseMessaging.getToken();
if (onSetupComplete != null && token != null) onSetupComplete(token);
log.info("Messaging Token:$token");
} on Exception catch (e) {
log.shout("Unable to get messing token:$e");
}
2020-09-06 02:36:57 +06:30
}
Future<void> subscribeToTopic(String topic) {
return _firebaseMessaging.subscribeToTopic(topic);
}
_onNotify(Map<String, dynamic> message, OnNotify onNotify) {
onNotify(Map<String, dynamic>.from(message));
}
Future<void> unsubscribeToTopic(String topic) {
return _firebaseMessaging.unsubscribeFromTopic(topic);
}
}