Skip to content

Commit 2f5a980

Browse files
FIRApp: add apple platform to firebaseUserAgent (#4939)
* FIRAppTests: apple platform flag * FIRApp: add apple platform to firebaseUserAgent * Make sure Catalyst app run on macOS is logged as "maccatalyst" * Comments
1 parent 65def81 commit 2f5a980

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed

FirebaseCore/Sources/FIRApp.m

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@
7878
NSString *const kFIRAppDiagnosticsFIRAppKey = @"FIRApp";
7979
NSString *const kFIRAppDiagnosticsSDKNameKey = @"SDKName";
8080
NSString *const kFIRAppDiagnosticsSDKVersionKey = @"SDKVersion";
81+
NSString *const kFIRAppDiagnosticsApplePlatformPrefix = @"apple-platform";
8182

8283
// Auth internal notification notification and key.
8384
NSString *const FIRAuthStateDidChangeInternalNotification =
@@ -579,6 +580,9 @@ + (NSString *)firebaseUserAgent {
579580

580581
NSString *swiftFlagValue = [self hasSwiftRuntime] ? @"true" : @"false";
581582
[FIRApp registerLibrary:@"swift" withVersion:swiftFlagValue];
583+
584+
[FIRApp registerLibrary:kFIRAppDiagnosticsApplePlatformPrefix
585+
withVersion:[self applePlatform]];
582586
});
583587

584588
NSMutableArray<NSString *> *libraries =
@@ -606,6 +610,26 @@ + (BOOL)hasSwiftRuntime {
606610
return hasSwiftRuntime;
607611
}
608612

613+
+ (NSString *)applePlatform {
614+
NSString *applePlatform = @"unknown";
615+
616+
// When a Catalyst app is run on macOS then both `TARGET_OS_MACCATALYST` and `TARGET_OS_IOS` are
617+
// `true`, which means the condition list is order-sensitive.
618+
#if TARGET_OS_MACCATALYST
619+
applePlatform = @"maccatalyst";
620+
#elif TARGET_OS_IOS
621+
applePlatform = @"ios";
622+
#elif TARGET_OS_TV
623+
applePlatform = @"tvos";
624+
#elif TARGET_OS_OSX
625+
applePlatform = @"macos";
626+
#elif TARGET_OS_WATCH
627+
applePlatform = @"watchos";
628+
#endif
629+
630+
return applePlatform;
631+
}
632+
609633
- (void)checkExpectedBundleID {
610634
NSArray *bundles = [FIRBundleUtil relevantBundles];
611635
NSString *expectedBundleID = [self expectedBundleID];

FirebaseCore/Tests/Unit/FIRAppTest.m

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -838,6 +838,48 @@ - (void)testSwiftFlagWithNoSwift {
838838
XCTAssertTrue([[FIRApp firebaseUserAgent] containsString:@"swift/false"]);
839839
}
840840

841+
- (void)testApplePlatformFlag {
842+
// When a Catalyst app is run on macOS then both `TARGET_OS_MACCATALYST` and `TARGET_OS_IOS` are
843+
// `true`.
844+
#if TARGET_OS_MACCATALYST
845+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/ios"]);
846+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/tvos"]);
847+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/macos"]);
848+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/watchos"]);
849+
XCTAssertTrue([[FIRApp firebaseUserAgent] containsString:@"apple-platform/maccatalyst"]);
850+
#elif TARGET_OS_IOS
851+
XCTAssertTrue([[FIRApp firebaseUserAgent] containsString:@"apple-platform/ios"]);
852+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/tvos"]);
853+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/macos"]);
854+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/watchos"]);
855+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/maccatalyst"]);
856+
#endif // TARGET_OS_MACCATALYST
857+
858+
#if TARGET_OS_TV
859+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/ios"]);
860+
XCTAssertTrue([[FIRApp firebaseUserAgent] containsString:@"apple-platform/tvos"]);
861+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/macos"]);
862+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/watchos"]);
863+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/maccatalyst"]);
864+
#endif // TARGET_OS_TV
865+
866+
#if TARGET_OS_OSX
867+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/ios"]);
868+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/tvos"]);
869+
XCTAssertTrue([[FIRApp firebaseUserAgent] containsString:@"apple-platform/macos"]);
870+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/watchos"]);
871+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/maccatalyst"]);
872+
#endif // TARGET_OS_OSX
873+
874+
#if TARGET_OS_WATCH
875+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/ios"]);
876+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/tvos"]);
877+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/macos"]);
878+
XCTAssertTrue([[FIRApp firebaseUserAgent] containsString:@"apple-platform/watchos"]);
879+
XCTAssertFalse([[FIRApp firebaseUserAgent] containsString:@"apple-platform/maccatalyst"]);
880+
#endif // TARGET_OS_WATCH
881+
}
882+
841883
#pragma mark - Core Diagnostics
842884

843885
- (void)testCoreDiagnosticsLoggedWhenFIRAppIsConfigured {

0 commit comments

Comments
 (0)