-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Add support for other Firebase products to integrate with Remote Config. #6692
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
||
/// Adds a listener that will be called whenever one of the get methods is called. | ||
/// @param listener Function that takes in the parameter key and the config. | ||
- (void)addListener:(void (^_Nonnull)(NSString *_Nonnull, NSDictionary *_Nonnull))listener; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should remove this from the header file since we're just calling it internally within the RC SDK and not changing the public API
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
@@ -284,6 +306,14 @@ - (void)loadConfigFromMainTable { | |||
self->_defaultConfig = [defaultConfig mutableCopy]; | |||
dispatch_semaphore_signal(self->_configLoadFromDBSemaphore); | |||
}]; | |||
|
|||
[_DBManager loadPersonalizationWithCompletionHandler:^(BOOL success, NSDictionary *fetchedConfig, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
rename to fetchedPersonalization
and activePersonalization
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
|
||
if (handler) { | ||
dispatch_async(dispatch_get_main_queue(), ^{ | ||
handler(YES, activePersonalization, fetchedPersonalization, nil); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the handler definition expects fetched
and then active
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LOL, too much copying and pasting.
@@ -331,6 +358,10 @@ - (FIRRemoteConfigValue *)configValueForKey:(NSString *)key { | |||
@"Key %@ should come from source:%zd instead coming from source: %zd.", key, | |||
(long)FIRRemoteConfigSourceRemote, (long)value.source); | |||
} | |||
if ([self->_configContent.activePersonalization count] > 0) { | |||
[self callListeners:value.stringValue | |||
metadata:self->_configContent.activePersonalization[key]]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thinking: we mentioned that the listener approach would allow us to add other side-effects in the future, but given the current implementation all the listeners would be called specifically with personalization metadata, which limits the functionality we can add
@@ -41,6 +42,10 @@ | |||
/// Timeout value for waiting on a fetch response. | |||
static NSString *const kRemoteConfigFetchTimeoutKey = @"_rcn_fetch_timeout"; | |||
|
|||
/// Listener for the get methods. | |||
typedef void (^FIRRemoteConfigListener)(NSString *_Nonnull, NSDictionary *_Nonnull) | |||
NS_SWIFT_NAME(FIRRemoteConfigListener); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove NS_SWIFT_NAME
. APIs exposed to Swift should not use typedefs and this looks like its only for internal APIs anyway
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
@@ -100,6 +103,10 @@ typedef void (^RCNDBLoadCompletion)(BOOL success, | |||
- (void)updateMetadataWithOption:(RCNUpdateOption)option | |||
values:(NSArray *)values | |||
completionHandler:(RCNDBCompletion)handler; | |||
|
|||
/// Insert or update the data in Personalizatoin config. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: typo Personalization
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
FirebaseRemoteConfig/CHANGELOG.md
Outdated
@@ -7,6 +7,7 @@ | |||
- [fixed] Fixed database creation on tvOS. (#6612) | |||
- [changed] Updated public API documentation to no longer reference removed APIs. (#6641) | |||
- [fixed] Updated `activateWithCompletion:` to use completion handler for experiment updates. (#3687) | |||
- [changed] Log metadata for Remote Config parameter get calls. (#6692) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you make this more descriptive? As written this might raise concerns for developers. What exactly is the impact of the change for users of the RemoteConfig libraries?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the RC team wants to keep this intentionally vague, since most developers won't be able to use this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In that case, something like "Added preliminary infrastructure to support future features" or nothing at all might be better. If I read the code right, additional logging is only happening when Personalization is being used. Saying unspecified logging is happening can be concerning to developers.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cc: @morganchen12
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed to your suggestion.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM Thanks for working through the comments.
I'd like @maksymmalyhin to take a look too, especially at the threading logic, but if he doesn't get a chance, I'm fine to merge tomorrow afternoon.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mostly LGTM, but a couple questions.
|
||
if (analytics) { | ||
_listeners = [[NSMutableArray alloc] init]; | ||
[RCNPersonalization setAnalytics:analytics]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you please add tests for FIRRemoteConfig
integration with personalization.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
return sharedInstance; | ||
} | ||
|
||
+ (void)setAnalytics:(id<FIRAnalyticsInterop> _Nullable)analytics { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I curious if RCNPersonalization
supports multiple FIRApp
instances? There may be multiple instances of Remote Config possibly initialized with different and completely unrelated Firebase applications. Is RCNPersonalization
ready to handle such cases?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, it'll only support the default instance, because that's the only one with analytics.
@property(nonatomic, strong) id<FIRAnalyticsInterop> _Nullable analytics; | ||
|
||
/// Returns the RCNPersonalization singleton. | ||
+ (instancetype)sharedInstance; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Excuse me in advance for the questions, I may not know all the design details, but I would like to clarify a couple things:
- Why RCNPersonalization singleton is needed? Is it possible to use just an instance or static methods accepting
FIRAnalyticsInterop
? - The singleton doesn't seem to respect
FIRApp
lifecycle. If a shared instance is actually required, then it is better to be implemented via components system - implementFIRLibrary
protocol (see Remote Config or simpler FIS examples, etc.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It doesn't really need to be singleton, so just made it an instance.
@@ -328,6 +360,7 @@ - (FIRRemoteConfigValue *)configValueForKey:(NSString *)key { | |||
@"Key %@ should come from source:%zd instead coming from source: %zd.", key, | |||
(long)FIRRemoteConfigSourceRemote, (long)value.source); | |||
} | |||
[self callListeners:key config:[self->_configContent getMetadataForNamespace:FQNamespace]]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: getConfigAndMetadataForNamespace
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for the updates! Mostly LGTM, a couple requests for comments.
_bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier]; | ||
if (!_bundleIdentifier) { | ||
FIRLogNotice(kFIRLoggerRemoteConfig, @"I-RCN000038", | ||
@"Main bundle identifier is missing. Remote Config might not work properly."); | ||
_bundleIdentifier = @""; | ||
} | ||
_DBManager = DBManager; | ||
_configLoadFromDBSemaphore = dispatch_semaphore_create(0); | ||
_configLoadFromDBSemaphore = dispatch_semaphore_create(1); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you please add a comment why the particular semaphore value is set. Also, maybe it will be a bit more readable if we call dispatch_semaphore_signal
closer to the operation that requires it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Moved the database methods closer.
@@ -60,7 +76,51 @@ - (void)setUp { | |||
[self->_fakeLogs addObject:bundle]; | |||
}); | |||
|
|||
[RCNPersonalization setAnalytics:_analyticsMock]; | |||
_personalization = [[RCNPersonalization alloc] initWithAnalytics:_analyticsMock]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you please add brief comments on what's going on here? Breaking it down to methods with self-documenting names also looks good to me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should rename the PR title to match the changelog, otherwise LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One nit and then LGTM
FirebaseRemoteConfig/CHANGELOG.md
Outdated
@@ -7,6 +7,7 @@ | |||
- [fixed] Fixed database creation on tvOS. (#6612) | |||
- [changed] Updated public API documentation to no longer reference removed APIs. (#6641) | |||
- [fixed] Updated `activateWithCompletion:` to use completion handler for experiment updates. (#3687) | |||
- [changed] Add support for other Firebase products to integrate with Remote Config. (#6692) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should move to a 7.1.0 section. 7.0.0 is past code freeze.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
* Restores ML Pods after M77. * Remove deprecated sendLogsWithServiceName (#6437) * Remove deprecated pods from Firebase.h and Firebase.podspec (#6438) * Remove the FCM Direct Channel API from Messaging (#6430) * Remove unnecessary Core private headers (#6439) * Update SPM docs to current version (#6524) * Update podspecs to min iOS 10 (#6517) * Merging the 6.33.0 release into master (#6523) * Update versions for Release 6.33.0 * SPM M80(6.33.0) Analytics update (#6490) Co-authored-by: Paul Beusterien <[email protected]> * Merge 6.33 SPM fixes back to master (#6530) * SPM M80(6.33.0) Analytics update (#6490) * Remove unnecessary analytics public header copy (#6498) * Fix SPM analytics warning introduced yesterday (#6504) * Fix SPM version (#6527) * Import Spec tests (#6525) * Import Spec tests * Init * Add recovery specs * Update FSTSyncEngineTestDriver.mm * Add release candidate prerelease workflow. (#6487) This also update cocoapods source to cocoapods repo since cdn is failed to connect. * Move internal Crashlytics changes to Github (#6535) Move *most* internal Crashlytics changes to Github * GDTCORFlatFileStorageTest size limit tests: use timeout proportional to the number of events (#6537) * IID: repo-relative headers (#6539) * Use Xcode 12 in CI instead of the beta (#6542) * SwiftPM for FCM (#6541) * Fix a rare RC crash (#6556) * Refactoring archive testing to a single yml file. (#6510) * Refactoring archive testing to a single yml file. This reduces the duplication in each of the workflow files. This also will make archive testing with SwiftPM more straightforward. * Prefixed with 'pod' name * Commenting out to run archive testing on PR for now. * Put array on single line The yml won't be parsed unless the `pod` array is on a single line. * Fix to run on PRs to the yml itself. * Fix naming of AppDistro * Remove schemes. * Update versions automation (#6550) * Remove iOS 10.0 check since minimum support in Messaging is already 10.0 (#6559) * Add Performance podspec (#6526) * Integrate Firestore with Firebase platform logging (#6507) The sample user agent string I'm getting in XCode is `apple-platform/ios apple-sdk/17E8258 fire-fst/1.17.1 fire-ios/6.10.2 swift/true xcode/11E503a`. * Change lastFetchTime to be readonly (#6567) * Change lastFetchTime to be readonly * Add changelog * GDTCORDirectorySizeTracker: fix NSURL constructor (#6580) * GDTCORDirectorySizeTracker: replace optional NSURL constructor with non-optional. * GDTCORDirectorySizeTracker tests for the issue * ./scripts/style.sh * changelog * Upload Symbols 3.4 with performance improvements (#6583) * Stop requiring pods to be static frameworks (#6557) * Always send the user agent regardless of the heartbeat value (#6592) Any non-zero heartbeat value is immediately reset to zero upon retrieval. Thus, should the network request containing the heartbeat value and the user agent string fail, the previous logic would prevent us from sending the user agent string until the next day (when the heartbeat once again returns a non-zero value). Until this is resolved, always send the user agent string, regardless of the heartbeat value. The associated increase in bandwidth usage is minor (~1.2% in _total_ traffic from running the full suite of Firestore integration tests, which represent the worst-case scenario because they recreate the streams much more often than a typical application). * Make all GoogleUtilities APIs public (#6588) * Make FirestoreException a type defined by Firestore/core (#6589) Move FirestoreInternalError to firebase::firestore to match FirestoreException in Android. When importing this into google3, we'll have to delete the Android-specific version of this type. * Update CHANGELOG for Firestore v1.19.0 (#6601) * Remove deprecated method in ABT public header (#6602) * Remove deprecated method, implementation * Replace call to deprecated method in RC, fix tests * Update changelogs * Add InstanceID deprecation warning (#6585) * Firebase 7 Firebase.podspec versions (#6604) * Add a changelog entry for Firestore platform logging (#6603) * 6.34.0 CHANGELOG update (#6611) * Migrate FIRLoggerServices strings from Core to clients (#6608) * Add static-framework testing to CI (#6599) * FIS: Additional FIRInstallationsItem validation (#6570) * FIS API tests for no FID in response * FIRInstallationsIDControllerTests: test names * FIRInstallationsIDControllerTests: corrupted storage tests * FIRInstallationsItem validation * Fix FIRInstallationsItem.IIDDefaultToken copy * Improve error description. * FIRInstallationsItem validation error * FIRInstallationsItem validation tests * ./scripts/style.sh * FIRInstallationsIDController: validate stored installation * FIRInstallationsAPIService installation validation * Changelog * Update versions for Release 6.34.0 * 6.34.0 updates for SwiftPM (#6614) * M81 FIS cherry pick of #6570 (#6616) * FIS: Additional FIRInstallationsItem validation (#6570) * FIS API tests for no FID in response * FIRInstallationsIDControllerTests: test names * FIRInstallationsIDControllerTests: corrupted storage tests * FIRInstallationsItem validation * Fix FIRInstallationsItem.IIDDefaultToken copy * Improve error description. * FIRInstallationsItem validation error * FIRInstallationsItem validation tests * ./scripts/style.sh * FIRInstallationsIDController: validate stored installation * FIRInstallationsAPIService installation validation * Changelog * Update versions * patch version * release manifest * Add link to App Distribution docs page (#6620) * Add link to App Distribution docs page * Remove trailing whitespaace * FIS IID tests shouldn't use repo-relative imports * Clean up usage of deprecated methods in unit tests (#6618) * Clean up usage of deprecated methods in unit tests * Add back second namespace tests * Remove test for setDefaults:namespace: * Remove deprecated auth APIs (#6607) * Remove deprecated APIs from public header. * Remove deprecated API implementations. * Also remove deprecated APIs from FIRUser. * Update unit tests. * Update sample app. * Update changelog. * Use MIMEType for image download extension if not present in resource URL (#6591) * ZipBuilder Firebase 7 updates (#6629) * Change numberValue to be nonnull (#6623) * Change numberValue to be nonnull * Add changelog * Add auth emulator support to public API. (#6624) * Add auth emulator support to public API. * Update changelog. * FIS: don't log anything on success validation (#6635) (#6636) * Remove the `FirebaseOptions()` bare initializer. (#6633) * Remove the `FirebaseOptions()` bare initializer. This was unintentionally surfaced from the ObjC header and should be removed. Note: although the existing initializer doesn't work, this is still a breaking change. * Style * Changelog update. * Remove deprecated elements of FIAM API (#6617) * Remove deprecated FIAM API * Remove call to deprecated method * Fix imports * Modify view controllers to use dummy test subclasses for message objects * Add bridging header, include it in test app * Add CHANGELOG entry * Revert "Add CHANGELOG entry" This reverts commit 55c0bbc. * Add CHANGELOG entry * Swift formatting * Add LLC to copyright notice * Revert "Fix imports" This reverts commit 55fdbbd. * FIS: disable IID migration tests by default (#6619) * FIS: disable IID migration tests by default * remove redundant env variable * Fix merge errors * Merge FLoC SDK into master branch. (#6466) * Create Segmentation SDK structure for source and unit tests. (#3214) * Create Segmentation SDK structure for source and unit tests. * Review changes: Remove unnecessary files in test folder. Add md-floc-master to CI * Rename Segmentation directory to FirebaseSegmentation directory. Update podspec to include search header path. * Add core support with interop for Segmentation SDK. (#3430) * Add core support with interop for Segmentation SDK. Also update headers to be under sources folder. * Review fixes. * Minor changes. * Fix style. * Fix style. * Style changes. * Fix whitespace in travis.yml * Fix style. * Travis CI is stuck..try updating the travis.yml * Undo travis.yml change. * Working drop of Segmentation SDK along with test app and unit tests. (#4574) * Working drop of Segmentation SDK along with sample app and unit tests. * Update if_changed.sh to include FirebaseSegmentation. * Complete NS_ASSUME_NON_NULL_START with NS_ASSUME_NON_NULL_END in header file. * Fix unit tests. * Fix style. * Fixes after running XCode's static analyzer. * Fix style. * fix style. * 'pod lib lint' fixes. * Fix analyzer errors. * Address review comments. * Minor changes for review comments. * Address review comments. * Address review comments. * stop mocking in tear down method for tests. * Minor update to sample app project. * Fix trailing whitespace in Podfile. * Add set -x to check.sh * update segmetation dependency version * migrate FloC SDK to depend on FIS SDK directly * format floc * format * using customized FIRapp * remove test plist file * refactor to capture weakself * format * replace partial mock with class mock * minor refactoring * use subscript to manipulate dictionary instance * fix import error * minor refoctoring, addressing comments * address comments * fix configurations * format Co-authored-by: dmandar <[email protected]> Co-authored-by: ChaoqunCHEN <[email protected]> * Remove deprecated RC APIs (#6637) * Remove deprecated method declarations and implementations * Fix broken dangerfile (#6642) * GDT: Move GDTCORAssert.h to internal headers (#6638) * Move GDTCORAssert.h to internal headers * Fix import * Update check_imports check (#6640) * Stop using CocoaPods private headers (#6572) * Add check for unauthenticated error and sign out in fetchNewLatestRelease (#6648) * Add check for unauthenticated error and sign out in fetchNewRelase method * Update CHANGELOG * Add check for Tester sign in before calling fetch * One Firebase version (#6634) * Update Symbol Collision Test for Firebase 7 (#6656) * Fix ZipBuilder crash and warning (#6653) * Public Version API (#6651) * Bump nanopb to fix Xcode 12 warning (#6659) * Fix breakage from #6651 (#6660) * GDT: move some headers from public to internal (#6643) * Move extra public headers to Internal and fix imports * Cleanup * Use relative paths in internal headers * Fix imports in internal headers * ./scripts/style.sh * Fix GDTTestApp * Fix test app * Use real uploader for watchOS test app * comma * Update the sample project link. (#6661) * Simplify FirebaseCore imports (#6664) * Call fetchAndActivate completion handler on main thread (#6665) * Call fetchAndActivate completion handler on main thread * Add changelog * Update changelog to use issue number * Missing Foundation import (#6670) * Remove duplicate section for instructions. (#6668) * FirebaseInstallations import added to Firebase.h (#4908) * FirebaseInstallations import added to Firebase.h * Add Installations to Firebase.podspec * UI_USER_INTERFACE_IDIOM() was deprecated in iOS 14 (#6576) * Update FirebaseAnalytics to the latest version from the release branch. (#6675) * Remove deprecated -[FIRInstanceID appInstanceID:] (#6677) * Remove deprecated -[FIRInstanceID appInstanceID:] * changelog * typo fix * Messaging token refresh delegate should be able to return null token (#6647) * Cherry-pick two 6.34.0 commits to master (#6688) * Update changelogs (#6649) * Speedup SwiftPM (#6687) Co-authored-by: Morgan Chen <[email protected]> * Fix a google3 build error (#6689) * Fix an issue notification is not received during app first install (#6669) * FIS: require projectID and valid API Key format (#6678) * FIRInstallations validation: remove GCMSenderID fallback for missing projectID * FIRInstallationsIDController: remove GCMSenderID fallback for missing projectID * Add API Key validation * Changelog * changelog * Constant for API key lenght * array] -> alloc] init] * typo * message * ./scripts/style.sh * Fix dummy API key in integration tests * Update dummy API Keys to match the expected format * debug test quickstart with no xcpretty * fix debug * Use debug QS repo branch * print debug * Add missing allowed characters `-`, `_` * Nicer dummy API Keys * Comment * Revert "Use debug QS repo branch" This reverts commit 69739dd. * Revert "fix debug" This reverts commit 84fcbc7. * Revert "debug test quickstart with no xcpretty" This reverts commit 1fa21ed. * C API for Firebase Version (#6690) * Fix retain cycle build issue (#6693) * Provide version for FDL 1P builds (#6679) * Fix tvOS storage issues. (#6658) * Fix tvOS storage issues. On tvOS devices, the ApplicationSupport directory cannot be used. Unfortunately this doesn't come up in simulator testing, only on device. This hasn't been fully tested on device but given that any writes to the ApplicationSupport directory fail on tvOS, this change can't break much. Fixes #6612 @defagos can you please give this a test? * Fixed changed dir name for RC * Fixed test naming, too. * Fix the documentation comment for GoogleUtilities. * Updated changelog. * Review feedback * Fixed CHANGELOG location. (#6698) * Fix CI/regression - update for change FCM API (#6699) * Support paths with + in List API (#6700) * Update API documentation referencing removed methods (#6667) * Update API documentation to remove references to removed methods * Add changelog * Address comments * Merge release-6.34.0 branch after patch (#6701) * Update versions for Release 6.34.0 * 6.34.0 updates for SwiftPM (#6614) * M81 FIS cherry pick of #6570 (#6616) * FIS: Additional FIRInstallationsItem validation (#6570) * FIS API tests for no FID in response * FIRInstallationsIDControllerTests: test names * FIRInstallationsIDControllerTests: corrupted storage tests * FIRInstallationsItem validation * Fix FIRInstallationsItem.IIDDefaultToken copy * Improve error description. * FIRInstallationsItem validation error * FIRInstallationsItem validation tests * ./scripts/style.sh * FIRInstallationsIDController: validate stored installation * FIRInstallationsAPIService installation validation * Changelog * Update versions * patch version * release manifest * FIS: don't log anything on success validation (#6635) * Update changelogs (#6649) * GoogleDataTransport: deprecated API conditions (#6697) * GoogleDataTransport: deprecated API conditions * Version bump * use `TARGET_OS_IOS` * changelog * changelog * style * Fix merge Co-authored-by: Ryan Wilson <[email protected]> Co-authored-by: Paul Beusterien <[email protected]> Co-authored-by: Morgan Chen <[email protected]> * Refactor GULSwizzledObject to ARC to unblock SwiftPM support (#5862) * Refactor GULSwizzledObject to ARC to unblock SwiftPM transition. * run ./scripts/style.sh * Assert a single swizzler per swizzled object. * testMultiSwizzling: fix iOS 10 tests * Changelog * Cleanup * Address floc review comments (#6691) * Address floc review comments * Fix style * fix bad synthesize * Remove segmentation constants from core * fix style * Allow Generic OAuth for Facebook and Apple when using the auth emulator. (#6702) * Update NOTICES now that several FirebaseML pods are deleted (#6709) * Log warning instead of failing SDK when discovering dangling target. (#6685) * Log warning instead of failing SDK when discovering dangling target. * Add unit test * Delete old test. * Initial SPM building for watchOS (#6705) * Update testing account since the previous one is disabled for GHA. (#6652) * Update the version of analytics to the latest released one. (#6562) * Disable deprecation warning (#6512) * Remove the `FIR` prefix from notification constants. (#6645) * Remove the `FIR` prefix from notification constants. * Enable Firebase 7 path in quickstart test Co-authored-by: Paul Beusterien <[email protected]> * Change instances of 'dimiss' to 'dismiss' (
Stores Personalization metadata in database along with Remote Config parameters. Adds a RCNPersonalization class that logs Personalization events, and listeners that call that when get*() is called.