Skip to content

Commit 407c249

Browse files
authored
fix(analytics, iOS): Update hashedPhoneNumber handling to use hex string conversion (#17807)
* fix(analytics, iOS): Update hashedPhoneNumber handling to use hex string conversion and add Data extension for hex string initialization * refactor: Replace Data extension with a dedicated hex string conversion function for hashedPhoneNumber handling
1 parent 6d9becb commit 407c249

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

packages/firebase_analytics/firebase_analytics/ios/firebase_analytics/Sources/firebase_analytics/FirebaseAnalyticsPlugin.swift

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,12 +136,31 @@ public class FirebaseAnalyticsPlugin: NSObject, FLTFirebasePluginProtocol, Flutt
136136
Analytics.initiateOnDeviceConversionMeasurement(hashedEmailAddress: data)
137137
}
138138
if let hashedPhoneNumber = arguments["hashedPhoneNumber"] as? String,
139-
let data = hashedPhoneNumber.data(using: .utf8) {
139+
let data = hexStringToData(hashedPhoneNumber) {
140140
Analytics.initiateOnDeviceConversionMeasurement(hashedPhoneNumber: data)
141141
}
142142
completion(.success(()))
143143
}
144144

145+
private func hexStringToData(_ hexString: String) -> Data? {
146+
let length = hexString.count
147+
guard length % 2 == 0 else { return nil }
148+
149+
var data = Data(capacity: length / 2)
150+
var index = hexString.startIndex
151+
152+
for _ in 0 ..< (length / 2) {
153+
let nextIndex = hexString.index(index, offsetBy: 2)
154+
guard let byte = UInt8(hexString[index ..< nextIndex], radix: 16) else {
155+
return nil
156+
}
157+
data.append(byte)
158+
index = nextIndex
159+
}
160+
161+
return data
162+
}
163+
145164
public func didReinitializeFirebaseCore(_ completion: @escaping () -> Void) {
146165
completion()
147166
}

0 commit comments

Comments
 (0)