TF-439 Add stream controller to handle get/refresh fcm token
This commit is contained in:
@@ -14,5 +14,6 @@ class FcmConfiguration {
|
|||||||
FcmReceiver.instance.onForegroundMessage();
|
FcmReceiver.instance.onForegroundMessage();
|
||||||
FcmReceiver.instance.onBackgroundMessage();
|
FcmReceiver.instance.onBackgroundMessage();
|
||||||
FcmReceiver.instance.getFcmToken();
|
FcmReceiver.instance.getFcmToken();
|
||||||
|
FcmReceiver.instance.onRefreshFcmToken();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -28,5 +28,12 @@ class FcmReceiver {
|
|||||||
void getFcmToken() async {
|
void getFcmToken() async {
|
||||||
final token = await FirebaseMessaging.instance.getToken();
|
final token = await FirebaseMessaging.instance.getToken();
|
||||||
log('FcmReceiver::onFcmToken():token: $token');
|
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();
|
final StreamController<RemoteMessage> backgroundMessageStreamController = StreamController<RemoteMessage>.broadcast();
|
||||||
Stream<RemoteMessage> get backgroundMessageStream => backgroundMessageStreamController.stream;
|
Stream<RemoteMessage> get backgroundMessageStream => backgroundMessageStreamController.stream;
|
||||||
|
|
||||||
|
final StreamController<String> fcmTokenStreamController = StreamController<String>.broadcast();
|
||||||
|
Stream<String> get fcmTokenStream => fcmTokenStreamController.stream;
|
||||||
|
|
||||||
FirebaseToken? currentToken;
|
FirebaseToken? currentToken;
|
||||||
|
|
||||||
FcmService._internal();
|
FcmService._internal();
|
||||||
@@ -35,6 +38,10 @@ class FcmService {
|
|||||||
backgroundMessageStreamController.add(newRemoteMessage);
|
backgroundMessageStreamController.add(newRemoteMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void handleRefreshToken(String newToken) {
|
||||||
|
fcmTokenStreamController.add(newToken);
|
||||||
|
}
|
||||||
|
|
||||||
void _closeStream() {
|
void _closeStream() {
|
||||||
foregroundMessageStreamController.close();
|
foregroundMessageStreamController.close();
|
||||||
backgroundMessageStreamController.close();
|
backgroundMessageStreamController.close();
|
||||||
|
|||||||
Reference in New Issue
Block a user