[ios] Firebase iOS v5 support

This commit is contained in:
Chris Bianca 2018-05-16 17:22:47 +01:00
parent 34c0878098
commit 42e7fb2e5d
11 changed files with 367 additions and 354 deletions

View File

@ -1024,7 +1024,7 @@ class RNFirebaseAuth extends ReactContextBaseJavaModule {
actionType = "PASSWORD_RESET";
break;
case ActionCodeResult.SIGN_IN_WITH_EMAIL_LINK:
actionType = "EMAIL_SIGNING";
actionType = "EMAIL_SIGNIN";
break;
}

View File

@ -20,7 +20,7 @@ target 'testing' do
pod 'Firebase/AdMob'
pod 'Firebase/Auth'
pod 'Firebase/Core', '~> 4.13.0'
pod 'Firebase/Core'
pod 'Firebase/Crash'
pod 'Firebase/Database'
pod 'Firebase/Functions'

View File

@ -8,86 +8,90 @@ PODS:
- Crashlytics (3.10.1):
- Fabric (~> 1.7.5)
- Fabric (1.7.6)
- Firebase/AdMob (4.13.0):
- Firebase/AdMob (5.0.1):
- Firebase/Core
- Google-Mobile-Ads-SDK (= 7.30.0)
- Firebase/Auth (4.13.0):
- Firebase/Auth (5.0.1):
- Firebase/CoreOnly
- FirebaseAuth (= 5.0.0)
- Firebase/Core (5.0.1):
- Firebase/CoreOnly
- FirebaseAnalytics (= 5.0.0)
- Firebase/CoreOnly (5.0.1):
- FirebaseCore (= 5.0.1)
- Firebase/Crash (5.0.1):
- Firebase/Core
- FirebaseAuth (= 4.6.1)
- Firebase/Core (4.13.0):
- FirebaseAnalytics (= 4.2.0)
- FirebaseCore (= 4.0.20)
- Firebase/Crash (4.13.0):
- FirebaseCrash (= 3.0.0)
- Firebase/Database (5.0.1):
- Firebase/CoreOnly
- FirebaseDatabase (= 5.0.0)
- Firebase/DynamicLinks (5.0.1):
- Firebase/Core
- FirebaseCrash (= 2.0.2)
- Firebase/Database (4.13.0):
- FirebaseDynamicLinks (= 3.0.0)
- Firebase/Firestore (5.0.1):
- Firebase/CoreOnly
- FirebaseFirestore (= 0.12.1)
- Firebase/Functions (5.0.1):
- Firebase/CoreOnly
- FirebaseFunctions (= 2.0.0)
- Firebase/Invites (5.0.1):
- Firebase/Core
- FirebaseDatabase (= 4.1.5)
- Firebase/DynamicLinks (4.13.0):
- FirebaseInvites (= 3.0.0)
- Firebase/Messaging (5.0.1):
- Firebase/CoreOnly
- FirebaseMessaging (= 3.0.0)
- Firebase/Performance (5.0.1):
- Firebase/Core
- FirebaseDynamicLinks (= 2.3.2)
- Firebase/Firestore (4.13.0):
- FirebasePerformance (= 2.0.0)
- Firebase/RemoteConfig (5.0.1):
- Firebase/Core
- FirebaseFirestore (= 0.11.0)
- Firebase/Functions (4.13.0):
- Firebase/Core
- FirebaseFunctions (= 1.0.0)
- Firebase/Invites (4.13.0):
- Firebase/Core
- FirebaseInvites (= 2.0.2)
- Firebase/Messaging (4.13.0):
- Firebase/Core
- FirebaseMessaging (= 2.2.0)
- Firebase/Performance (4.13.0):
- Firebase/Core
- FirebasePerformance (= 1.1.3)
- Firebase/RemoteConfig (4.13.0):
- Firebase/Core
- FirebaseRemoteConfig (= 2.1.3)
- Firebase/Storage (4.13.0):
- Firebase/Core
- FirebaseStorage (= 2.2.0)
- FirebaseABTesting (1.0.0):
- FirebaseCore (~> 4.0)
- Protobuf (~> 3.1)
- FirebaseAnalytics (4.2.0):
- FirebaseCore (~> 4.0)
- FirebaseInstanceID (~> 2.0)
- FirebaseRemoteConfig (= 3.0.0)
- Firebase/Storage (5.0.1):
- Firebase/CoreOnly
- FirebaseStorage (= 3.0.0)
- FirebaseABTesting (2.0.0):
- FirebaseCore (~> 5.0)
- Protobuf (~> 3.5)
- FirebaseAnalytics (5.0.0):
- FirebaseCore (~> 5.0)
- FirebaseInstanceID (~> 3.0)
- GoogleToolboxForMac/NSData+zlib (~> 2.1)
- nanopb (~> 0.3)
- FirebaseAuth (4.6.1):
- FirebaseAnalytics (~> 4.2)
- GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)
- FirebaseAuth (5.0.0):
- FirebaseCore (~> 5.0)
- GTMSessionFetcher/Core (~> 1.1)
- FirebaseCore (4.0.20):
- FirebaseCore (5.0.1):
- GoogleToolboxForMac/NSData+zlib (~> 2.1)
- FirebaseCrash (2.0.2):
- FirebaseAnalytics (~> 4.0)
- FirebaseInstanceID (~> 2.0)
- FirebaseCrash (3.0.0):
- FirebaseAnalytics (~> 5.0)
- FirebaseInstanceID (~> 3.0)
- GoogleToolboxForMac/Logger (~> 2.1)
- GoogleToolboxForMac/NSData+zlib (~> 2.1)
- Protobuf (~> 3.1)
- FirebaseDatabase (4.1.5):
- FirebaseAnalytics (~> 4.1)
- FirebaseCore (~> 4.0)
- Protobuf (~> 3.5)
- FirebaseDatabase (5.0.0):
- FirebaseCore (~> 5.0)
- leveldb-library (~> 1.18)
- FirebaseDynamicLinks (2.3.2):
- FirebaseAnalytics (~> 4.0)
- FirebaseFirestore (0.11.0):
- FirebaseAnalytics (~> 4.1)
- FirebaseCore (~> 4.0)
- FirebaseDynamicLinks (3.0.0):
- FirebaseAnalytics (~> 5.0)
- FirebaseFirestore (0.12.1):
- FirebaseCore (~> 5.0)
- FirebaseFirestore/abseil-cpp (= 0.12.1)
- gRPC-ProtoRPC (~> 1.0)
- leveldb-library (~> 1.18)
- Protobuf (~> 3.5)
- FirebaseFunctions (1.0.0):
- FirebaseAnalytics (~> 4.1)
- FirebaseCore (~> 4.0)
- Protobuf (~> 3.1)
- FirebaseFirestore/abseil-cpp (0.12.1):
- FirebaseCore (~> 5.0)
- gRPC-ProtoRPC (~> 1.0)
- leveldb-library (~> 1.18)
- Protobuf (~> 3.1)
- FirebaseFunctions (2.0.0):
- FirebaseCore (~> 5.0)
- GTMSessionFetcher/Core (~> 1.1)
- FirebaseInstanceID (2.0.10):
- FirebaseCore (~> 4.0)
- FirebaseInvites (2.0.2):
- FirebaseAnalytics (~> 4.0)
- FirebaseDynamicLinks (~> 2.2)
- FirebaseInstanceID (3.0.0):
- FirebaseCore (~> 5.0)
- FirebaseInvites (3.0.0):
- FirebaseAnalytics (~> 5.0)
- FirebaseDynamicLinks (~> 3.0)
- GoogleAPIClientForREST (~> 1.0)
- GoogleSignIn (~> 4.1)
- GoogleToolboxForMac/Logger (~> 2.1)
@ -98,36 +102,34 @@ PODS:
- GTMOAuth2 (~> 1.0)
- GTMSessionFetcher/Core (~> 1.1)
- GTMSessionFetcher/Full (~> 1.1)
- Protobuf (~> 3.5)
- FirebaseMessaging (3.0.0):
- FirebaseCore (~> 5.0)
- FirebaseInstanceID (~> 3.0)
- GoogleToolboxForMac/Logger (~> 2.1)
- Protobuf (~> 3.1)
- FirebaseMessaging (2.2.0):
- FirebaseAnalytics (~> 4.1)
- FirebaseCore (~> 4.0)
- FirebaseInstanceID (~> 2.0)
- GoogleToolboxForMac/Logger (~> 2.1)
- Protobuf (~> 3.5)
- FirebasePerformance (1.1.3):
- FirebaseAnalytics (~> 4.1)
- FirebaseInstanceID (~> 2.0)
- FirebaseSwizzlingUtilities/ISASwizzling (~> 1.0)
- FirebaseSwizzlingUtilities/MethodSwizzling (~> 1.0)
- FirebasePerformance (2.0.0):
- FirebaseAnalytics (~> 5.0)
- FirebaseInstanceID (~> 3.0)
- FirebaseSwizzlingUtilities/ISASwizzling (~> 2.0)
- FirebaseSwizzlingUtilities/MethodSwizzling (~> 2.0)
- GoogleToolboxForMac/Logger (~> 2.1)
- GoogleToolboxForMac/NSData+zlib (~> 2.1)
- GTMSessionFetcher/Core (~> 1.1)
- Protobuf (~> 3.5)
- FirebaseRemoteConfig (2.1.3):
- FirebaseABTesting (~> 1.0)
- FirebaseAnalytics (~> 4.1)
- FirebaseCore (~> 4.0)
- FirebaseInstanceID (~> 2.0)
- FirebaseRemoteConfig (3.0.0):
- FirebaseABTesting (~> 2.0)
- FirebaseAnalytics (~> 5.0)
- FirebaseCore (~> 5.0)
- FirebaseInstanceID (~> 3.0)
- GoogleToolboxForMac/NSData+zlib (~> 2.1)
- Protobuf (~> 3.5)
- FirebaseStorage (2.2.0):
- FirebaseAnalytics (~> 4.1)
- FirebaseCore (~> 4.0)
- FirebaseStorage (3.0.0):
- FirebaseCore (~> 5.0)
- GTMSessionFetcher/Core (~> 1.1)
- FirebaseSwizzlingUtilities/ISASwizzling (1.0.1)
- FirebaseSwizzlingUtilities/MethodSwizzling (1.0.1):
- FirebaseCore (~> 4.0)
- FirebaseSwizzlingUtilities/ISASwizzling (2.0.0)
- FirebaseSwizzlingUtilities/MethodSwizzling (2.0.0):
- FirebaseCore (~> 5.0)
- Google-Mobile-Ads-SDK (7.30.0)
- GoogleAPIClientForREST (1.3.4):
- GoogleAPIClientForREST/Core (= 1.3.4)
@ -218,7 +220,7 @@ DEPENDENCIES:
- Fabric (~> 1.7.5)
- Firebase/AdMob
- Firebase/Auth
- Firebase/Core (~> 4.13.0)
- Firebase/Core
- Firebase/Crash
- Firebase/Database
- Firebase/DynamicLinks
@ -248,23 +250,23 @@ SPEC CHECKSUMS:
BoringSSL: 60dd24df4af296bf41d78e5841dbb95d75f88c0d
Crashlytics: aee1a064cbbf99b32efa3f056a5f458d846bc8ff
Fabric: f8d42c893bb187326a7968b62abe55c36a987a46
Firebase: 5ec5e863d269d82d66b4bf56856726f8fb8f0fb3
FirebaseABTesting: d07d0ee833b842d5153549e4c7e2e2cb1c23a3f9
FirebaseAnalytics: 7ef69e76a5142f643aeb47c780e1cdce4e23632e
FirebaseAuth: bf22cacf22c60ab454bf2636f556d8892b10b53f
FirebaseCore: 90cb1c53d69b556f112a1bf72b5fcfaad7650790
FirebaseCrash: a7d980468dc8aa2db9792493c3e02722d601f6ab
FirebaseDatabase: 5f0bc6134c5c237cf55f9e1249d406770a75eafd
FirebaseDynamicLinks: 38b68641d24e78d0277a9205d988ce22875d5a25
FirebaseFirestore: e92a096ce80c7b4b905d4e9d41dbd944adc9d2a5
FirebaseFunctions: 3745fada03bd706a9b5c0b9ae7b2d490fa594d21
FirebaseInstanceID: 8d20d890d65c917f9f7d9950b6e10a760ad34321
FirebaseInvites: ae15e0636f9eb42bdf5c1ef4c8f7bd4a88f9878b
FirebaseMessaging: 75cdb862e86c30e0913a2ff307e48d49357c5b73
FirebasePerformance: 85bdc3f3d630deb629e85695fcab23364d68f5db
FirebaseRemoteConfig: 3e95fb7c072308492e85fa41d59d38b3d6fd2372
FirebaseStorage: 0c223481c8f89ed300cf1239ddd2d9833622c65f
FirebaseSwizzlingUtilities: 6006111d30248d2321ffac0231e246663e704ea3
Firebase: d6861c2059d8c32d1e6dd8932e22ada346d90a3a
FirebaseABTesting: 1f50b8d50f5e3469eea54e7463a7b7fe221d1f5e
FirebaseAnalytics: 19812b49fa5f283dd6b23edf8a14b5d477029ab8
FirebaseAuth: acbeef02fe7c3a26624e309849f3fe30c84115af
FirebaseCore: cafc814b2d84fc8733f09e653041cc2165332ad7
FirebaseCrash: 8900571fd763fd5bdda04522ec53da979456e3ce
FirebaseDatabase: 697eb53e5b4fe7cd4fa8756c1f82a9fca011345f
FirebaseDynamicLinks: c70e8ef2f267f13459db89b8816b13a06b2278d2
FirebaseFirestore: f686b8e83f3cf8bbc37db6e98e01029a14f01f55
FirebaseFunctions: 141da172b7491276d9da8715b8ca88f9e439ffb6
FirebaseInstanceID: 83e0040351565df711a5db3d8ebe5ea21aca998a
FirebaseInvites: d7534f94d0610b892bac8ee0cf4218a14be46c28
FirebaseMessaging: f2360a966ecfb0d14facf0fbdf306efc2df0ddbe
FirebasePerformance: 1ec6c40e5dad2543ca4c4f25d15168bde6322c2c
FirebaseRemoteConfig: 3c57e4644bd6976b671ae0b725cd709f198bd1f5
FirebaseStorage: 7ca4bb7b58a25fa647b04f524033fc7cb7eb272b
FirebaseSwizzlingUtilities: 6c22677c50d0b6f5f0dc637c1233f13694a3003f
Google-Mobile-Ads-SDK: 7404f68120ae8682afeb5af001fbf4aad731c78e
GoogleAPIClientForREST: f7951c455df271bc6259b3ddb4073d0026475ccf
GoogleSignIn: d9ef55b10f0aa401a5de2747f59b725e4b9732ac
@ -282,6 +284,6 @@ SPEC CHECKSUMS:
RNFirebase: 2b25fd2e60269f26bb0a76c71dcc942b35a77df0
yoga: a23273df0088bf7f2bb7e5d7b00044ea57a2a54a
PODFILE CHECKSUM: 529baa60fa4c9087d932f99050e201c5e917469b
PODFILE CHECKSUM: 582ceaad051470812ad9203e13b5ea8ad20c78ac
COCOAPODS: 1.4.0

View File

@ -2,7 +2,7 @@
#if __has_include(<FirebaseAnalytics/FIRAnalytics.h>)
#import <FirebaseAnalytics/FIRAnalytics.h>
#import <FirebaseAnalytics/FIRAnalyticsConfiguration.h>
#import <FirebaseCore/FIRAnalyticsConfiguration.h>
@implementation RNFirebaseAnalytics
RCT_EXPORT_MODULE();

View File

@ -128,15 +128,7 @@ RCT_EXPORT_METHOD(signOut:
RCT_EXPORT_METHOD(signInAnonymously:(NSString *) appDisplayName
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject) {
FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName];
[[FIRAuth authWithApp:firApp] signInAnonymouslyWithCompletion:^(FIRUser *user, NSError *error) {
if (error) {
[self promiseRejectAuthException:reject error:error];
} else {
[self promiseWithUser:resolve rejecter:reject user:user];
}
}];
[self signInAnonymously:appDisplayName withData:false resolver:resolve rejecter:reject];
}
/**
@ -149,13 +141,22 @@ RCT_EXPORT_METHOD(signInAnonymously:(NSString *) appDisplayName
RCT_EXPORT_METHOD(signInAnonymouslyAndRetrieveData:(NSString *) appDisplayName
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject) {
[self signInAnonymously:appDisplayName withData:true resolver:resolve rejecter:reject];
}
-(void)signInAnonymously:(NSString *)appDisplayName
withData:(BOOL)withData
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject {
FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName];
[[FIRAuth authWithApp:firApp] signInAnonymouslyAndRetrieveDataWithCompletion:^(FIRAuthDataResult *authResult, NSError *error) {
[[FIRAuth authWithApp:firApp] signInAnonymouslyWithCompletion:^(FIRAuthDataResult *authResult, NSError *error) {
if (error) {
[self promiseRejectAuthException:reject error:error];
} else {
} else if (withData) {
[self promiseWithAuthResult:resolve rejecter:reject authResult:authResult];
} else {
[self promiseWithUser:resolve rejecter:reject user:authResult.user];
}
}];
}
@ -174,15 +175,7 @@ RCT_EXPORT_METHOD(signInWithEmailAndPassword:(NSString *) appDisplayName
pass:(NSString *) password
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject) {
FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName];
[[FIRAuth authWithApp:firApp] signInWithEmail:email password:password completion:^(FIRUser *user, NSError *error) {
if (error) {
[self promiseRejectAuthException:reject error:error];
} else {
[self promiseWithUser:resolve rejecter:reject user:user];
}
}];
[self signInWithEmail:appDisplayName email:email password:password withData:false resolver:resolve rejecter:reject];
}
/**
@ -196,16 +189,27 @@ RCT_EXPORT_METHOD(signInWithEmailAndPassword:(NSString *) appDisplayName
*/
RCT_EXPORT_METHOD(signInAndRetrieveDataWithEmailAndPassword:(NSString *) appDisplayName
email:(NSString *) email
pass:(NSString *) password
password:(NSString *) password
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject) {
[self signInWithEmail:appDisplayName email:email password:password withData:true resolver:resolve rejecter:reject];
}
-(void)signInWithEmail:(NSString *)appDisplayName
email:(NSString *)email
password:(NSString *)password
withData:(BOOL)withData
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject {
FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName];
[[FIRAuth authWithApp:firApp] signInAndRetrieveDataWithEmail:email password:password completion:^(FIRAuthDataResult *authResult, NSError *error) {
[[FIRAuth authWithApp:firApp] signInWithEmail:email password:password completion:^(FIRAuthDataResult *authResult, NSError *error) {
if (error) {
[self promiseRejectAuthException:reject error:error];
} else {
} else if (withData) {
[self promiseWithAuthResult:resolve rejecter:reject authResult:authResult];
} else {
[self promiseWithUser:resolve rejecter:reject user:authResult.user];
}
}];
}
@ -249,15 +253,7 @@ RCT_EXPORT_METHOD(createUserWithEmailAndPassword:(NSString *) appDisplayName
pass:(NSString *) password
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject) {
FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName];
[[FIRAuth authWithApp:firApp] createUserWithEmail:email password:password completion:^(FIRUser *user, NSError *error) {
if (error) {
[self promiseRejectAuthException:reject error:error];
} else {
[self promiseWithUser:resolve rejecter:reject user:user];
}
}];
[self createUserWithEmail:appDisplayName email:email password:password withData:false resolver:resolve rejecter:reject];
}
/**
@ -271,18 +267,28 @@ RCT_EXPORT_METHOD(createUserWithEmailAndPassword:(NSString *) appDisplayName
*/
RCT_EXPORT_METHOD(createUserAndRetrieveDataWithEmailAndPassword:(NSString *) appDisplayName
email:(NSString *) email
pass:(NSString *) password
password:(NSString *) password
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject) {
[self createUserWithEmail:appDisplayName email:email password:password withData:true resolver:resolve rejecter:reject];
}
-(void)createUserWithEmail:(NSString *)appDisplayName
email:(NSString *)email
password:(NSString *)password
withData:(BOOL)withData
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject {
FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName];
[[FIRAuth authWithApp:firApp] createUserAndRetrieveDataWithEmail:email password:password
completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
if (error) {
[self promiseRejectAuthException:reject error:error];
} else {
[self promiseWithAuthResult:resolve rejecter:reject authResult:authResult];
}
[[FIRAuth authWithApp:firApp] createUserWithEmail:email password:password completion:^(FIRAuthDataResult *authResult, NSError *error) {
if (error) {
[self promiseRejectAuthException:reject error:error];
} else if (withData) {
[self promiseWithAuthResult:resolve rejecter:reject authResult:authResult];
} else {
[self promiseWithUser:resolve rejecter:reject user:authResult.user];
}
}];
}
@ -536,21 +542,7 @@ RCT_EXPORT_METHOD(signInWithCredential:(NSString *) appDisplayName
secret:(NSString *) authSecret
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject) {
FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName];
FIRAuthCredential *credential = [self getCredentialForProvider:provider token:authToken secret:authSecret];
if (credential == nil) {
return reject(@"auth/invalid-credential", @"The supplied auth credential is malformed, has expired or is not currently supported.", nil);
}
[[FIRAuth authWithApp:firApp] signInWithCredential:credential completion:^(FIRUser *user, NSError *error) {
if (error) {
[self promiseRejectAuthException:reject error:error];
} else {
[self promiseWithUser:resolve rejecter:reject user:user];
}
}];
[self signInWithCredential:appDisplayName provider:provider token:authToken secret:authSecret withData:false resolver:resolve rejecter:reject];
}
/**
@ -569,6 +561,16 @@ RCT_EXPORT_METHOD(signInAndRetrieveDataWithCredential:(NSString *) appDisplayNam
secret:(NSString *) authSecret
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject) {
[self signInWithCredential:appDisplayName provider:provider token:authToken secret:authSecret withData:true resolver:resolve rejecter:reject];
}
-(void)signInWithCredential:(NSString *)appDisplayName
provider:(NSString *) provider
token:(NSString *) authToken
secret:(NSString *) authSecret
withData:(BOOL)withData
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject {
FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName];
FIRAuthCredential *credential = [self getCredentialForProvider:provider token:authToken secret:authSecret];
@ -580,8 +582,10 @@ RCT_EXPORT_METHOD(signInAndRetrieveDataWithCredential:(NSString *) appDisplayNam
[[FIRAuth authWithApp:firApp] signInAndRetrieveDataWithCredential:credential completion:^(FIRAuthDataResult *authResult, NSError *error) {
if (error) {
[self promiseRejectAuthException:reject error:error];
} else {
} else if (withData) {
[self promiseWithAuthResult:resolve rejecter:reject authResult:authResult];
} else {
[self promiseWithUser:resolve rejecter:reject user:authResult.user];
}
}];
}
@ -764,15 +768,7 @@ RCT_EXPORT_METHOD(signInAndRetrieveDataWithCustomToken:(NSString *) appDisplayNa
customToken:(NSString *) customToken
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject) {
FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName];
[[FIRAuth authWithApp:firApp] signInAndRetrieveDataWithCustomToken:customToken completion:^(FIRAuthDataResult *authResult, NSError *error) {
if (error) {
[self promiseRejectAuthException:reject error:error];
} else {
[self promiseWithAuthResult:resolve rejecter:reject authResult:authResult];
}
}];
[self signInWithCustomToken:appDisplayName customToken:customToken withData:true resolver:resolve rejecter:reject];
}
/**
@ -786,13 +782,23 @@ RCT_EXPORT_METHOD(signInWithCustomToken:(NSString *) appDisplayName
customToken:(NSString *) customToken
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject) {
[self signInWithCustomToken:appDisplayName customToken:customToken withData:false resolver:resolve rejecter:reject];
}
-(void)signInWithCustomToken:(NSString *)appDisplayName
customToken:(NSString *) customToken
withData:(BOOL)withData
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject {
FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName];
[[FIRAuth authWithApp:firApp] signInWithCustomToken:customToken completion:^(FIRUser *user, NSError *error) {
[[FIRAuth authWithApp:firApp] signInWithCustomToken:customToken completion:^(FIRAuthDataResult *authResult, NSError *error) {
if (error) {
[self promiseRejectAuthException:reject error:error];
} else if (withData) {
[self promiseWithAuthResult:resolve rejecter:reject authResult:authResult];
} else {
[self promiseWithUser:resolve rejecter:reject user:user];
[self promiseWithUser:resolve rejecter:reject user:authResult.user];
}
}];
}
@ -868,11 +874,11 @@ RCT_EXPORT_METHOD(_confirmVerificationCode:(NSString *) appDisplayName
NSString *verificationId = [defaults stringForKey:@"authVerificationID"];
FIRAuthCredential *credential = [[FIRPhoneAuthProvider provider] credentialWithVerificationID:verificationId verificationCode:verificationCode];
[[FIRAuth authWithApp:firApp] signInWithCredential:credential completion:^(FIRUser *user, NSError *error) {
[[FIRAuth authWithApp:firApp] signInAndRetrieveDataWithCredential:credential completion:^(FIRAuthDataResult *authResult, NSError *error) {
if (error) {
[self promiseRejectAuthException:reject error:error];
} else {
[self promiseWithUser:resolve rejecter:reject user:user];
[self promiseWithUser:resolve rejecter:reject user:authResult.user];
}
}];
}
@ -893,26 +899,7 @@ RCT_EXPORT_METHOD(linkWithCredential:(NSString *) appDisplayName
authSecret:(NSString *) authSecret
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject) {
FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName];
FIRAuthCredential *credential = [self getCredentialForProvider:provider token:authToken secret:authSecret];
if (credential == nil) {
return reject(@"auth/invalid-credential", @"The supplied auth credential is malformed, has expired or is not currently supported.", nil);
}
FIRUser *user = [FIRAuth authWithApp:firApp].currentUser;
if (user) {
[user linkWithCredential:credential completion:^(FIRUser *_Nullable _user, NSError *_Nullable error) {
if (error) {
[self promiseRejectAuthException:reject error:error];
} else {
[self promiseWithUser:resolve rejecter:reject user:_user];
}
}];
} else {
[self promiseNoUser:resolve rejecter:reject isError:YES];
}
[self linkWithCredential:appDisplayName provider:provider authToken:authToken authSecret:authSecret withData:false resolver:resolve rejecter:reject];
}
/**
@ -931,6 +918,16 @@ RCT_EXPORT_METHOD(linkAndRetrieveDataWithCredential:(NSString *) appDisplayName
authSecret:(NSString *) authSecret
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject) {
[self linkWithCredential:appDisplayName provider:provider authToken:authToken authSecret:authSecret withData:true resolver:resolve rejecter:reject];
}
-(void)linkWithCredential:(NSString *)appDisplayName
provider:(NSString *)provider
authToken:(NSString *)authToken
authSecret:(NSString *)authSecret
withData:(BOOL)withData
resolver:(RCTPromiseResolveBlock)resolve
rejecter:(RCTPromiseRejectBlock)reject {
FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName];
FIRAuthCredential *credential = [self getCredentialForProvider:provider token:authToken secret:authSecret];
@ -942,12 +939,14 @@ RCT_EXPORT_METHOD(linkAndRetrieveDataWithCredential:(NSString *) appDisplayName
if (user) {
[user linkAndRetrieveDataWithCredential:credential
completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
if (error) {
[self promiseRejectAuthException:reject error:error];
} else {
[self promiseWithAuthResult:resolve rejecter:reject authResult:authResult];
}
}];
if (error) {
[self promiseRejectAuthException:reject error:error];
} else if (withData) {
[self promiseWithAuthResult:resolve rejecter:reject authResult:authResult];
} else {
[self promiseWithUser:resolve rejecter:reject user:authResult.user];
}
}];
} else {
[self promiseNoUser:resolve rejecter:reject isError:YES];
}
@ -1003,28 +1002,7 @@ RCT_EXPORT_METHOD(reauthenticateWithCredential:(NSString *) appDisplayName
authSecret:(NSString *) authSecret
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject) {
FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName];
FIRAuthCredential *credential = [self getCredentialForProvider:provider token:authToken secret:authSecret];
if (credential == nil) {
return reject(@"auth/invalid-credential", @"The supplied auth credential is malformed, has expired or is not currently supported.", nil);
}
FIRUser *user = [FIRAuth authWithApp:firApp].currentUser;
if (user) {
[user reauthenticateWithCredential:credential completion:^(NSError *_Nullable error) {
if (error) {
[self promiseRejectAuthException:reject error:error];
} else {
FIRUser *userAfterAuth = [FIRAuth authWithApp:firApp].currentUser;
[self promiseWithUser:resolve rejecter:reject user:userAfterAuth];
}
}];
} else {
[self promiseNoUser:resolve rejecter:reject isError:YES];
}
[self reauthenticateWithCredential:appDisplayName provider:provider authToken:authToken authSecret:authSecret withData:false resolver:resolve rejecter:reject];
}
/**
@ -1043,6 +1021,16 @@ RCT_EXPORT_METHOD(reauthenticateAndRetrieveDataWithCredential:(NSString *) appDi
authSecret:(NSString *) authSecret
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject) {
[self reauthenticateWithCredential:appDisplayName provider:provider authToken:authToken authSecret:authSecret withData:true resolver:resolve rejecter:reject];
}
-(void)reauthenticateWithCredential:(NSString *) appDisplayName
provider:(NSString *) provider
authToken:(NSString *) authToken
authSecret:(NSString *) authSecret
withData:(BOOL) withData
resolver:(RCTPromiseResolveBlock) resolve
rejecter:(RCTPromiseRejectBlock) reject {
FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName];
FIRAuthCredential *credential = [self getCredentialForProvider:provider token:authToken secret:authSecret];
@ -1057,8 +1045,10 @@ RCT_EXPORT_METHOD(reauthenticateAndRetrieveDataWithCredential:(NSString *) appDi
[user reauthenticateAndRetrieveDataWithCredential:credential completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
if (error) {
[self promiseRejectAuthException:reject error:error];
} else {
} else if (withData) {
[self promiseWithAuthResult:resolve rejecter:reject authResult:authResult];
} else {
[self promiseWithUser:resolve rejecter:reject user:authResult.user];
}
}];
} else {

View File

@ -164,7 +164,7 @@ RCT_EXPORT_METHOD(transactionBegin:(NSString *)appDisplayName
} else if ([type isEqualToString:@"set"]) {
NSDictionary *options = command[@"options"];
if (options && options[@"merge"]) {
[transaction setData:data forDocument:ref options:[FIRSetOptions merge]];
[transaction setData:data forDocument:ref merge:true];
} else {
[transaction setData:data forDocument:ref];
}
@ -280,7 +280,7 @@ RCT_EXPORT_METHOD(documentBatch:(NSString *)appDisplayName
} else if ([type isEqualToString:@"SET"]) {
NSDictionary *options = write[@"options"];
if (options && options[@"merge"]) {
batch = [batch setData:data forDocument:ref options:[FIRSetOptions merge]];
batch = [batch setData:data forDocument:ref merge:true];
} else {
batch = [batch setData:data forDocument:ref];
}

View File

@ -65,16 +65,14 @@ queryListenOptions:(NSDictionary *) queryListenOptions {
}
};
FIRQueryListenOptions *options = [[FIRQueryListenOptions alloc] init];
bool includeMetadataChanges;
if (queryListenOptions && queryListenOptions[@"includeMetadataChanges"]) {
[options includeDocumentMetadataChanges:true];
[options includeQueryMetadataChanges:true];
includeMetadataChanges = true;
} else {
[options includeDocumentMetadataChanges:false];
[options includeQueryMetadataChanges:false];
includeMetadataChanges = false;
}
id<FIRListenerRegistration> listener = [_query addSnapshotListenerWithOptions:options listener:listenerBlock];
id<FIRListenerRegistration> listener = [_query addSnapshotListenerWithIncludeMetadataChanges:includeMetadataChanges listener:listenerBlock];
_listeners[listenerId] = listener;
}
}

View File

@ -65,11 +65,13 @@ static NSMutableDictionary *_listeners;
[self handleDocumentSnapshotEvent:listenerId documentSnapshot:snapshot];
}
};
FIRDocumentListenOptions *options = [[FIRDocumentListenOptions alloc] init];
bool includeMetadataChanges;
if (docListenOptions && docListenOptions[@"includeMetadataChanges"]) {
[options includeMetadataChanges:TRUE];
includeMetadataChanges = true;
} else {
includeMetadataChanges = false;
}
id<FIRListenerRegistration> listener = [_ref addSnapshotListenerWithOptions:options listener:listenerBlock];
id<FIRListenerRegistration> listener = [_ref addSnapshotListenerWithIncludeMetadataChanges:includeMetadataChanges listener:listenerBlock];
_listeners[listenerId] = listener;
}
}
@ -80,7 +82,7 @@ static NSMutableDictionary *_listeners;
rejecter:(RCTPromiseRejectBlock) reject {
NSDictionary *dictionary = [RNFirebaseFirestoreDocumentReference parseJSMap:[RNFirebaseFirestore getFirestoreForApp:_appDisplayName] jsMap:data];
if (options && options[@"merge"]) {
[_ref setData:dictionary options:[FIRSetOptions merge] completion:^(NSError * _Nullable error) {
[_ref setData:dictionary merge:true completion:^(NSError * _Nullable error) {
[RNFirebaseFirestoreDocumentReference handleWriteResponse:error resolver:resolve rejecter:reject];
}];
} else {

View File

@ -118,7 +118,11 @@ RCT_EXPORT_METHOD(downloadFile:(NSString *) appDisplayName
rejecter:(RCTPromiseRejectBlock) reject) {
FIRStorageReference *fileRef = [self getReference:path appDisplayName:appDisplayName];
NSURL *localFile = [NSURL fileURLWithPath:localPath];
FIRStorageDownloadTask *downloadTask = [fileRef writeToFile:localFile];
__block FIRStorageDownloadTask *downloadTask;
dispatch_sync(dispatch_get_main_queue(), ^{
downloadTask = [fileRef writeToFile:localFile];
});
// listen for state changes, errors, and completion of the download.
[downloadTask observeStatus:FIRStorageTaskStatusResume handler:^(FIRStorageTaskSnapshot *snapshot) {
@ -293,13 +297,19 @@ RCT_EXPORT_METHOD(putFile:(NSString *) appDisplayName
- (void)uploadFile:(NSString *)appDisplayName url:(NSURL *)url firmetadata:(FIRStorageMetadata *)firmetadata path:(NSString *)path resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject {
FIRStorageReference *fileRef = [self getReference:path appDisplayName:appDisplayName];
FIRStorageUploadTask *uploadTask = [fileRef putFile:url metadata:firmetadata];
__block FIRStorageUploadTask *uploadTask;
dispatch_sync(dispatch_get_main_queue(), ^{
uploadTask = [fileRef putFile:url metadata:firmetadata];
});
[self addUploadObservers:appDisplayName uploadTask:uploadTask path:path resolver:resolve rejecter:reject];
}
- (void)uploadData:(NSString *)appDisplayName data:(NSData *)data firmetadata:(FIRStorageMetadata *)firmetadata path:(NSString *)path resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject {
FIRStorageReference *fileRef = [self getReference:path appDisplayName:appDisplayName];
FIRStorageUploadTask *uploadTask = [fileRef putData:data metadata:firmetadata];
__block FIRStorageUploadTask *uploadTask;
dispatch_sync(dispatch_get_main_queue(), ^{
uploadTask = [fileRef putData:data metadata:firmetadata];
});
[self addUploadObservers:appDisplayName uploadTask:uploadTask path:path resolver:resolve rejecter:reject];
}
@ -307,27 +317,31 @@ RCT_EXPORT_METHOD(putFile:(NSString *) appDisplayName
// listen for state changes, errors, and completion of the upload.
[uploadTask observeStatus:FIRStorageTaskStatusResume handler:^(FIRStorageTaskSnapshot *snapshot) {
// upload resumed, also fires when the upload starts
NSDictionary *event = [self getUploadTaskAsDictionary:snapshot];
[self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_STATE_CHANGED props:event];
[self getUploadTaskAsDictionary:snapshot handler:^(NSDictionary *event) {
[self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_STATE_CHANGED props:event];
}];
}];
[uploadTask observeStatus:FIRStorageTaskStatusPause handler:^(FIRStorageTaskSnapshot *snapshot) {
// upload paused
NSDictionary *event = [self getUploadTaskAsDictionary:snapshot];
[self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_STATE_CHANGED props:event];
[self getUploadTaskAsDictionary:snapshot handler:^(NSDictionary *event) {
[self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_STATE_CHANGED props:event];
}];
}];
[uploadTask observeStatus:FIRStorageTaskStatusProgress handler:^(FIRStorageTaskSnapshot *snapshot) {
// upload reported progress
NSDictionary *event = [self getUploadTaskAsDictionary:snapshot];
[self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_STATE_CHANGED props:event];
[self getUploadTaskAsDictionary:snapshot handler:^(NSDictionary *event) {
[self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_STATE_CHANGED props:event];
}];
}];
[uploadTask observeStatus:FIRStorageTaskStatusSuccess handler:^(FIRStorageTaskSnapshot *snapshot) {
// upload completed successfully
NSDictionary *resp = [self getUploadTaskAsDictionary:snapshot];
[self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_STATE_CHANGED props:resp];
[self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_UPLOAD_SUCCESS props:resp];
resolve(resp);
[self getUploadTaskAsDictionary:snapshot handler:^(NSDictionary *event) {
[self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_STATE_CHANGED props:event];
[self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_UPLOAD_SUCCESS props:event];
resolve(event);
}];
}];
[uploadTask observeStatus:FIRStorageTaskStatusFailure handler:^(FIRStorageTaskSnapshot *snapshot) {
@ -352,10 +366,14 @@ RCT_EXPORT_METHOD(putFile:(NSString *) appDisplayName
return @{@"bytesTransferred": @(task.progress.completedUnitCount), @"ref": task.reference.fullPath, @"state": [self getTaskStatus:task.status], @"totalBytes": @(task.progress.totalUnitCount)};
}
- (NSDictionary *)getUploadTaskAsDictionary:(FIRStorageTaskSnapshot *)task {
NSString *downloadUrl = [task.metadata.downloadURL absoluteString];
NSDictionary *metadata = [task.metadata dictionaryRepresentation];
return @{@"bytesTransferred": @(task.progress.completedUnitCount), @"downloadURL": downloadUrl != nil ? downloadUrl : [NSNull null], @"metadata": metadata != nil ? metadata : [NSNull null], @"ref": task.reference.fullPath, @"state": [self getTaskStatus:task.status], @"totalBytes": @(task.progress.totalUnitCount)};
- (void)getUploadTaskAsDictionary:(FIRStorageTaskSnapshot *)task
handler:(void(^)(NSDictionary *))handler {
[[task reference] downloadURLWithCompletion:^(NSURL * _Nullable URL, NSError * _Nullable error) {
NSString *downloadUrl = [URL absoluteString];
NSDictionary *metadata = [task.metadata dictionaryRepresentation];
NSDictionary *dictionary = @{@"bytesTransferred": @(task.progress.completedUnitCount), @"downloadURL": downloadUrl != nil ? downloadUrl : [NSNull null], @"metadata": metadata != nil ? metadata : [NSNull null], @"ref": task.reference.fullPath, @"state": [self getTaskStatus:task.status], @"totalBytes": @(task.progress.totalUnitCount)};
handler(dictionary);
}];
}
- (FIRStorageMetadata *)buildMetadataFromMap:(NSDictionary *)metadata {

View File

@ -21,7 +21,7 @@ target 'ReactNativeFirebaseDemo' do
pod 'Firebase/AdMob'
pod 'Firebase/Auth'
pod 'Firebase/Core', '~> 4.13.0'
pod 'Firebase/Core'
pod 'Firebase/Crash'
pod 'Firebase/Database'
pod 'Firebase/DynamicLinks'

View File

@ -10,79 +10,84 @@ PODS:
- Fabric (~> 1.7.5)
- DoubleConversion (1.1.5)
- Fabric (1.7.6)
- Firebase/AdMob (4.13.0):
- Firebase/AdMob (5.0.1):
- Firebase/Core
- Google-Mobile-Ads-SDK (= 7.30.0)
- Firebase/Auth (4.13.0):
- Firebase/Auth (5.0.1):
- Firebase/CoreOnly
- FirebaseAuth (= 5.0.0)
- Firebase/Core (5.0.1):
- Firebase/CoreOnly
- FirebaseAnalytics (= 5.0.0)
- Firebase/CoreOnly (5.0.1):
- FirebaseCore (= 5.0.1)
- Firebase/Crash (5.0.1):
- Firebase/Core
- FirebaseAuth (= 4.6.1)
- Firebase/Core (4.13.0):
- FirebaseAnalytics (= 4.2.0)
- FirebaseCore (= 4.0.20)
- Firebase/Crash (4.13.0):
- FirebaseCrash (= 3.0.0)
- Firebase/Database (5.0.1):
- Firebase/CoreOnly
- FirebaseDatabase (= 5.0.0)
- Firebase/DynamicLinks (5.0.1):
- Firebase/Core
- FirebaseCrash (= 2.0.2)
- Firebase/Database (4.13.0):
- FirebaseDynamicLinks (= 3.0.0)
- Firebase/Firestore (5.0.1):
- Firebase/CoreOnly
- FirebaseFirestore (= 0.12.1)
- Firebase/Invites (5.0.1):
- Firebase/Core
- FirebaseDatabase (= 4.1.5)
- Firebase/DynamicLinks (4.13.0):
- FirebaseInvites (= 3.0.0)
- Firebase/Messaging (5.0.1):
- Firebase/CoreOnly
- FirebaseMessaging (= 3.0.0)
- Firebase/Performance (5.0.1):
- Firebase/Core
- FirebaseDynamicLinks (= 2.3.2)
- Firebase/Firestore (4.13.0):
- FirebasePerformance (= 2.0.0)
- Firebase/RemoteConfig (5.0.1):
- Firebase/Core
- FirebaseFirestore (= 0.11.0)
- Firebase/Invites (4.13.0):
- Firebase/Core
- FirebaseInvites (= 2.0.2)
- Firebase/Messaging (4.13.0):
- Firebase/Core
- FirebaseMessaging (= 2.2.0)
- Firebase/Performance (4.13.0):
- Firebase/Core
- FirebasePerformance (= 1.1.3)
- Firebase/RemoteConfig (4.13.0):
- Firebase/Core
- FirebaseRemoteConfig (= 2.1.3)
- Firebase/Storage (4.13.0):
- Firebase/Core
- FirebaseStorage (= 2.2.0)
- FirebaseABTesting (1.0.0):
- FirebaseCore (~> 4.0)
- Protobuf (~> 3.1)
- FirebaseAnalytics (4.2.0):
- FirebaseCore (~> 4.0)
- FirebaseInstanceID (~> 2.0)
- FirebaseRemoteConfig (= 3.0.0)
- Firebase/Storage (5.0.1):
- Firebase/CoreOnly
- FirebaseStorage (= 3.0.0)
- FirebaseABTesting (2.0.0):
- FirebaseCore (~> 5.0)
- Protobuf (~> 3.5)
- FirebaseAnalytics (5.0.0):
- FirebaseCore (~> 5.0)
- FirebaseInstanceID (~> 3.0)
- GoogleToolboxForMac/NSData+zlib (~> 2.1)
- nanopb (~> 0.3)
- FirebaseAuth (4.6.1):
- FirebaseAnalytics (~> 4.2)
- GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)
- FirebaseAuth (5.0.0):
- FirebaseCore (~> 5.0)
- GTMSessionFetcher/Core (~> 1.1)
- FirebaseCore (4.0.20):
- FirebaseCore (5.0.1):
- GoogleToolboxForMac/NSData+zlib (~> 2.1)
- FirebaseCrash (2.0.2):
- FirebaseAnalytics (~> 4.0)
- FirebaseInstanceID (~> 2.0)
- FirebaseCrash (3.0.0):
- FirebaseAnalytics (~> 5.0)
- FirebaseInstanceID (~> 3.0)
- GoogleToolboxForMac/Logger (~> 2.1)
- GoogleToolboxForMac/NSData+zlib (~> 2.1)
- Protobuf (~> 3.1)
- FirebaseDatabase (4.1.5):
- FirebaseAnalytics (~> 4.1)
- FirebaseCore (~> 4.0)
- Protobuf (~> 3.5)
- FirebaseDatabase (5.0.0):
- FirebaseCore (~> 5.0)
- leveldb-library (~> 1.18)
- FirebaseDynamicLinks (2.3.2):
- FirebaseAnalytics (~> 4.0)
- FirebaseFirestore (0.11.0):
- FirebaseAnalytics (~> 4.1)
- FirebaseCore (~> 4.0)
- FirebaseDynamicLinks (3.0.0):
- FirebaseAnalytics (~> 5.0)
- FirebaseFirestore (0.12.1):
- FirebaseCore (~> 5.0)
- FirebaseFirestore/abseil-cpp (= 0.12.1)
- gRPC-ProtoRPC (~> 1.0)
- leveldb-library (~> 1.18)
- Protobuf (~> 3.5)
- FirebaseInstanceID (2.0.10):
- FirebaseCore (~> 4.0)
- FirebaseInvites (2.0.2):
- FirebaseAnalytics (~> 4.0)
- FirebaseDynamicLinks (~> 2.2)
- Protobuf (~> 3.1)
- FirebaseFirestore/abseil-cpp (0.12.1):
- FirebaseCore (~> 5.0)
- gRPC-ProtoRPC (~> 1.0)
- leveldb-library (~> 1.18)
- Protobuf (~> 3.1)
- FirebaseInstanceID (3.0.0):
- FirebaseCore (~> 5.0)
- FirebaseInvites (3.0.0):
- FirebaseAnalytics (~> 5.0)
- FirebaseDynamicLinks (~> 3.0)
- GoogleAPIClientForREST (~> 1.0)
- GoogleSignIn (~> 4.1)
- GoogleToolboxForMac/Logger (~> 2.1)
@ -93,36 +98,34 @@ PODS:
- GTMOAuth2 (~> 1.0)
- GTMSessionFetcher/Core (~> 1.1)
- GTMSessionFetcher/Full (~> 1.1)
- Protobuf (~> 3.5)
- FirebaseMessaging (3.0.0):
- FirebaseCore (~> 5.0)
- FirebaseInstanceID (~> 3.0)
- GoogleToolboxForMac/Logger (~> 2.1)
- Protobuf (~> 3.1)
- FirebaseMessaging (2.2.0):
- FirebaseAnalytics (~> 4.1)
- FirebaseCore (~> 4.0)
- FirebaseInstanceID (~> 2.0)
- GoogleToolboxForMac/Logger (~> 2.1)
- Protobuf (~> 3.5)
- FirebasePerformance (1.1.3):
- FirebaseAnalytics (~> 4.1)
- FirebaseInstanceID (~> 2.0)
- FirebaseSwizzlingUtilities/ISASwizzling (~> 1.0)
- FirebaseSwizzlingUtilities/MethodSwizzling (~> 1.0)
- FirebasePerformance (2.0.0):
- FirebaseAnalytics (~> 5.0)
- FirebaseInstanceID (~> 3.0)
- FirebaseSwizzlingUtilities/ISASwizzling (~> 2.0)
- FirebaseSwizzlingUtilities/MethodSwizzling (~> 2.0)
- GoogleToolboxForMac/Logger (~> 2.1)
- GoogleToolboxForMac/NSData+zlib (~> 2.1)
- GTMSessionFetcher/Core (~> 1.1)
- Protobuf (~> 3.5)
- FirebaseRemoteConfig (2.1.3):
- FirebaseABTesting (~> 1.0)
- FirebaseAnalytics (~> 4.1)
- FirebaseCore (~> 4.0)
- FirebaseInstanceID (~> 2.0)
- FirebaseRemoteConfig (3.0.0):
- FirebaseABTesting (~> 2.0)
- FirebaseAnalytics (~> 5.0)
- FirebaseCore (~> 5.0)
- FirebaseInstanceID (~> 3.0)
- GoogleToolboxForMac/NSData+zlib (~> 2.1)
- Protobuf (~> 3.5)
- FirebaseStorage (2.2.0):
- FirebaseAnalytics (~> 4.1)
- FirebaseCore (~> 4.0)
- FirebaseStorage (3.0.0):
- FirebaseCore (~> 5.0)
- GTMSessionFetcher/Core (~> 1.1)
- FirebaseSwizzlingUtilities/ISASwizzling (1.0.1)
- FirebaseSwizzlingUtilities/MethodSwizzling (1.0.1):
- FirebaseCore (~> 4.0)
- FirebaseSwizzlingUtilities/ISASwizzling (2.0.0)
- FirebaseSwizzlingUtilities/MethodSwizzling (2.0.0):
- FirebaseCore (~> 5.0)
- Folly (2016.09.26.00):
- boost-for-react-native
- DoubleConversion
@ -232,7 +235,7 @@ DEPENDENCIES:
- Fabric (~> 1.7.5)
- Firebase/AdMob
- Firebase/Auth
- Firebase/Core (~> 4.13.0)
- Firebase/Core
- Firebase/Crash
- Firebase/Database
- Firebase/DynamicLinks
@ -264,22 +267,22 @@ SPEC CHECKSUMS:
Crashlytics: aee1a064cbbf99b32efa3f056a5f458d846bc8ff
DoubleConversion: e22e0762848812a87afd67ffda3998d9ef29170c
Fabric: f8d42c893bb187326a7968b62abe55c36a987a46
Firebase: 5ec5e863d269d82d66b4bf56856726f8fb8f0fb3
FirebaseABTesting: d07d0ee833b842d5153549e4c7e2e2cb1c23a3f9
FirebaseAnalytics: 7ef69e76a5142f643aeb47c780e1cdce4e23632e
FirebaseAuth: bf22cacf22c60ab454bf2636f556d8892b10b53f
FirebaseCore: 90cb1c53d69b556f112a1bf72b5fcfaad7650790
FirebaseCrash: a7d980468dc8aa2db9792493c3e02722d601f6ab
FirebaseDatabase: 5f0bc6134c5c237cf55f9e1249d406770a75eafd
FirebaseDynamicLinks: 38b68641d24e78d0277a9205d988ce22875d5a25
FirebaseFirestore: e92a096ce80c7b4b905d4e9d41dbd944adc9d2a5
FirebaseInstanceID: 8d20d890d65c917f9f7d9950b6e10a760ad34321
FirebaseInvites: ae15e0636f9eb42bdf5c1ef4c8f7bd4a88f9878b
FirebaseMessaging: 75cdb862e86c30e0913a2ff307e48d49357c5b73
FirebasePerformance: 85bdc3f3d630deb629e85695fcab23364d68f5db
FirebaseRemoteConfig: 3e95fb7c072308492e85fa41d59d38b3d6fd2372
FirebaseStorage: 0c223481c8f89ed300cf1239ddd2d9833622c65f
FirebaseSwizzlingUtilities: 6006111d30248d2321ffac0231e246663e704ea3
Firebase: d6861c2059d8c32d1e6dd8932e22ada346d90a3a
FirebaseABTesting: 1f50b8d50f5e3469eea54e7463a7b7fe221d1f5e
FirebaseAnalytics: 19812b49fa5f283dd6b23edf8a14b5d477029ab8
FirebaseAuth: acbeef02fe7c3a26624e309849f3fe30c84115af
FirebaseCore: cafc814b2d84fc8733f09e653041cc2165332ad7
FirebaseCrash: 8900571fd763fd5bdda04522ec53da979456e3ce
FirebaseDatabase: 697eb53e5b4fe7cd4fa8756c1f82a9fca011345f
FirebaseDynamicLinks: c70e8ef2f267f13459db89b8816b13a06b2278d2
FirebaseFirestore: f686b8e83f3cf8bbc37db6e98e01029a14f01f55
FirebaseInstanceID: 83e0040351565df711a5db3d8ebe5ea21aca998a
FirebaseInvites: d7534f94d0610b892bac8ee0cf4218a14be46c28
FirebaseMessaging: f2360a966ecfb0d14facf0fbdf306efc2df0ddbe
FirebasePerformance: 1ec6c40e5dad2543ca4c4f25d15168bde6322c2c
FirebaseRemoteConfig: 3c57e4644bd6976b671ae0b725cd709f198bd1f5
FirebaseStorage: 7ca4bb7b58a25fa647b04f524033fc7cb7eb272b
FirebaseSwizzlingUtilities: 6c22677c50d0b6f5f0dc637c1233f13694a3003f
Folly: 211775e49d8da0ca658aebc8eab89d642935755c
glog: 1de0bb937dccdc981596d3b5825ebfb765017ded
Google-Mobile-Ads-SDK: 7404f68120ae8682afeb5af001fbf4aad731c78e
@ -299,6 +302,6 @@ SPEC CHECKSUMS:
RNFirebase: 2b25fd2e60269f26bb0a76c71dcc942b35a77df0
yoga: 55da126afc384965b96bff46652464373b330add
PODFILE CHECKSUM: a735e7f8f0a5379462d2f204447550e182793a34
PODFILE CHECKSUM: b776d6f4d08bbd51cda6d929b57bfaa8031e7ead
COCOAPODS: 1.4.0