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..c84ba817ae47 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 @@ -122,7 +122,7 @@ public class FirebaseAnalyticsPlugin: NSObject, FLTFirebasePluginProtocol, Flutt } } - func initiateOnDeviceConversionMeasurement(arguments: [String: String?], + func initiateOnDeviceConversionMeasurement(arguments: [String: Any?], completion: @escaping (Result) -> Void) { if let emailAddress = arguments["emailAddress"] as? String { @@ -131,13 +131,11 @@ public class FirebaseAnalyticsPlugin: NSObject, FLTFirebasePluginProtocol, Flutt if let phoneNumber = arguments["phoneNumber"] as? String { Analytics.initiateOnDeviceConversionMeasurement(phoneNumber: phoneNumber) } - if let hashedEmailAddress = arguments["hashedEmailAddress"] as? String, - let data = hashedEmailAddress.data(using: .utf8) { - Analytics.initiateOnDeviceConversionMeasurement(hashedEmailAddress: data) + if let hashedEmailAddress = arguments["hashedEmailAddress"] as? FlutterStandardTypedData { + Analytics.initiateOnDeviceConversionMeasurement(hashedEmailAddress: hashedEmailAddress.data) } - if let hashedPhoneNumber = arguments["hashedPhoneNumber"] as? String, - let data = hashedPhoneNumber.data(using: .utf8) { - Analytics.initiateOnDeviceConversionMeasurement(hashedPhoneNumber: data) + if let hashedPhoneNumber = arguments["hashedPhoneNumber"] as? FlutterStandardTypedData { + Analytics.initiateOnDeviceConversionMeasurement(hashedPhoneNumber: hashedPhoneNumber.data) } completion(.success(())) } @@ -161,4 +159,4 @@ public class FirebaseAnalyticsPlugin: NSObject, FLTFirebasePluginProtocol, Flutt public func flutterChannelName() -> String { FLTFirebaseAnalyticsChannelName } -} +} \ No newline at end of file diff --git a/packages/firebase_analytics/firebase_analytics/lib/src/firebase_analytics.dart b/packages/firebase_analytics/firebase_analytics/lib/src/firebase_analytics.dart index 0676996ca2ad..cfa2ab1e934e 100755 --- a/packages/firebase_analytics/firebase_analytics/lib/src/firebase_analytics.dart +++ b/packages/firebase_analytics/firebase_analytics/lib/src/firebase_analytics.dart @@ -1251,7 +1251,7 @@ class FirebaseAnalytics extends FirebasePluginPlatform { /// /// Only available on iOS. Future initiateOnDeviceConversionMeasurementWithHashedEmailAddress( - String hashedEmailAddress, + Uint8List hashedEmailAddress, ) async { if (defaultTargetPlatform != TargetPlatform.iOS) { throw UnimplementedError( @@ -1268,7 +1268,7 @@ class FirebaseAnalytics extends FirebasePluginPlatform { /// /// Only available on iOS. Future initiateOnDeviceConversionMeasurementWithHashedPhoneNumber( - String hashedPhoneNumber, + Uint8List hashedPhoneNumber, ) async { if (defaultTargetPlatform != TargetPlatform.iOS) { throw UnimplementedError( diff --git a/packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/method_channel/method_channel_firebase_analytics.dart b/packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/method_channel/method_channel_firebase_analytics.dart index 0ad8119fe21c..5b9d552c640d 100644 --- a/packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/method_channel/method_channel_firebase_analytics.dart +++ b/packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/method_channel/method_channel_firebase_analytics.dart @@ -179,12 +179,12 @@ class MethodChannelFirebaseAnalytics extends FirebaseAnalyticsPlatform { Future initiateOnDeviceConversionMeasurement({ String? emailAddress, String? phoneNumber, - String? hashedEmailAddress, - String? hashedPhoneNumber, + Uint8List? hashedEmailAddress, + Uint8List? hashedPhoneNumber, }) { try { return _api.initiateOnDeviceConversionMeasurement( - { + { 'emailAddress': emailAddress, 'phoneNumber': phoneNumber, 'hashedEmailAddress': hashedEmailAddress, diff --git a/packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/pigeon/messages.pigeon.dart b/packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/pigeon/messages.pigeon.dart index 6b74cc466a3d..5b5013cbae0a 100644 --- a/packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/pigeon/messages.pigeon.dart +++ b/packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/pigeon/messages.pigeon.dart @@ -18,8 +18,7 @@ PlatformException _createConnectionError(String channelName) { ); } -List wrapResponse( - {Object? result, PlatformException? error, bool empty = false}) { +List wrapResponse({Object? result, PlatformException? error, bool empty = false}) { if (empty) { return []; } @@ -28,22 +27,21 @@ List wrapResponse( } return [error.code, error.message, error.details]; } - bool _deepEquals(Object? a, Object? b) { if (a is List && b is List) { return a.length == b.length && a.indexed - .every(((int, dynamic) item) => _deepEquals(item.$2, b[item.$1])); + .every(((int, dynamic) item) => _deepEquals(item.$2, b[item.$1])); } if (a is Map && b is Map) { - return a.length == b.length && - a.entries.every((MapEntry entry) => - (b as Map).containsKey(entry.key) && - _deepEquals(entry.value, b[entry.key])); + return a.length == b.length && a.entries.every((MapEntry entry) => + (b as Map).containsKey(entry.key) && + _deepEquals(entry.value, b[entry.key])); } return a == b; } + class AnalyticsEvent { AnalyticsEvent({ required this.name, @@ -62,15 +60,13 @@ class AnalyticsEvent { } Object encode() { - return _toList(); - } + return _toList(); } static AnalyticsEvent decode(Object result) { result as List; return AnalyticsEvent( name: result[0]! as String, - parameters: - (result[1] as Map?)?.cast(), + parameters: (result[1] as Map?)?.cast(), ); } @@ -88,9 +84,11 @@ class AnalyticsEvent { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } + class _PigeonCodec extends StandardMessageCodec { const _PigeonCodec(); @override @@ -98,7 +96,7 @@ class _PigeonCodec extends StandardMessageCodec { if (value is int) { buffer.putUint8(4); buffer.putInt64(value); - } else if (value is AnalyticsEvent) { + } else if (value is AnalyticsEvent) { buffer.putUint8(129); writeValue(buffer, value.encode()); } else { @@ -109,7 +107,7 @@ class _PigeonCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 129: + case 129: return AnalyticsEvent.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -121,11 +119,9 @@ class FirebaseAnalyticsHostApi { /// Constructor for [FirebaseAnalyticsHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - FirebaseAnalyticsHostApi( - {BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + FirebaseAnalyticsHostApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = - messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -133,16 +129,13 @@ class FirebaseAnalyticsHostApi { final String pigeonVar_messageChannelSuffix; Future logEvent(Map event) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.logEvent$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.logEvent$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([event]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([event]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -159,16 +152,13 @@ class FirebaseAnalyticsHostApi { } Future setUserId(String? userId) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.setUserId$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.setUserId$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([userId]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([userId]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -185,16 +175,13 @@ class FirebaseAnalyticsHostApi { } Future setUserProperty(String name, String? value) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.setUserProperty$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.setUserProperty$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([name, value]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([name, value]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -211,16 +198,13 @@ class FirebaseAnalyticsHostApi { } Future setAnalyticsCollectionEnabled(bool enabled) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.setAnalyticsCollectionEnabled$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.setAnalyticsCollectionEnabled$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([enabled]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([enabled]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -237,10 +221,8 @@ class FirebaseAnalyticsHostApi { } Future resetAnalyticsData() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.resetAnalyticsData$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.resetAnalyticsData$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -262,16 +244,13 @@ class FirebaseAnalyticsHostApi { } Future setSessionTimeoutDuration(int timeout) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.setSessionTimeoutDuration$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.setSessionTimeoutDuration$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([timeout]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([timeout]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -288,16 +267,13 @@ class FirebaseAnalyticsHostApi { } Future setConsent(Map consent) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.setConsent$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.setConsent$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([consent]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([consent]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -313,18 +289,14 @@ class FirebaseAnalyticsHostApi { } } - Future setDefaultEventParameters( - Map? parameters) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.setDefaultEventParameters$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future setDefaultEventParameters(Map? parameters) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.setDefaultEventParameters$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([parameters]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([parameters]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -341,10 +313,8 @@ class FirebaseAnalyticsHostApi { } Future getAppInstanceId() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.getAppInstanceId$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.getAppInstanceId$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -366,10 +336,8 @@ class FirebaseAnalyticsHostApi { } Future getSessionId() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.getSessionId$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.getSessionId$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -390,18 +358,14 @@ class FirebaseAnalyticsHostApi { } } - Future initiateOnDeviceConversionMeasurement( - Map arguments) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.initiateOnDeviceConversionMeasurement$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future initiateOnDeviceConversionMeasurement(Map arguments) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_analytics_platform_interface.FirebaseAnalyticsHostApi.initiateOnDeviceConversionMeasurement$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([arguments]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([arguments]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { diff --git a/packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/platform_interface/platform_interface_firebase_analytics.dart b/packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/platform_interface/platform_interface_firebase_analytics.dart index 8fbe90066d5b..0f3d8332f4c0 100644 --- a/packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/platform_interface/platform_interface_firebase_analytics.dart +++ b/packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/platform_interface/platform_interface_firebase_analytics.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. import 'dart:async'; +import 'dart:typed_data'; import 'package:firebase_core/firebase_core.dart'; import 'package:meta/meta.dart' show protected; @@ -202,8 +203,8 @@ abstract class FirebaseAnalyticsPlatform extends PlatformInterface { Future initiateOnDeviceConversionMeasurement({ String? emailAddress, String? phoneNumber, - String? hashedEmailAddress, - String? hashedPhoneNumber, + Uint8List? hashedEmailAddress, + Uint8List? hashedPhoneNumber, }) { throw UnimplementedError( 'initiateOnDeviceConversionMeasurement() is not implemented', diff --git a/packages/firebase_analytics/firebase_analytics_platform_interface/pigeons/messages.dart b/packages/firebase_analytics/firebase_analytics_platform_interface/pigeons/messages.dart index 4c1ada746e85..b0fef7bda46d 100644 --- a/packages/firebase_analytics/firebase_analytics_platform_interface/pigeons/messages.dart +++ b/packages/firebase_analytics/firebase_analytics_platform_interface/pigeons/messages.dart @@ -65,5 +65,5 @@ abstract class FirebaseAnalyticsHostApi { int? getSessionId(); @async - void initiateOnDeviceConversionMeasurement(Map arguments); + void initiateOnDeviceConversionMeasurement(Map arguments); }