From 74b8196896ea867147b21401b3b5872283423808 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:46:27 -0400 Subject: [PATCH] [InAppMessaging] Migrate to GoogleUtilities's storage container (#12757) --- FirebaseInAppMessaging.podspec | 3 ++- .../Analytics/FIRIAMAnalyticsEventLoggerImpl.h | 5 +++-- .../Analytics/FIRIAMAnalyticsEventLoggerImpl.m | 8 +++++--- .../Sources/Analytics/FIRIAMClearcutUploader.m | 7 ++++--- .../Sources/Flows/FIRIAMBookKeeper.m | 6 ++++-- .../Private/Analytics/FIRIAMClearcutUploader.h | 5 +++-- .../Sources/Private/Flows/FIRIAMBookKeeper.h | 5 ++++- .../Sources/Private/Runtime/FIRIAMSDKModeManager.h | 6 ++++-- .../Sources/Runtime/FIRIAMRuntimeManager.m | 12 +++++++----- .../Sources/Runtime/FIRIAMSDKModeManager.m | 6 ++++-- .../Tests/Unit/FIRIAMAnalyticsEventLoggerImplTests.m | 5 +++-- .../Unit/FIRIAMBookKeeperViaUserDefaultsTests.m | 10 ++++++---- .../Tests/Unit/FIRIAMClearcutUploaderTests.m | 5 +++-- .../Tests/Unit/FIRIAMSDKModeManagerTests.m | 5 +++-- Package.swift | 1 + 15 files changed, 56 insertions(+), 33 deletions(-) diff --git a/FirebaseInAppMessaging.podspec b/FirebaseInAppMessaging.podspec index 059b6d1faef..4b16c2a94a1 100644 --- a/FirebaseInAppMessaging.podspec +++ b/FirebaseInAppMessaging.podspec @@ -83,7 +83,8 @@ See more product details at https://firebase.google.com/products/in-app-messagin s.dependency 'FirebaseCore', '~> 10.0' s.dependency 'FirebaseInstallations', '~> 10.0' s.dependency 'FirebaseABTesting', '~> 10.0' - s.dependency 'GoogleUtilities/Environment', '~> 7.8' + s.dependency 'GoogleUtilities/Environment', '~> 7.13' + s.dependency 'GoogleUtilities/UserDefaults', '~> 7.13' s.dependency 'nanopb', '>= 2.30908.0', '< 2.30911.0' s.test_spec 'unit' do |unit_tests| diff --git a/FirebaseInAppMessaging/Sources/Analytics/FIRIAMAnalyticsEventLoggerImpl.h b/FirebaseInAppMessaging/Sources/Analytics/FIRIAMAnalyticsEventLoggerImpl.h index 80d50049d6f..cb406b0098e 100644 --- a/FirebaseInAppMessaging/Sources/Analytics/FIRIAMAnalyticsEventLoggerImpl.h +++ b/FirebaseInAppMessaging/Sources/Analytics/FIRIAMAnalyticsEventLoggerImpl.h @@ -19,6 +19,7 @@ #import "FirebaseInAppMessaging/Sources/Private/Flows/FIRIAMAnalyticsEventLogger.h" @class FIRIAMClearcutLogger; +@class GULUserDefaults; @protocol FIRIAMTimeFetcher; @protocol FIRAnalyticsInterop; @@ -34,12 +35,12 @@ NS_ASSUME_NONNULL_BEGIN /** * * @param userDefaults needed for tracking upload timing info persistently.If nil, using - * NSUserDefaults standardUserDefaults. It's defined as a parameter to help with + * GULUserDefaults standardUserDefaults. It's defined as a parameter to help with * unit testing mocking */ - (instancetype)initWithClearcutLogger:(FIRIAMClearcutLogger *)ctLogger usingTimeFetcher:(id)timeFetcher - usingUserDefaults:(nullable NSUserDefaults *)userDefaults + usingUserDefaults:(nullable GULUserDefaults *)userDefaults analytics:(nullable id)analytics; @end NS_ASSUME_NONNULL_END diff --git a/FirebaseInAppMessaging/Sources/Analytics/FIRIAMAnalyticsEventLoggerImpl.m b/FirebaseInAppMessaging/Sources/Analytics/FIRIAMAnalyticsEventLoggerImpl.m index 7b23405e5c4..8176cb83c68 100644 --- a/FirebaseInAppMessaging/Sources/Analytics/FIRIAMAnalyticsEventLoggerImpl.m +++ b/FirebaseInAppMessaging/Sources/Analytics/FIRIAMAnalyticsEventLoggerImpl.m @@ -17,6 +17,8 @@ #import #if TARGET_OS_IOS || TARGET_OS_TV || (defined(TARGET_OS_VISION) && TARGET_OS_VISION) +#import + #import "FirebaseInAppMessaging/Sources/Analytics/FIRIAMAnalyticsEventLoggerImpl.h" #import "FirebaseCore/Extension/FirebaseCoreInternal.h" @@ -29,7 +31,7 @@ @interface FIRIAMAnalyticsEventLoggerImpl () @property(readonly, nonatomic) FIRIAMClearcutLogger *clearCutLogger; @property(readonly, nonatomic) id timeFetcher; -@property(nonatomic, readonly) NSUserDefaults *userDefaults; +@property(nonatomic, readonly) GULUserDefaults *userDefaults; @end // in these kFAXX constants, FA represents FirebaseAnalytics @@ -60,13 +62,13 @@ @implementation FIRIAMAnalyticsEventLoggerImpl { - (instancetype)initWithClearcutLogger:(FIRIAMClearcutLogger *)ctLogger usingTimeFetcher:(id)timeFetcher - usingUserDefaults:(nullable NSUserDefaults *)userDefaults + usingUserDefaults:(nullable GULUserDefaults *)userDefaults analytics:(nullable id)analytics { if (self = [super init]) { _clearCutLogger = ctLogger; _timeFetcher = timeFetcher; _analytics = analytics; - _userDefaults = userDefaults ? userDefaults : [NSUserDefaults standardUserDefaults]; + _userDefaults = userDefaults ? userDefaults : [GULUserDefaults standardUserDefaults]; if (!_analytics) { FIRLogWarning(kFIRLoggerInAppMessaging, @"I-IAM280002", diff --git a/FirebaseInAppMessaging/Sources/Analytics/FIRIAMClearcutUploader.m b/FirebaseInAppMessaging/Sources/Analytics/FIRIAMClearcutUploader.m index 663a8785d2b..c520f21616a 100644 --- a/FirebaseInAppMessaging/Sources/Analytics/FIRIAMClearcutUploader.m +++ b/FirebaseInAppMessaging/Sources/Analytics/FIRIAMClearcutUploader.m @@ -17,6 +17,7 @@ #import #if TARGET_OS_IOS || TARGET_OS_TV || (defined(TARGET_OS_VISION) && TARGET_OS_VISION) +#import #import #import "FirebaseCore/Extension/FirebaseCoreInternal.h" @@ -66,7 +67,7 @@ @interface FIRIAMClearcutUploader () { @property(nonatomic, readonly) FIRIAMClearcutLogStorage *logStorage; @property(nonatomic, readonly) FIRIAMClearcutStrategy *strategy; -@property(nonatomic, readonly) NSUserDefaults *userDefaults; +@property(nonatomic, readonly) GULUserDefaults *userDefaults; @end static NSString *FIRIAM_UserDefaultsKeyForNextValidClearcutUploadTimeInMills = @@ -89,7 +90,7 @@ - (instancetype)initWithRequestSender:(FIRIAMClearcutHttpRequestSender *)request timeFetcher:(id)timeFetcher logStorage:(FIRIAMClearcutLogStorage *)logStorage usingStrategy:(FIRIAMClearcutStrategy *)strategy - usingUserDefaults:(nullable NSUserDefaults *)userDefaults { + usingUserDefaults:(nullable GULUserDefaults *)userDefaults { if (self = [super init]) { _nextSendScheduled = NO; _timeFetcher = timeFetcher; @@ -109,7 +110,7 @@ - (instancetype)initWithRequestSender:(FIRIAMClearcutHttpRequestSender *)request object:nil]; } #endif // defined(__IPHONE_13_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 - _userDefaults = userDefaults ? userDefaults : [NSUserDefaults standardUserDefaults]; + _userDefaults = userDefaults ? userDefaults : [GULUserDefaults standardUserDefaults]; // it would be 0 if it does not exist, which is equvilent to saying that // you can send now _nextValidSendTimeInMills = (int64_t) diff --git a/FirebaseInAppMessaging/Sources/Flows/FIRIAMBookKeeper.m b/FirebaseInAppMessaging/Sources/Flows/FIRIAMBookKeeper.m index 4bebe8fcc77..db85d8723c5 100644 --- a/FirebaseInAppMessaging/Sources/Flows/FIRIAMBookKeeper.m +++ b/FirebaseInAppMessaging/Sources/Flows/FIRIAMBookKeeper.m @@ -17,6 +17,8 @@ #import #if TARGET_OS_IOS || TARGET_OS_TV || (defined(TARGET_OS_VISION) && TARGET_OS_VISION) +#import + #import "FirebaseCore/Extension/FirebaseCoreInternal.h" #import "FirebaseInAppMessaging/Sources/FIRCore+InAppMessaging.h" @@ -44,7 +46,7 @@ @interface FIRIAMBookKeeperViaUserDefaults () @property(nonatomic) double lastDisplayTime; @property(nonatomic) double lastFetchTime; @property(nonatomic) double nextFetchWaitTime; -@property(nonatomic, nonnull) NSUserDefaults *defaults; +@property(nonatomic, nonnull) GULUserDefaults *defaults; @end @interface FIRIAMImpressionRecord () @@ -85,7 +87,7 @@ - (NSString *)description { @implementation FIRIAMBookKeeperViaUserDefaults -- (instancetype)initWithUserDefaults:(NSUserDefaults *)userDefaults { +- (instancetype)initWithUserDefaults:(GULUserDefaults *)userDefaults { if (self = [super init]) { _defaults = userDefaults; diff --git a/FirebaseInAppMessaging/Sources/Private/Analytics/FIRIAMClearcutUploader.h b/FirebaseInAppMessaging/Sources/Private/Analytics/FIRIAMClearcutUploader.h index 9c0d1139b36..a349c13d8f4 100644 --- a/FirebaseInAppMessaging/Sources/Private/Analytics/FIRIAMClearcutUploader.h +++ b/FirebaseInAppMessaging/Sources/Private/Analytics/FIRIAMClearcutUploader.h @@ -19,6 +19,7 @@ @class FIRIAMClearcutLogRecord; @class FIRIAMClearcutHttpRequestSender; @class FIRIAMClearcutLogStorage; +@class GULUserDefaults; @protocol FIRIAMTimeFetcher; @@ -58,14 +59,14 @@ NS_ASSUME_NONNULL_BEGIN /** * * @param userDefaults needed for tracking upload timing info persistently.If nil, using - * NSUserDefaults standardUserDefaults. It's defined as a parameter to help with + * GULUserDefaults standardUserDefaults. It's defined as a parameter to help with * unit testing mocking */ - (instancetype)initWithRequestSender:(FIRIAMClearcutHttpRequestSender *)requestSender timeFetcher:(id)timeFetcher logStorage:(FIRIAMClearcutLogStorage *)retryStorage usingStrategy:(FIRIAMClearcutStrategy *)strategy - usingUserDefaults:(nullable NSUserDefaults *)userDefaults; + usingUserDefaults:(nullable GULUserDefaults *)userDefaults; /** * This should return very quickly without blocking on and actual log uploading to * clearcut server, which is done asynchronously diff --git a/FirebaseInAppMessaging/Sources/Private/Flows/FIRIAMBookKeeper.h b/FirebaseInAppMessaging/Sources/Private/Flows/FIRIAMBookKeeper.h index 1c9a11045a4..9f4bca0e8dc 100644 --- a/FirebaseInAppMessaging/Sources/Private/Flows/FIRIAMBookKeeper.h +++ b/FirebaseInAppMessaging/Sources/Private/Flows/FIRIAMBookKeeper.h @@ -17,6 +17,9 @@ #import NS_ASSUME_NONNULL_BEGIN + +@class GULUserDefaults; + @interface FIRIAMImpressionRecord : NSObject @property(nonatomic, readonly, copy) NSString *messageID; @property(nonatomic, readonly) long impressionTimeInSeconds; @@ -64,7 +67,7 @@ NS_ASSUME_NONNULL_BEGIN @interface FIRIAMBookKeeperViaUserDefaults : NSObject - (instancetype)init NS_UNAVAILABLE; -- (instancetype)initWithUserDefaults:(NSUserDefaults *)userDefaults NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithUserDefaults:(GULUserDefaults *)userDefaults NS_DESIGNATED_INITIALIZER; // for testing, don't use them for production purpose - (void)cleanupImpressions; diff --git a/FirebaseInAppMessaging/Sources/Private/Runtime/FIRIAMSDKModeManager.h b/FirebaseInAppMessaging/Sources/Private/Runtime/FIRIAMSDKModeManager.h index 65534186fec..f67db3b91e1 100644 --- a/FirebaseInAppMessaging/Sources/Private/Runtime/FIRIAMSDKModeManager.h +++ b/FirebaseInAppMessaging/Sources/Private/Runtime/FIRIAMSDKModeManager.h @@ -18,6 +18,8 @@ NS_ASSUME_NONNULL_BEGIN +@class GULUserDefaults; + extern NSInteger const kFIRIAMMaxFetchInNewlyInstalledMode; /** @@ -56,8 +58,8 @@ extern NSInteger const kFIRIAMMaxFetchInNewlyInstalledMode; - (instancetype)init NS_UNAVAILABLE; -// having NSUserDefaults as passed-in to help with unit testing -- (instancetype)initWithUserDefaults:(NSUserDefaults *)userDefaults +// having GULUserDefaults as passed-in to help with unit testing +- (instancetype)initWithUserDefaults:(GULUserDefaults *)userDefaults testingModeListener:(id)testingModeListener; // returns the current SDK mode diff --git a/FirebaseInAppMessaging/Sources/Runtime/FIRIAMRuntimeManager.m b/FirebaseInAppMessaging/Sources/Runtime/FIRIAMRuntimeManager.m index 411b7eab5ea..499b6fddc9b 100644 --- a/FirebaseInAppMessaging/Sources/Runtime/FIRIAMRuntimeManager.m +++ b/FirebaseInAppMessaging/Sources/Runtime/FIRIAMRuntimeManager.m @@ -17,6 +17,8 @@ #import #if TARGET_OS_IOS || TARGET_OS_TV || (defined(TARGET_OS_VISION) && TARGET_OS_VISION) +#import + #import "FirebaseCore/Extension/FirebaseCoreInternal.h" #import "FirebaseInAppMessaging/Sources/Analytics/FIRIAMAnalyticsEventLoggerImpl.h" @@ -94,7 +96,7 @@ - (void)testingModeSwitchedOn { } - (FIRIAMAutoDataCollectionSetting)FIAMProgrammaticAutoDataCollectionSetting { - id settingEntry = [[NSUserDefaults standardUserDefaults] + id settingEntry = [[GULUserDefaults standardUserDefaults] objectForKey:_userDefaultsKeyForFIAMProgammaticAutoDataCollectionSetting]; if (![settingEntry isKindOfClass:[NSNumber class]]) { @@ -188,7 +190,7 @@ - (BOOL)shouldRunSDKFlowsOnStartup { - (void)resume { // persist the setting - [[NSUserDefaults standardUserDefaults] + [[GULUserDefaults standardUserDefaults] setObject:@(YES) forKey:_userDefaultsKeyForFIAMProgammaticAutoDataCollectionSetting]; @@ -209,7 +211,7 @@ - (void)resume { - (void)pause { // persist the setting - [[NSUserDefaults standardUserDefaults] + [[GULUserDefaults standardUserDefaults] setObject:@(NO) forKey:_userDefaultsKeyForFIAMProgammaticAutoDataCollectionSetting]; @@ -262,7 +264,7 @@ - (void)internalStartRuntimeWithSDKSettings:(FIRIAMSDKSettings *)settings { self.responseParser = [[FIRIAMFetchResponseParser alloc] initWithTimeFetcher:timeFetcher]; self.bookKeeper = [[FIRIAMBookKeeperViaUserDefaults alloc] - initWithUserDefaults:[NSUserDefaults standardUserDefaults]]; + initWithUserDefaults:[GULUserDefaults standardUserDefaults]]; self.messageCache = [[FIRIAMMessageClientCache alloc] initWithBookkeeper:self.bookKeeper usingResponseParser:self.responseParser]; @@ -324,7 +326,7 @@ - (void)internalStartRuntimeWithSDKSettings:(FIRIAMSDKSettings *)settings { analytics:[FIRInAppMessaging inAppMessaging].analytics]; FIRIAMSDKModeManager *sdkModeManager = - [[FIRIAMSDKModeManager alloc] initWithUserDefaults:NSUserDefaults.standardUserDefaults + [[FIRIAMSDKModeManager alloc] initWithUserDefaults:GULUserDefaults.standardUserDefaults testingModeListener:self]; FIRIAMActionURLFollower *actionFollower = [FIRIAMActionURLFollower actionURLFollower]; diff --git a/FirebaseInAppMessaging/Sources/Runtime/FIRIAMSDKModeManager.m b/FirebaseInAppMessaging/Sources/Runtime/FIRIAMSDKModeManager.m index f3005412691..6aa77c29f8d 100644 --- a/FirebaseInAppMessaging/Sources/Runtime/FIRIAMSDKModeManager.m +++ b/FirebaseInAppMessaging/Sources/Runtime/FIRIAMSDKModeManager.m @@ -17,6 +17,8 @@ #import #if TARGET_OS_IOS || TARGET_OS_TV || (defined(TARGET_OS_VISION) && TARGET_OS_VISION) +#import + #import "FirebaseCore/Extension/FirebaseCoreInternal.h" #import "FirebaseInAppMessaging/Sources/FIRCore+InAppMessaging.h" @@ -38,7 +40,7 @@ } @interface FIRIAMSDKModeManager () -@property(nonatomic, nonnull, readonly) NSUserDefaults *userDefaults; +@property(nonatomic, nonnull, readonly) GULUserDefaults *userDefaults; // Make it weak so that we don't depend on its existence to avoid circular reference. @property(nonatomic, readonly, weak) id testingModeListener; @end @@ -52,7 +54,7 @@ @implementation FIRIAMSDKModeManager { NSInteger _fetchCount; } -- (instancetype)initWithUserDefaults:(NSUserDefaults *)userDefaults +- (instancetype)initWithUserDefaults:(GULUserDefaults *)userDefaults testingModeListener:(id)testingModeListener { if (self = [super init]) { _userDefaults = userDefaults; diff --git a/FirebaseInAppMessaging/Tests/Unit/FIRIAMAnalyticsEventLoggerImplTests.m b/FirebaseInAppMessaging/Tests/Unit/FIRIAMAnalyticsEventLoggerImplTests.m index 9f8d1e41796..6ca6590f0f4 100644 --- a/FirebaseInAppMessaging/Tests/Unit/FIRIAMAnalyticsEventLoggerImplTests.m +++ b/FirebaseInAppMessaging/Tests/Unit/FIRIAMAnalyticsEventLoggerImplTests.m @@ -14,6 +14,7 @@ * limitations under the License. */ +#import #import #import @@ -28,7 +29,7 @@ @interface FIRIAMAnalyticsEventLoggerImplTests : XCTestCase @property(nonatomic) FIRIAMClearcutLogger *mockClearcutLogger; @property(nonatomic) id mockTimeFetcher; @property(nonatomic) id mockFirebaseAnalytics; -@property(nonatomic) NSUserDefaults *mockUserDefaults; +@property(nonatomic) GULUserDefaults *mockUserDefaults; @end @@ -140,7 +141,7 @@ - (void)setUp { [super setUp]; self.mockClearcutLogger = OCMClassMock(FIRIAMClearcutLogger.class); self.mockTimeFetcher = OCMProtocolMock(@protocol(FIRIAMTimeFetcher)); - self.mockUserDefaults = OCMClassMock(NSUserDefaults.class); + self.mockUserDefaults = OCMClassMock(GULUserDefaults.class); } - (void)tearDown { diff --git a/FirebaseInAppMessaging/Tests/Unit/FIRIAMBookKeeperViaUserDefaultsTests.m b/FirebaseInAppMessaging/Tests/Unit/FIRIAMBookKeeperViaUserDefaultsTests.m index 7e023cbde02..499f4228609 100644 --- a/FirebaseInAppMessaging/Tests/Unit/FIRIAMBookKeeperViaUserDefaultsTests.m +++ b/FirebaseInAppMessaging/Tests/Unit/FIRIAMBookKeeperViaUserDefaultsTests.m @@ -14,13 +14,14 @@ * limitations under the License. */ +#import #import #import #import "FirebaseInAppMessaging/Sources/Private/Flows/FIRIAMBookKeeper.h" @interface FIRIAMBookKeeperViaUserDefaultsTests : XCTestCase -@property(nonatomic) NSUserDefaults *userDefaultsForTesting; +@property(nonatomic) GULUserDefaults *userDefaultsForTesting; @end extern NSString *FIRIAM_UserDefaultsKeyForImpressions; @@ -29,18 +30,19 @@ @interface FIRIAMBookKeeperViaUserDefaultsTests : XCTestCase extern NSString *FIRIAM_ImpressionDictKeyForID; extern NSString *FIRIAM_ImpressionDictKeyForTimestamp; +static NSString *const kSuiteName = @"FIRIAMBookKeeperViaUserDefaultsTests"; + @implementation FIRIAMBookKeeperViaUserDefaultsTests - (void)setUp { [super setUp]; - self.userDefaultsForTesting = - [[NSUserDefaults alloc] initWithSuiteName:@"FIRIAMBookKeeperViaUserDefaultsTests"]; + self.userDefaultsForTesting = [[GULUserDefaults alloc] initWithSuiteName:kSuiteName]; } - (void)tearDown { // Put teardown code here. This method is called after the invocation of each test method in the // class. [super tearDown]; - [self.userDefaultsForTesting removeSuiteNamed:@"FIRIAMBookKeeperViaUserDefaultsTests"]; + [[[NSUserDefaults alloc] initWithSuiteName:kSuiteName] removePersistentDomainForName:kSuiteName]; } - (void)testRecordImpressionRecords { diff --git a/FirebaseInAppMessaging/Tests/Unit/FIRIAMClearcutUploaderTests.m b/FirebaseInAppMessaging/Tests/Unit/FIRIAMClearcutUploaderTests.m index 573f8ec9fbd..5e891c4ee45 100644 --- a/FirebaseInAppMessaging/Tests/Unit/FIRIAMClearcutUploaderTests.m +++ b/FirebaseInAppMessaging/Tests/Unit/FIRIAMClearcutUploaderTests.m @@ -14,6 +14,7 @@ * limitations under the License. */ +#import #import #import @@ -27,7 +28,7 @@ @interface FIRIAMClearcutUploaderTests : XCTestCase @property(nonatomic) FIRIAMClearcutHttpRequestSender *mockRequestSender; @property(nonatomic) FIRIAMClearcutLogStorage *mockLogStorage; @property(nonatomic) FIRIAMClearcutStrategy *defaultStrategy; -@property(nonatomic) NSUserDefaults *mockUserDefaults; +@property(nonatomic) GULUserDefaults *mockUserDefaults; @property(nonatomic) NSString *cachePath; @end @@ -65,7 +66,7 @@ - (void)setUp { failureBackoffTimeInMills:1000 batchSendSize:10]; - self.mockUserDefaults = OCMClassMock(NSUserDefaults.class); + self.mockUserDefaults = OCMClassMock(GULUserDefaults.class); self.cachePath = [self generatedCachePath]; OCMStub([self.mockUserDefaults integerForKey:[OCMArg any]]).andReturn(0); } diff --git a/FirebaseInAppMessaging/Tests/Unit/FIRIAMSDKModeManagerTests.m b/FirebaseInAppMessaging/Tests/Unit/FIRIAMSDKModeManagerTests.m index f7d1b384b74..0be81b2a01c 100644 --- a/FirebaseInAppMessaging/Tests/Unit/FIRIAMSDKModeManagerTests.m +++ b/FirebaseInAppMessaging/Tests/Unit/FIRIAMSDKModeManagerTests.m @@ -14,13 +14,14 @@ * limitations under the License. */ +#import #import #import #import "FirebaseInAppMessaging/Sources/Private/Runtime/FIRIAMSDKModeManager.h" @interface FIRIAMSDKModeManagerTests : XCTestCase -@property(nonatomic) NSUserDefaults *mockUserDefaults; +@property(nonatomic) GULUserDefaults *mockUserDefaults; @property(nonatomic) id mockTestingModeListener; @end @@ -28,7 +29,7 @@ @implementation FIRIAMSDKModeManagerTests - (void)setUp { [super setUp]; - self.mockUserDefaults = OCMClassMock(NSUserDefaults.class); + self.mockUserDefaults = OCMClassMock(GULUserDefaults.class); self.mockTestingModeListener = OCMStrictProtocolMock(@protocol(FIRIAMTestingModeListener)); } diff --git a/Package.swift b/Package.swift index e5150340772..bba6ae61588 100644 --- a/Package.swift +++ b/Package.swift @@ -778,6 +778,7 @@ let package = Package( "FirebaseInstallations", "FirebaseABTesting", .product(name: "GULEnvironment", package: "GoogleUtilities"), + .product(name: "GULUserDefaults", package: "GoogleUtilities"), .product(name: "nanopb", package: "nanopb"), .target(name: "FirebaseInAppMessaging_iOS", condition: .when(platforms: [.iOS])), ],