82 lines
2.4 KiB
Dart
82 lines
2.4 KiB
Dart
import 'dart:developer';
|
|
|
|
import 'package:firebase_core/firebase_core.dart';
|
|
import 'package:firebase_messaging/firebase_messaging.dart';
|
|
import 'package:hub/app_state.dart';
|
|
import 'package:hub/backend/api_requests/api_calls.dart';
|
|
import 'package:hub/shared/helpers/db_helper.dart';
|
|
import 'package:hub/shared/utils/log_util.dart';
|
|
|
|
import 'notification_service.dart';
|
|
|
|
Future<void> handleMessage(RemoteMessage message) async {
|
|
NotificationService.show(
|
|
title: message.notification!.title!,
|
|
body: message.notification!.body!,
|
|
payload: Map<String, String>.from(message.data));
|
|
}
|
|
|
|
class FirebaseMessagingService {
|
|
// Singleton instance
|
|
static final FirebaseMessagingService _instance =
|
|
FirebaseMessagingService._internal();
|
|
|
|
// Factory constructor
|
|
factory FirebaseMessagingService() => _instance;
|
|
|
|
// Private constructor
|
|
FirebaseMessagingService._internal();
|
|
|
|
final _firebaseMessaging = FirebaseMessaging.instance;
|
|
|
|
Future<void> initNotifications() async {
|
|
await _firebaseMessaging.requestPermission();
|
|
|
|
_firebaseMessaging.onTokenRefresh.listen((token) => updateDeviceToken);
|
|
|
|
_firebaseMessaging.setAutoInitEnabled(false);
|
|
_firebaseMessaging.pluginConstants;
|
|
|
|
// FirebaseMessaging.onBackgroundMessage(handleMessage);
|
|
|
|
// FirebaseMessaging.onMessage.listen((RemoteMessage message) {
|
|
// handleMessage(message);
|
|
// });
|
|
|
|
// FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
|
|
// log('A Message was opened: $message');
|
|
// });
|
|
|
|
// FirebaseMessaging.instance
|
|
// .getInitialMessage()
|
|
// .then((RemoteMessage? message) {
|
|
// if (message != null) {
|
|
// log('A Message was opened: $message');
|
|
// }
|
|
// });
|
|
}
|
|
|
|
Future<void> updateDeviceToken() async {
|
|
try {
|
|
final String? deviceToken = await _firebaseMessaging.getToken();
|
|
|
|
if (deviceToken != null) {
|
|
AppState().token = deviceToken;
|
|
final ApiCallResponse? response;
|
|
|
|
response = await PhpGroup.updToken.call();
|
|
|
|
if (response.jsonBody['error'] == false) {
|
|
log('Token Atualizado com Sucesso!');
|
|
} else {
|
|
log('Falha ao Atualizar Token: ${response.jsonBody}');
|
|
}
|
|
} else {
|
|
log('Falha ao Pegar Token do Firebase');
|
|
}
|
|
} catch (e, s) {
|
|
LogUtil.requestAPIFailed("updToken.php", "", "Atualizar Token", e, s);
|
|
}
|
|
}
|
|
}
|