From dc793696fe3115b80fef0c141154f91b8488a0b2 Mon Sep 17 00:00:00 2001 From: Chris Bianca Date: Wed, 16 May 2018 17:37:58 +0100 Subject: [PATCH] [ios] Cache and then send data messages received whilst app is being initialised #1005 --- ios/RNFirebase/messaging/RNFirebaseMessaging.m | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/ios/RNFirebase/messaging/RNFirebaseMessaging.m b/ios/RNFirebase/messaging/RNFirebaseMessaging.m index 861a5b81..3bed1083 100644 --- a/ios/RNFirebase/messaging/RNFirebaseMessaging.m +++ b/ios/RNFirebase/messaging/RNFirebaseMessaging.m @@ -20,6 +20,7 @@ static RNFirebaseMessaging *theRNFirebaseMessaging = nil; static bool jsReady = FALSE; static NSString* initialToken = nil; +static NSMutableArray* pendingMessages = nil; + (nonnull instancetype)instance { return theRNFirebaseMessaging; @@ -197,6 +198,11 @@ RCT_EXPORT_METHOD(jsInitialised:(RCTPromiseResolveBlock)resolve rejecter:(RCTPro if (initialToken) { [self sendJSEvent:self name:MESSAGING_TOKEN_REFRESHED body:initialToken]; } + if (pendingMessages) { + for (id message in pendingMessages) { + [RNFirebaseUtil sendJSEvent:self name:MESSAGING_MESSAGE_RECEIVED body:message]; + } + } } // ** Start internals ** @@ -209,9 +215,13 @@ RCT_EXPORT_METHOD(jsInitialised:(RCTPromiseResolveBlock)resolve rejecter:(RCTPro } else { if ([name isEqualToString:MESSAGING_TOKEN_REFRESHED]) { initialToken = body; + } else if ([name isEqualToString:MESSAGING_MESSAGE_RECEIVED]) { + if (!pendingMessages) { + pendingMessages = [[NSMutableArray alloc] init]; + } + [pendingMessages addObject:body]; } else { - // TODO: Is this even possible? - NSLog(@"Received Remote Message before the bridge is ready"); + NSLog(@"Received unexpected message type"); } } }