TF-439 Add stream controller to handle get/refresh fcm token

This commit is contained in:
dab246
2022-11-29 14:16:26 +07:00
committed by Dat H. Pham
parent 00660e5644
commit e91a8435e9
3 changed files with 15 additions and 0 deletions
@@ -14,5 +14,6 @@ class FcmConfiguration {
FcmReceiver.instance.onForegroundMessage();
FcmReceiver.instance.onBackgroundMessage();
FcmReceiver.instance.getFcmToken();
FcmReceiver.instance.onRefreshFcmToken();
}
}
@@ -28,5 +28,12 @@ class FcmReceiver {
void getFcmToken() async {
final token = await FirebaseMessaging.instance.getToken();
log('FcmReceiver::onFcmToken():token: $token');
if (token?.isNotEmpty == true) {
FcmService.instance.handleRefreshToken(token!);
}
}
void onRefreshFcmToken() {
FirebaseMessaging.instance.onTokenRefresh.listen(FcmService.instance.handleRefreshToken);
}
}
@@ -16,6 +16,9 @@ class FcmService {
final StreamController<RemoteMessage> backgroundMessageStreamController = StreamController<RemoteMessage>.broadcast();
Stream<RemoteMessage> get backgroundMessageStream => backgroundMessageStreamController.stream;
final StreamController<String> fcmTokenStreamController = StreamController<String>.broadcast();
Stream<String> get fcmTokenStream => fcmTokenStreamController.stream;
FirebaseToken? currentToken;
FcmService._internal();
@@ -35,6 +38,10 @@ class FcmService {
backgroundMessageStreamController.add(newRemoteMessage);
}
void handleRefreshToken(String newToken) {
fcmTokenStreamController.add(newToken);
}
void _closeStream() {
foregroundMessageStreamController.close();
backgroundMessageStreamController.close();