diff --git a/packages/firebase_analytics/firebase_analytics/ios/firebase_analytics/Sources/firebase_analytics/FirebaseAnalyticsPlugin.swift b/packages/firebase_analytics/firebase_analytics/ios/firebase_analytics/Sources/firebase_analytics/FirebaseAnalyticsPlugin.swift index fcd6bda21819..80c7b5c43668 100644 --- a/packages/firebase_analytics/firebase_analytics/ios/firebase_analytics/Sources/firebase_analytics/FirebaseAnalyticsPlugin.swift +++ b/packages/firebase_analytics/firebase_analytics/ios/firebase_analytics/Sources/firebase_analytics/FirebaseAnalyticsPlugin.swift @@ -136,12 +136,31 @@ public class FirebaseAnalyticsPlugin: NSObject, FLTFirebasePluginProtocol, Flutt Analytics.initiateOnDeviceConversionMeasurement(hashedEmailAddress: data) } if let hashedPhoneNumber = arguments["hashedPhoneNumber"] as? String, - let data = hashedPhoneNumber.data(using: .utf8) { + let data = hexStringToData(hashedPhoneNumber) { Analytics.initiateOnDeviceConversionMeasurement(hashedPhoneNumber: data) } completion(.success(())) } + private func hexStringToData(_ hexString: String) -> Data? { + let length = hexString.count + guard length % 2 == 0 else { return nil } + + var data = Data(capacity: length / 2) + var index = hexString.startIndex + + for _ in 0 ..< (length / 2) { + let nextIndex = hexString.index(index, offsetBy: 2) + guard let byte = UInt8(hexString[index ..< nextIndex], radix: 16) else { + return nil + } + data.append(byte) + index = nextIndex + } + + return data + } + public func didReinitializeFirebaseCore(_ completion: @escaping () -> Void) { completion() }