Skip to content

Commit ef571e0

Browse files
authored
Make Firebase Performance XCode 15 compatible. (#11439)
1 parent 0323c2d commit ef571e0

File tree

6 files changed

+27
-55
lines changed

6 files changed

+27
-55
lines changed

FirebasePerformance/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# Unreleased
2+
- [fixed] Make Firebase performance compatible with Xcode15.
3+
- [changed] Removed the capability to access Carrier information of the device since that API is deprecated by Apple.
4+
15
# 10.11.0
26
- [fixed] Fixed a bug to disable data collection if the data collection was disabled before Firebase application was configured.
37

FirebasePerformance/Sources/FPRDataUtils.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,3 @@ FOUNDATION_EXTERN NSString *FPRValidatedAttributeValue(NSString *value);
4646
* @return The unchanged url string or a truncated version if the length goes beyond the limit.
4747
*/
4848
FOUNDATION_EXTERN NSString *FPRTruncatedURLString(NSString *URLString);
49-
50-
/** Ensures proper length and numerals and returns a concatenated version if valid.
51-
*
52-
* @param mcc 3 digit MCC code.
53-
* @param mnc 2 or 3 digit MNC code.
54-
* @return Concatenated mcc and mnc codes if valid. Otherwise nil.
55-
*/
56-
FOUNDATION_EXTERN NSString *FPRValidatedMccMnc(NSString *mcc, NSString *mnc);

FirebasePerformance/Sources/FPRDataUtils.m

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -124,16 +124,3 @@
124124
}
125125
return truncatedURLString;
126126
}
127-
128-
NSString *FPRValidatedMccMnc(NSString *mcc, NSString *mnc) {
129-
if ([mcc length] != 3 || [mnc length] < 2 || [mnc length] > 3) return nil;
130-
131-
static NSCharacterSet *notDigits;
132-
static dispatch_once_t token;
133-
dispatch_once(&token, ^{
134-
notDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
135-
});
136-
NSString *mccMnc = [mcc stringByAppendingString:mnc];
137-
if ([mccMnc rangeOfCharacterFromSet:notDigits].location != NSNotFound) return nil;
138-
return mccMnc;
139-
}

FirebasePerformance/Sources/FPRNanoPbUtils.m

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,28 @@ static firebase_perf_v1_NetworkConnectionInfo_MobileSubtype FPRCellularNetworkTy
129129
};
130130
});
131131

132-
NSString *networkString = FPRNetworkInfo().currentRadioAccessTechnology;
133-
NSNumber *cellularNetworkType = cellularNetworkToMobileSubtype[networkString];
134-
return cellularNetworkType.intValue;
132+
// Use recent APIs for iOS 12 and above and older APIs for before.
133+
if (@available(iOS 12, *)) {
134+
NSDictionary<NSString *, NSString *> *radioAccessors =
135+
FPRNetworkInfo().serviceCurrentRadioAccessTechnology;
136+
if (radioAccessors.count > 0) {
137+
NSString *networkString = [radioAccessors.allValues objectAtIndex:0];
138+
NSNumber *cellularNetworkType = cellularNetworkToMobileSubtype[networkString];
139+
return cellularNetworkType.intValue;
140+
}
141+
} else {
142+
#pragma clang diagnostic push
143+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
144+
145+
NSString *networkString = FPRNetworkInfo().currentRadioAccessTechnology;
146+
147+
#pragma clang diagnostic pop
148+
149+
NSNumber *cellularNetworkType = cellularNetworkToMobileSubtype[networkString];
150+
return cellularNetworkType.intValue;
151+
}
152+
153+
return firebase_perf_v1_NetworkConnectionInfo_MobileSubtype_UNKNOWN_MOBILE_SUBTYPE;
135154
}
136155
#endif
137156

@@ -218,12 +237,6 @@ firebase_perf_v1_ApplicationInfo FPRGetApplicationInfoMessage(void) {
218237
iosAppInfo.has_network_connection_info = true;
219238
iosAppInfo.network_connection_info.has_network_type = true;
220239
#ifdef TARGET_HAS_MOBILE_CONNECTIVITY
221-
CTTelephonyNetworkInfo *networkInfo = FPRNetworkInfo();
222-
CTCarrier *provider = networkInfo.subscriberCellularProvider;
223-
NSString *mccMnc = FPRValidatedMccMnc(provider.mobileCountryCode, provider.mobileNetworkCode);
224-
if (mccMnc) {
225-
iosAppInfo.mcc_mnc = FPREncodeString(mccMnc);
226-
}
227240
if (iosAppInfo.network_connection_info.network_type ==
228241
firebase_perf_v1_NetworkConnectionInfo_NetworkType_MOBILE) {
229242
iosAppInfo.network_connection_info.mobile_subtype = FPRCellularNetworkType();

FirebasePerformance/Tests/Unit/FPRNanoPbUtilsTest.m

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -95,30 +95,6 @@ - (void)testApplicationInfoMessageWithAttributes {
9595
[performance removeAttribute:@"foo2"];
9696
}
9797

98-
/** Tests if mccMnc validation is catching non numerals. */
99-
- (void)testMccMncOnlyHasNumbers {
100-
NSString *mccMnc = FPRValidatedMccMnc(@"123", @"MKV");
101-
XCTAssertNil(mccMnc);
102-
mccMnc = FPRValidatedMccMnc(@"ABC", @"123");
103-
XCTAssertNil(mccMnc);
104-
}
105-
106-
/** Tests if mccMnc validation is working. */
107-
- (void)testMccMnc {
108-
NSString *mccMnc = FPRValidatedMccMnc(@"123", @"22");
109-
XCTAssertNotNil(mccMnc);
110-
mccMnc = FPRValidatedMccMnc(@"123", @"223");
111-
XCTAssertNotNil(mccMnc);
112-
}
113-
114-
/** Tests if mccMnc validation catches improper lengths. */
115-
- (void)testMccMncLength {
116-
NSString *mccMnc = FPRValidatedMccMnc(@"12", @"22");
117-
XCTAssertNil(mccMnc);
118-
mccMnc = FPRValidatedMccMnc(@"123", @"2");
119-
XCTAssertNil(mccMnc);
120-
}
121-
12298
/** Validates that a valid FIRTrace object to firebase_perf_v1_TraceMetric conversion is successful.
12399
*/
124100
- (void)testTraceMetricMessageCreation {

FirebasePerformance/Tests/Unit/FPRNetworkTraceTest.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ - (void)testTrimmedURLForShortLengthURLs {
433433
NSURLRequest *URLRequest = [NSURLRequest requestWithURL:URL];
434434
FPRNetworkTrace *networkTrace = [[FPRNetworkTrace alloc] initWithURLRequest:URLRequest];
435435
XCTAssertNotNil(networkTrace);
436-
XCTAssertEqual(networkTrace.URLRequest.URL.absoluteString, urlString);
436+
XCTAssertEqualObjects(networkTrace.URLRequest.URL.absoluteString, urlString);
437437
}
438438

439439
/** Validates that every trace contains a session Id. */

0 commit comments

Comments
 (0)