diff --git a/FirebaseCore/Sources/FIRAnalyticsConfiguration.h b/FirebaseCore/Sources/FIRAnalyticsConfiguration.h index 6429ac70eac..9d2285ce270 100644 --- a/FirebaseCore/Sources/FIRAnalyticsConfiguration.h +++ b/FirebaseCore/Sources/FIRAnalyticsConfiguration.h @@ -33,20 +33,12 @@ static NSString *const kFIRAPersistedConfigMeasurementEnabledStateKey = static NSString *const kFIRAnalyticsConfigurationSetEnabledNotification = @"FIRAnalyticsConfigurationSetEnabledNotification"; -static NSString *const kFIRAnalyticsConfigurationSetMinimumSessionIntervalNotification = - @"FIRAnalyticsConfigurationSetMinimumSessionIntervalNotification"; -static NSString *const kFIRAnalyticsConfigurationSetSessionTimeoutIntervalNotification = - @"FIRAnalyticsConfigurationSetSessionTimeoutIntervalNotification"; @interface FIRAnalyticsConfiguration : NSObject /// Returns the shared instance of FIRAnalyticsConfiguration. + (FIRAnalyticsConfiguration *)sharedInstance; -// Sets whether analytics collection is enabled for this app on this device. This setting is -// persisted across app sessions. By default it is enabled. -- (void)setAnalyticsCollectionEnabled:(BOOL)analyticsCollectionEnabled; - /// Sets whether analytics collection is enabled for this app on this device, and a flag to persist /// the value or not. The setting should not be persisted if being set by the global data collection /// flag. diff --git a/FirebaseCore/Sources/FIRAnalyticsConfiguration.m b/FirebaseCore/Sources/FIRAnalyticsConfiguration.m index 07c786cb7dc..44132cbcf8a 100644 --- a/FirebaseCore/Sources/FIRAnalyticsConfiguration.m +++ b/FirebaseCore/Sources/FIRAnalyticsConfiguration.m @@ -39,10 +39,6 @@ - (void)postNotificationName:(NSString *)name value:(id)value { userInfo:@{name : value}]; } -- (void)setAnalyticsCollectionEnabled:(BOOL)analyticsCollectionEnabled { - [self setAnalyticsCollectionEnabled:analyticsCollectionEnabled persistSetting:YES]; -} - - (void)setAnalyticsCollectionEnabled:(BOOL)analyticsCollectionEnabled persistSetting:(BOOL)shouldPersist { // Persist the measurementEnabledState. Use FIRAnalyticsEnabledState values instead of YES/NO. diff --git a/FirebaseCore/Sources/FIRApp.m b/FirebaseCore/Sources/FIRApp.m index 702799c8114..b22a7d8c3f7 100644 --- a/FirebaseCore/Sources/FIRApp.m +++ b/FirebaseCore/Sources/FIRApp.m @@ -333,9 +333,9 @@ - (BOOL)configureCore { return NO; } - // Initialize the Analytics once there is a valid options under default app. Analytics should - // always initialize first by itself before the other SDKs. - if ([self.name isEqualToString:kFIRDefaultAppName]) { + static dispatch_once_t analyticsSetupOnceToken; + dispatch_once(&analyticsSetupOnceToken, ^{ + // Analytics is initialized only once and for the first app configured. Class firAnalyticsClass = NSClassFromString(@"FIRAnalytics"); if (firAnalyticsClass) { #pragma clang diagnostic push @@ -352,7 +352,7 @@ - (BOOL)configureCore { #pragma clang diagnostic pop } } - } + }); [self subscribeForAppDidBecomeActiveNotifications]; @@ -448,26 +448,6 @@ + (void)sendNotificationsToSDKs:(FIRApp *)app { userInfo:appInfoDict]; } -+ (NSError *)errorForMissingOptions { - NSDictionary *errorDict = @{ - NSLocalizedDescriptionKey : - @"Unable to parse GoogleService-Info.plist in order to configure services.", - NSLocalizedRecoverySuggestionErrorKey : - @"Check formatting and location of GoogleService-Info.plist." - }; - return [NSError errorWithDomain:kFirebaseCoreErrorDomain code:-100 userInfo:errorDict]; -} - -+ (NSError *)errorForInvalidAppID { - NSDictionary *errorDict = @{ - NSLocalizedDescriptionKey : @"Unable to validate Google App ID", - NSLocalizedRecoverySuggestionErrorKey : - @"Check formatting and location of GoogleService-Info.plist or GoogleAppID set in the " - @"customized options." - }; - return [NSError errorWithDomain:kFirebaseCoreErrorDomain code:-101 userInfo:errorDict]; -} - + (BOOL)isDefaultAppConfigured { return (sDefaultApp != nil); } diff --git a/FirebaseCore/Sources/FIROptions.m b/FirebaseCore/Sources/FIROptions.m index bfaeff1620e..a73f1c5bf55 100644 --- a/FirebaseCore/Sources/FIROptions.m +++ b/FirebaseCore/Sources/FIROptions.m @@ -414,8 +414,8 @@ - (NSDictionary *)analyticsOptionsDictionary { /** * Whether or not Measurement was enabled. Measurement is enabled unless explicitly disabled in - * GoogleService-Info.plist. This uses the old plist flag IS_MEASUREMENT_ENABLED, which should still - * be supported. + * GoogleService-Info.plist. This uses the old plist flag `IS_MEASUREMENT_ENABLED`, which should + * still be supported. */ - (BOOL)isMeasurementEnabled { if (self.isAnalyticsCollectionDeactivated) { diff --git a/FirebaseCore/Sources/FIROptionsInternal.h b/FirebaseCore/Sources/FIROptionsInternal.h index 8765614e17d..22e68083d1d 100644 --- a/FirebaseCore/Sources/FIROptionsInternal.h +++ b/FirebaseCore/Sources/FIROptionsInternal.h @@ -64,18 +64,6 @@ */ @property(nonatomic, readonly, copy) NSString *libraryVersionID; -/** - * The flag indicating whether this object was constructed with the values in the default plist - * file. - */ -@property(nonatomic) BOOL usingOptionsFromDefaultPlist; - -/** - * Whether or not Measurement was enabled. Measurement is enabled unless explicitly disabled in - * GoogleService-Info.plist. - */ -@property(nonatomic, readonly) BOOL isMeasurementEnabled; - /** * Whether or not editing is locked. This should occur after `FirebaseOptions` has been set on a * `FirebaseApp`. diff --git a/FirebaseCore/Tests/Unit/FIRAppTest.m b/FirebaseCore/Tests/Unit/FIRAppTest.m index 0bba5dceba1..de5532ff71b 100644 --- a/FirebaseCore/Tests/Unit/FIRAppTest.m +++ b/FirebaseCore/Tests/Unit/FIRAppTest.m @@ -43,7 +43,6 @@ @interface FIRApp (TestInternal) + (void)resetApps; - (instancetype)initInstanceWithName:(NSString *)name options:(FIROptions *)options; - (BOOL)configureCore; -+ (NSError *)errorForInvalidAppID; - (BOOL)isAppIDValid; + (NSString *)actualBundleID; + (NSNumber *)mapFromServiceStringToTypeEnum:(NSString *)serviceString; diff --git a/FirebaseCore/Tests/Unit/FIROptionsTest.m b/FirebaseCore/Tests/Unit/FIROptionsTest.m index 3f228c83fad..49872042afb 100644 --- a/FirebaseCore/Tests/Unit/FIROptionsTest.m +++ b/FirebaseCore/Tests/Unit/FIROptionsTest.m @@ -27,6 +27,18 @@ @interface FIROptions (Test) +/** + * The flag indicating whether this object was constructed with the values in the default plist + * file. + */ +@property(nonatomic) BOOL usingOptionsFromDefaultPlist; + +/** + * Whether or not Measurement was enabled. Measurement is enabled unless explicitly disabled in + * GoogleService-Info.plist. + */ +@property(nonatomic, readonly) BOOL isMeasurementEnabled; + - (nullable NSDictionary *)analyticsOptionsDictionaryWithInfoDictionary: (nullable NSDictionary *)infoDictionary; diff --git a/FirebaseFirestoreInternal.podspec b/FirebaseFirestoreInternal.podspec index 5362cf20699..3b4b39acb20 100644 --- a/FirebaseFirestoreInternal.podspec +++ b/FirebaseFirestoreInternal.podspec @@ -45,7 +45,6 @@ Google Cloud Firestore is a NoSQL document database built for automatic scaling, # that "quick open" by filename in Xcode will continue to work. s.source_files = [ 'FirebaseCore/Extension/*.h', - 'FirebaseCore/Sources/FIROptionsInternal.h', 'Firestore/Source/Public/FirebaseFirestore/*.h', 'Firestore/Source/**/*.{m,mm}', 'Firestore/Protos/nanopb/**/*.cc', diff --git a/Firestore/Source/API/FSTFirestoreComponent.mm b/Firestore/Source/API/FSTFirestoreComponent.mm index d07ac36f899..09d27afb953 100644 --- a/Firestore/Source/API/FSTFirestoreComponent.mm +++ b/Firestore/Source/API/FSTFirestoreComponent.mm @@ -17,6 +17,7 @@ #import "Firestore/Source/API/FSTFirestoreComponent.h" #import +#import #include #include @@ -28,7 +29,6 @@ #import "FirebaseCore/Extension/FIRComponentContainer.h" #import "FirebaseCore/Extension/FIRComponentType.h" #import "FirebaseCore/Extension/FIRLibrary.h" -#import "FirebaseCore/Sources/FIROptionsInternal.h" #import "Firestore/Source/API/FIRFirestore+Internal.h" #include "Firestore/core/include/firebase/firestore/firestore_version.h" diff --git a/Firestore/core/src/remote/firebase_metadata_provider_apple.mm b/Firestore/core/src/remote/firebase_metadata_provider_apple.mm index a2c7e287bd6..3270b4e32a4 100644 --- a/Firestore/core/src/remote/firebase_metadata_provider_apple.mm +++ b/Firestore/core/src/remote/firebase_metadata_provider_apple.mm @@ -14,11 +14,12 @@ * limitations under the License. */ +#import + #include "Firestore/core/src/remote/firebase_metadata_provider_apple.h" #import "FirebaseCore/Extension/FIRAppInternal.h" #import "FirebaseCore/Extension/FIRHeartbeatLogger.h" -#import "FirebaseCore/Sources/FIROptionsInternal.h" #include "Firestore/core/src/util/string_apple.h"