Untitled
unknown
plain_text
9 months ago
2.8 kB
9
Indexable
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:zendo/core/backend/local_storage/local_storage.dart';
import 'package:zendo/core/basic_imports/basic_screen_imports.dart';
import 'package:zendo/modules/profile/backend/model/profile_model.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
class FireBaseApi {
final firebaseMessaging = FirebaseMessaging.instance;
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
Future<void> initialize() async {
await firebaseMessaging.requestPermission();
final fcmToken = await firebaseMessaging.getToken();
FirebaseMessaging.instance.subscribeToTopic("all_users");
print("tokenfcm $fcmToken");
const AndroidInitializationSettings androidSettings =
AndroidInitializationSettings('@mipmap/ic_launcher');
const InitializationSettings initializationSettings =
InitializationSettings(android: androidSettings);
await flutterLocalNotificationsPlugin.initialize(initializationSettings,
onDidReceiveNotificationResponse: (NotificationResponse response) {
_handleMessage(_lastRemoteMessage!);
});
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
_showLocalNotification(message);
});
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
_handleMessage(message);
});
final RemoteMessage? initialMessage =
await firebaseMessaging.getInitialMessage();
if (initialMessage != null) {
_handleMessage(initialMessage);
}
}
RemoteMessage? _lastRemoteMessage;
ProfileModel? profile;
void _handleMessage(RemoteMessage message) async {
_lastRemoteMessage = message;
final token = LocalStorage.getToken();
if (token == null || token.isEmpty) {
Get.offAllNamed(Routes.loginRegisterScreen);
return;
} else {
Get.toNamed(Routes.dashboardScreen);
}
}
Future<void> _showLocalNotification(RemoteMessage message) async {
const AndroidNotificationDetails androidPlatformChannelSpecifics =
AndroidNotificationDetails(
'high_importance_channel',
'High Importance Notifications',
importance: Importance.max,
priority: Priority.high,
ticker: 'ticker',
);
const NotificationDetails notificationDetails =
NotificationDetails(android: androidPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.show(
0,
message.notification?.title ?? 'Notifikasi',
message.notification?.body ?? 'Detail notifikasi',
notificationDetails,
payload: 'payload',
);
}
}
Editor is loading...
Leave a Comment