Compare commits
	
		
			2 Commits
		
	
	
		
			2b0fa4b578
			...
			51efc56ced
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 51efc56ced | |||
| f4972e629d | 
| @ -38,6 +38,10 @@ class ListenNotification extends StreamUseCase<NoParam, RemoteNotification> { | ||||
|     if (notificationStreamResponse.isOk) { | ||||
|       notificationStream = notificationStreamResponse.ok; | ||||
|     } else if (notificationStreamResponse.isErr) { | ||||
|       if (notificationStreamResponse.err! is UnimplementedError) { | ||||
|         return Err(notificationStreamResponse.err!); | ||||
|       } | ||||
| 
 | ||||
|       final notificationBackgroundStreamResponse = | ||||
|           await _notificationRepository.onNotificationBackground(); | ||||
| 
 | ||||
|  | ||||
| @ -6,6 +6,8 @@ import 'package:firebase_messaging/firebase_messaging.dart' | ||||
| import 'package:flutter_local_notifications/flutter_local_notifications.dart'; | ||||
| import 'package:wyatt_cloud_messaging_bloc_base/wyatt_cloud_messaging_bloc.dart'; | ||||
| 
 | ||||
| typedef CloudMessagingStreamController = StreamController<RemoteNotification>; | ||||
| 
 | ||||
| class CloudMessagingFirebaseDataSource extends CloudMessagingRemoteDataSource { | ||||
|   final FirebaseMessaging _firebaseMessagingInstance = | ||||
|       FirebaseMessaging.instance; | ||||
| @ -18,8 +20,36 @@ class CloudMessagingFirebaseDataSource extends CloudMessagingRemoteDataSource { | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   Future<Stream<RemoteNotification>> onNotificationBackground() { | ||||
|     throw UnimplementedError(); | ||||
|   Future<Stream<RemoteNotification>> onNotificationBackground() async { | ||||
|     final backgroundStreamController = CloudMessagingStreamController(); | ||||
| 
 | ||||
|     Future<void> getLastBackgroundNotification() async { | ||||
|       final lastNotification = | ||||
|           await _firebaseMessagingInstance.getInitialMessage(); | ||||
|       if (lastNotification != null) { | ||||
|         backgroundStreamController.add( | ||||
|           RemoteNotification( | ||||
|             title: lastNotification.notification?.title, | ||||
|             body: lastNotification.notification?.body, | ||||
|             data: lastNotification.data, | ||||
|           ), | ||||
|         ); | ||||
|       } | ||||
| 
 | ||||
|       FirebaseMessaging.onMessageOpenedApp.listen((notification) { | ||||
|         backgroundStreamController.add( | ||||
|           RemoteNotification( | ||||
|             title: notification.notification?.title, | ||||
|             body: notification.notification?.body, | ||||
|             data: notification.data, | ||||
|           ), | ||||
|         ); | ||||
|       }); | ||||
|     } | ||||
| 
 | ||||
|     unawaited(getLastBackgroundNotification()); | ||||
| 
 | ||||
|     return backgroundStreamController.stream; | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
| @ -47,8 +77,8 @@ class CloudMessagingFirebaseDataSource extends CloudMessagingRemoteDataSource { | ||||
|       iOS: DarwinInitializationSettings(), | ||||
|     ); | ||||
| 
 | ||||
|     final StreamController<RemoteNotification> foregroundStream = | ||||
|         StreamController<RemoteNotification>(); | ||||
|     final CloudMessagingStreamController foregroundStream = | ||||
|         CloudMessagingStreamController(); | ||||
| 
 | ||||
|     await _localNotificationInstance.initialize( | ||||
|       initializationSettings, | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user