Skip to content

Commit 65ec051

Browse files
FIS: Complex unrecoverable error handling reverted and replaced by a simple log message. (#4120)
* Revert "FIS: stored registration error timeout (#4032)" This reverts commit 37747db. * Revert "FirebaseInstallations: CreateInstallation API request error handling (#4024)" This reverts commit 27384c0. * Complex unrecoverable error handling reverted and replaced by a simple log message.
1 parent 0f2a0bf commit 65ec051

23 files changed

+24
-758
lines changed

FirebaseInstallations/Source/Library/FIRInstallationsItem.h

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020

2121
@class FIRInstallationsStoredItem;
2222
@class FIRInstallationsStoredAuthToken;
23-
@class FIRInstallationsStoredRegistrationError;
24-
@class FIRInstallationsStoredRegistrationParameters;
2523
@class FIRInstallationsStoredIIDCheckin;
2624

2725
NS_ASSUME_NONNULL_BEGIN
@@ -46,8 +44,6 @@ NS_ASSUME_NONNULL_BEGIN
4644
@property(nonatomic, nullable) FIRInstallationsStoredAuthToken *authToken;
4745
@property(nonatomic, assign) FIRInstallationsStatus registrationStatus;
4846

49-
@property(nonatomic, nullable) FIRInstallationsStoredRegistrationError *registrationError;
50-
5147
/// Instance ID checkin data imported from IID checkin store as a part of IID migration.
5248
@property(nonatomic, nullable) FIRInstallationsStoredIIDCheckin *IIDCheckin;
5349

@@ -85,17 +81,6 @@ NS_ASSUME_NONNULL_BEGIN
8581
*/
8682
+ (NSString *)generateFID;
8783

88-
/**
89-
* Updates `registrationStatus` and `registrationError` accordingly.
90-
* @param error The error for the Installation Registration API request.
91-
* @param date The date when the error occurred.
92-
* @param registrationParameters The parameters used for the Installation Registration API request.
93-
*/
94-
- (void)updateWithRegistrationError:(NSError *)error
95-
date:(NSDate *)date
96-
registrationParameters:
97-
(FIRInstallationsStoredRegistrationParameters *)registrationParameters;
98-
9984
@end
10085

10186
NS_ASSUME_NONNULL_END

FirebaseInstallations/Source/Library/FIRInstallationsItem.m

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
#import "FIRInstallationsStoredAuthToken.h"
2020
#import "FIRInstallationsStoredItem.h"
21-
#import "FIRInstallationsStoredRegistrationError.h"
2221

2322
@implementation FIRInstallationsItem
2423

@@ -47,7 +46,6 @@ - (void)updateWithStoredItem:(FIRInstallationsStoredItem *)item {
4746
self.refreshToken = item.refreshToken;
4847
self.authToken = item.authToken;
4948
self.registrationStatus = item.registrationStatus;
50-
self.registrationError = item.registrationError;
5149
self.IIDCheckin = item.IIDCheckin;
5250
}
5351

@@ -57,7 +55,6 @@ - (FIRInstallationsStoredItem *)storedItem {
5755
storedItem.refreshToken = self.refreshToken;
5856
storedItem.authToken = self.authToken;
5957
storedItem.registrationStatus = self.registrationStatus;
60-
storedItem.registrationError = self.registrationError;
6158
storedItem.IIDCheckin = self.IIDCheckin;
6259
return storedItem;
6360
}
@@ -104,17 +101,4 @@ + (NSString *)base64URLEncodedStringWithData:(NSData *)data {
104101
return string;
105102
}
106103

107-
- (void)updateWithRegistrationError:(NSError *)error
108-
date:(NSDate *)date
109-
registrationParameters:
110-
(FIRInstallationsStoredRegistrationParameters *)registrationParameters {
111-
self.registrationStatus = FIRInstallationStatusRegistrationFailed;
112-
self.registrationError = [[FIRInstallationsStoredRegistrationError alloc]
113-
initWithRegistrationParameters:registrationParameters
114-
date:date
115-
APIError:error];
116-
self.authToken = nil;
117-
self.refreshToken = nil;
118-
}
119-
120104
@end

FirebaseInstallations/Source/Library/FIRInstallationsLogger.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,6 @@ extern NSString *const kFIRInstallationsMessageCodeInstallationCoderVersionMisma
4343
// FIRInstallationsStoredAuthToken.m
4444
extern NSString *const kFIRInstallationsMessageCodeAuthTokenCoderVersionMismatch;
4545

46-
// FIRInstallationsStoredRegistrationError.m
47-
extern NSString *const kFIRInstallationsMessageCodeRegistrationErrorCoderVersionMismatch;
48-
extern NSString *const kFIRInstallationsMessageCodeRegistrationErrorFailedToDecode;
49-
50-
// FIRInstallationsStoredRegistrationParameters.m
51-
extern NSString *const kFIRInstallationsMessageCodeRegistrationParametersCoderVersionMismatch;
52-
5346
// FIRInstallationsStoredIIDCheckin.m
5447
extern NSString *const kFIRInstallationsMessageCodeIIDCheckinCoderVersionMismatch;
5548
extern NSString *const kFIRInstallationsMessageCodeIIDCheckinFailedToDecode;

FirebaseInstallations/Source/Library/FIRInstallationsLogger.m

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,6 @@
4141
// FIRInstallationsStoredAuthToken.m
4242
NSString *const kFIRInstallationsMessageCodeAuthTokenCoderVersionMismatch = @"I-FIS004000";
4343

44-
// FIRInstallationsStoredRegistrationError.m
45-
NSString *const kFIRInstallationsMessageCodeRegistrationErrorCoderVersionMismatch = @"I-FIS005000";
46-
NSString *const kFIRInstallationsMessageCodeRegistrationErrorFailedToDecode = @"I-FIS005001";
47-
48-
// FIRInstallationsStoredRegistrationParameters.m
49-
NSString *const kFIRInstallationsMessageCodeRegistrationParametersCoderVersionMismatch =
50-
@"I-FIS006000";
51-
5244
// FIRInstallationsStoredIIDCheckin.m
5345
NSString *const kFIRInstallationsMessageCodeIIDCheckinCoderVersionMismatch = @"I-FIS007000";
5446
NSString *const kFIRInstallationsMessageCodeIIDCheckinFailedToDecode = @"I-FIS007001";

FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,6 @@ NS_ASSUME_NONNULL_BEGIN
2626
*/
2727
@interface FIRInstallationsAPIService : NSObject
2828

29-
@property(nonatomic, readonly) NSString *APIKey;
30-
@property(nonatomic, readonly) NSString *projectID;
31-
3229
/**
3330
* The default initializer.
3431
* @param APIKey The Firebase project API key (see `FIROptions.APIKey`).

FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.m

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ - (instancetype)initWithResponse:(NSHTTPURLResponse *)response data:(nullable NS
5757

5858
@interface FIRInstallationsAPIService ()
5959
@property(nonatomic, readonly) NSURLSession *URLSession;
60+
@property(nonatomic, readonly) NSString *APIKey;
61+
@property(nonatomic, readonly) NSString *projectID;
6062
@end
6163

6264
NS_ASSUME_NONNULL_END

FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.m

Lines changed: 12 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,11 @@
3232
#import "FIRInstallationsLogger.h"
3333
#import "FIRInstallationsSingleOperationPromiseCache.h"
3434
#import "FIRInstallationsStore.h"
35-
#import "FIRInstallationsStoredIIDCheckin.h"
3635
#import "FIRSecureStorage.h"
3736

3837
#import "FIRInstallationsHTTPError.h"
3938
#import "FIRInstallationsStoredAuthToken.h"
40-
#import "FIRInstallationsStoredRegistrationError.h"
41-
#import "FIRInstallationsStoredRegistrationParameters.h"
39+
#import "FIRInstallationsStoredIIDCheckin.h"
4240

4341
const NSNotificationName FIRInstallationIDDidChangeNotification =
4442
@"FIRInstallationIDDidChangeNotification";
@@ -47,8 +45,6 @@
4745

4846
NSTimeInterval const kFIRInstallationsTokenExpirationThreshold = 60 * 60; // 1 hour.
4947

50-
NSTimeInterval const kFIRInstallationsRegistrationErrorTimeout = 24 * 60 * 60; // 1 day.
51-
5248
@interface FIRInstallationsIDController ()
5349
@property(nonatomic, readonly) NSString *appID;
5450
@property(nonatomic, readonly) NSString *appName;
@@ -149,22 +145,9 @@ - (instancetype)initWithGoogleAppID:(NSString *)appID
149145
__PRETTY_FUNCTION__, self.appName);
150146

151147
FBLPromise<FIRInstallationsItem *> *installationItemPromise =
152-
[self getStoredInstallation]
153-
.recover(^id(NSError *error) {
154-
return [self createAndSaveFID];
155-
})
156-
.then(^id(FIRInstallationsItem *installation) {
157-
// Validate if a previous registration attempt failed with an error requiring Firebase
158-
// configuration changes.
159-
if (installation.registrationStatus == FIRInstallationStatusRegistrationFailed &&
160-
[self isRegistrationErrorWithDateUpToDate:installation.registrationError.date] &&
161-
[self areInstallationRegistrationParametersEqualToCurrent:
162-
installation.registrationError.registrationParameters]) {
163-
return installation.registrationError.APIError;
164-
}
165-
166-
return installation;
167-
});
148+
[self getStoredInstallation].recover(^id(NSError *error) {
149+
return [self createAndSaveFID];
150+
});
168151

169152
// Initiate registration process on success if needed, but return the installation without waiting
170153
// for it.
@@ -183,7 +166,6 @@ - (instancetype)initWithGoogleAppID:(NSString *)appID
183166
switch (installation.registrationStatus) {
184167
case FIRInstallationStatusUnregistered:
185168
case FIRInstallationStatusRegistered:
186-
case FIRInstallationStatusRegistrationFailed:
187169
isValid = YES;
188170
break;
189171

@@ -249,19 +231,6 @@ - (FIRInstallationsItem *)createInstallationWithFID:(NSString *)FID
249231
return installation;
250232
}
251233

252-
- (BOOL)areInstallationRegistrationParametersEqualToCurrent:
253-
(FIRInstallationsStoredRegistrationParameters *)parameters {
254-
NSString *APIKey = self.APIService.APIKey;
255-
NSString *projectID = self.APIService.projectID;
256-
return (parameters.APIKey == APIKey || [parameters.APIKey isEqual:APIKey]) &&
257-
(parameters.projectID == projectID || [parameters.projectID isEqual:projectID]);
258-
}
259-
260-
- (BOOL)isRegistrationErrorWithDateUpToDate:(NSDate *)errorDate {
261-
return errorDate != nil &&
262-
-[errorDate timeIntervalSinceNow] <= kFIRInstallationsRegistrationErrorTimeout;
263-
}
264-
265234
#pragma mark - FID registration
266235

267236
- (FBLPromise<FIRInstallationsItem *> *)registerInstallationIfNeeded:
@@ -273,14 +242,19 @@ - (BOOL)isRegistrationErrorWithDateUpToDate:(NSDate *)errorDate {
273242

274243
case FIRInstallationStatusUnknown:
275244
case FIRInstallationStatusUnregistered:
276-
case FIRInstallationStatusRegistrationFailed:
277245
// Registration required. Proceed.
278246
break;
279247
}
280248

281249
return [self.APIService registerInstallation:installation]
282-
.recover(^id(NSError *error) {
283-
return [self handleRegistrationRequestError:error installation:installation];
250+
.catch(^(NSError *_Nonnull error) {
251+
if ([self doesRegistrationErrorRequireConfigChange:error]) {
252+
FIRLogError(kFIRLoggerInstallations,
253+
kFIRInstallationsMessageCodeInvalidFirebaseConfiguration,
254+
@"Firebase Installation registration failed for app with name: %@, error: "
255+
@"%@\nPlease make sure you use valid GoogleService-Info.plist",
256+
self.appName, error);
257+
}
284258
})
285259
.then(^id(FIRInstallationsItem *registeredInstallation) {
286260
// Expected successful result: @[FIRInstallationsItem *registeredInstallation, NSNull]
@@ -299,32 +273,6 @@ - (BOOL)isRegistrationErrorWithDateUpToDate:(NSDate *)errorDate {
299273
});
300274
}
301275

302-
- (FBLPromise<FIRInstallationsItem *> *)handleRegistrationRequestError:(NSError *)error
303-
installation:
304-
(FIRInstallationsItem *)installation {
305-
if ([self doesRegistrationErrorRequireConfigChange:error]) {
306-
FIRLogError(kFIRLoggerInstallations, kFIRInstallationsMessageCodeInvalidFirebaseConfiguration,
307-
@"Firebase Installation registration failed for app with name: %@, error: "
308-
@"%@\nPlease make sure you use valid GoogleService-Info.plist",
309-
self.appName, error);
310-
311-
FIRInstallationsItem *failedInstallation = [installation copy];
312-
[failedInstallation updateWithRegistrationError:error
313-
date:[NSDate date]
314-
registrationParameters:[self currentRegistrationParameters]];
315-
316-
// Save the error and then fail with the API error.
317-
return
318-
[self.installationsStore saveInstallation:failedInstallation].then(^NSError *(id result) {
319-
return error;
320-
});
321-
}
322-
323-
FBLPromise *errorPromise = [FBLPromise pendingPromise];
324-
[errorPromise reject:error];
325-
return errorPromise;
326-
}
327-
328276
- (BOOL)doesRegistrationErrorRequireConfigChange:(NSError *)error {
329277
FIRInstallationsHTTPError *HTTPError = (FIRInstallationsHTTPError *)error;
330278
if (![HTTPError isKindOfClass:[FIRInstallationsHTTPError class]]) {
@@ -344,12 +292,6 @@ - (BOOL)doesRegistrationErrorRequireConfigChange:(NSError *)error {
344292
}
345293
}
346294

347-
- (FIRInstallationsStoredRegistrationParameters *)currentRegistrationParameters {
348-
return [[FIRInstallationsStoredRegistrationParameters alloc]
349-
initWithAPIKey:self.APIService.APIKey
350-
projectID:self.APIService.projectID];
351-
}
352-
353295
#pragma mark - Auth Token
354296

355297
- (FBLPromise<FIRInstallationsItem *> *)getAuthTokenForcingRefresh:(BOOL)forceRefresh {
@@ -455,7 +397,6 @@ - (id)regenerateFIDOnRefreshTokenErrorIfNeeded:(NSError *)error {
455397
switch (installation.registrationStatus) {
456398
case FIRInstallationStatusUnknown:
457399
case FIRInstallationStatusUnregistered:
458-
case FIRInstallationStatusRegistrationFailed:
459400
// The installation is not registered, so it is safe to be deleted as is, so return early.
460401
return [FBLPromise resolvedWith:installation];
461402
break;

FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsStatus.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,4 @@ typedef NS_ENUM(NSInteger, FIRInstallationsStatus) {
3232
FIRInstallationStatusUnregistered,
3333
/// The Firebase Installation has successfully been registered with FIS.
3434
FIRInstallationStatusRegistered,
35-
/// The Firebase Installation registration with FIS failed. Firebase configuration changes are
36-
/// required.
37-
FIRInstallationStatusRegistrationFailed,
3835
};

FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
#import "FIRInstallationsStatus.h"
2020

2121
@class FIRInstallationsStoredAuthToken;
22-
@class FIRInstallationsStoredRegistrationError;
2322
@class FIRInstallationsStoredIIDCheckin;
2423

2524
NS_ASSUME_NONNULL_BEGIN
@@ -42,8 +41,6 @@ NS_ASSUME_NONNULL_BEGIN
4241
@property(nonatomic, nullable) FIRInstallationsStoredAuthToken *authToken;
4342
@property(nonatomic) FIRInstallationsStatus registrationStatus;
4443

45-
@property(nonatomic, nullable) FIRInstallationsStoredRegistrationError *registrationError;
46-
4744
/// Instance ID checkin data imported from IID checkin store as a part of IID migration.
4845
@property(nonatomic, nullable) FIRInstallationsStoredIIDCheckin *IIDCheckin;
4946

FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.m

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,11 @@
1919
#import "FIRInstallationsLogger.h"
2020
#import "FIRInstallationsStoredAuthToken.h"
2121
#import "FIRInstallationsStoredIIDCheckin.h"
22-
#import "FIRInstallationsStoredRegistrationError.h"
2322

2423
NSString *const kFIRInstallationsStoredItemFirebaseInstallationIDKey = @"firebaseInstallationID";
2524
NSString *const kFIRInstallationsStoredItemRefreshTokenKey = @"refreshToken";
2625
NSString *const kFIRInstallationsStoredItemAuthTokenKey = @"authToken";
2726
NSString *const kFIRInstallationsStoredItemRegistrationStatusKey = @"registrationStatus";
28-
NSString *const kFIRInstallationsStoredItemRegistrationErrorKey = @"registrationError";
2927
NSString *const kFIRInstallationsStoredItemIIDCheckinKey = @"IIDCheckin";
3028
NSString *const kFIRInstallationsStoredItemStorageVersionKey = @"storageVersion";
3129

@@ -44,8 +42,6 @@ - (void)encodeWithCoder:(nonnull NSCoder *)aCoder {
4442
[aCoder encodeObject:self.authToken forKey:kFIRInstallationsStoredItemAuthTokenKey];
4543
[aCoder encodeInteger:self.registrationStatus
4644
forKey:kFIRInstallationsStoredItemRegistrationStatusKey];
47-
[aCoder encodeObject:self.registrationError
48-
forKey:kFIRInstallationsStoredItemRegistrationErrorKey];
4945
[aCoder encodeObject:self.IIDCheckin forKey:kFIRInstallationsStoredItemIIDCheckinKey];
5046
[aCoder encodeInteger:self.storageVersion forKey:kFIRInstallationsStoredItemStorageVersionKey];
5147
}
@@ -71,9 +67,6 @@ - (nullable instancetype)initWithCoder:(nonnull NSCoder *)aDecoder {
7167
forKey:kFIRInstallationsStoredItemAuthTokenKey];
7268
item.registrationStatus =
7369
[aDecoder decodeIntegerForKey:kFIRInstallationsStoredItemRegistrationStatusKey];
74-
item.registrationError =
75-
[aDecoder decodeObjectOfClass:[FIRInstallationsStoredRegistrationError class]
76-
forKey:kFIRInstallationsStoredItemRegistrationErrorKey];
7770
item.IIDCheckin = [aDecoder decodeObjectOfClass:[FIRInstallationsStoredIIDCheckin class]
7871
forKey:kFIRInstallationsStoredItemIIDCheckinKey];
7972

0 commit comments

Comments
 (0)