Skip to content

Commit 1e25ec1

Browse files
authored
feat(analytics, ios): add support for initiateOnDeviceConversionMeasurementWithPhoneNumber and initiateOnDeviceConversionMeasurementWithHashedEmailAddress (#12976)
* feat(analytics, ios): add support for initiateOnDeviceConversionMeasurementWithPhoneNumber and initiateOnDeviceConversionMeasurementWithHashedEmailAddress * mocks
1 parent 125f820 commit 1e25ec1

File tree

7 files changed

+56
-2
lines changed

7 files changed

+56
-2
lines changed

packages/firebase_analytics/firebase_analytics/example/ios/Runner.xcodeproj/project.pbxproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@
169169
97C146E61CF9000F007C117D /* Project object */ = {
170170
isa = PBXProject;
171171
attributes = {
172-
LastUpgradeCheck = 1430;
172+
LastUpgradeCheck = 1510;
173173
ORGANIZATIONNAME = "The Chromium Authors";
174174
TargetAttributes = {
175175
97C146ED1CF9000F007C117D = {

packages/firebase_analytics/firebase_analytics/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1430"
3+
LastUpgradeVersion = "1510"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

packages/firebase_analytics/firebase_analytics/ios/Classes/FLTFirebaseAnalyticsPlugin.m

+10
Original file line numberDiff line numberDiff line change
@@ -186,13 +186,23 @@ - (void)initiateOnDeviceConversionMeasurement:(id)arguments
186186
withMethodCallResult:(FLTFirebaseMethodCallResult *)result {
187187
NSString *emailAddress = arguments[@"emailAddress"];
188188
NSString *phoneNumber = arguments[@"phoneNumber"];
189+
NSString *hashedEmailAddress = arguments[@"hashedEmailAddress"];
190+
NSString *hashedPhoneNumber = arguments[@"hashedPhoneNumber"];
189191

190192
if (![emailAddress isKindOfClass:[NSNull class]]) {
191193
[FIRAnalytics initiateOnDeviceConversionMeasurementWithEmailAddress:emailAddress];
192194
}
193195
if (![phoneNumber isKindOfClass:[NSNull class]]) {
194196
[FIRAnalytics initiateOnDeviceConversionMeasurementWithPhoneNumber:phoneNumber];
195197
}
198+
if (![hashedEmailAddress isKindOfClass:[NSNull class]]) {
199+
NSData *data = [hashedEmailAddress dataUsingEncoding:NSUTF8StringEncoding];
200+
[FIRAnalytics initiateOnDeviceConversionMeasurementWithHashedEmailAddress:data];
201+
}
202+
if (![hashedPhoneNumber isKindOfClass:[NSNull class]]) {
203+
NSData *data = [hashedPhoneNumber dataUsingEncoding:NSUTF8StringEncoding];
204+
[FIRAnalytics initiateOnDeviceConversionMeasurementWithHashedPhoneNumber:data];
205+
}
196206
result.success(nil);
197207
}
198208

packages/firebase_analytics/firebase_analytics/lib/src/firebase_analytics.dart

+34
Original file line numberDiff line numberDiff line change
@@ -1292,6 +1292,40 @@ class FirebaseAnalytics extends FirebasePluginPlatform {
12921292
phoneNumber: phoneNumber,
12931293
);
12941294
}
1295+
1296+
/// Initiates on-device conversion measurement given a sha256-hashed, UTF8 encoded, user email address.
1297+
/// Requires dependency GoogleAppMeasurementOnDeviceConversion to be linked in, otherwise it is a no-op.
1298+
///
1299+
/// Only available on iOS.
1300+
Future<void> initiateOnDeviceConversionMeasurementWithHashedEmailAddress(
1301+
String hashedEmailAddress,
1302+
) async {
1303+
if (defaultTargetPlatform != TargetPlatform.iOS) {
1304+
throw UnimplementedError(
1305+
'initiateOnDeviceConversionMeasurementWithHashedEmailAddress() is only supported on iOS.',
1306+
);
1307+
}
1308+
await _delegate.initiateOnDeviceConversionMeasurement(
1309+
hashedEmailAddress: hashedEmailAddress,
1310+
);
1311+
}
1312+
1313+
/// Initiates on-device conversion measurement given a sha256-hashed, UTF8 encoded, phone number in E.164 format.
1314+
/// Requires dependency GoogleAppMeasurementOnDeviceConversion to be linked in, otherwise it is a no-op.
1315+
///
1316+
/// Only available on iOS.
1317+
Future<void> initiateOnDeviceConversionMeasurementWithHashedPhoneNumber(
1318+
String hashedPhoneNumber,
1319+
) async {
1320+
if (defaultTargetPlatform != TargetPlatform.iOS) {
1321+
throw UnimplementedError(
1322+
'initiateOnDeviceConversionMeasurementWithHashedPhoneNumber() is only supported on iOS.',
1323+
);
1324+
}
1325+
await _delegate.initiateOnDeviceConversionMeasurement(
1326+
hashedPhoneNumber: hashedPhoneNumber,
1327+
);
1328+
}
12951329
}
12961330

12971331
/// Creates a new map containing all of the key/value pairs from [parameters]

packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/method_channel/method_channel_firebase_analytics.dart

+4
Original file line numberDiff line numberDiff line change
@@ -214,13 +214,17 @@ class MethodChannelFirebaseAnalytics extends FirebaseAnalyticsPlatform {
214214
Future<void> initiateOnDeviceConversionMeasurement({
215215
String? emailAddress,
216216
String? phoneNumber,
217+
String? hashedEmailAddress,
218+
String? hashedPhoneNumber,
217219
}) {
218220
try {
219221
return channel.invokeMethod<void>(
220222
'Analytics#initiateOnDeviceConversionMeasurement',
221223
<String, String?>{
222224
'emailAddress': emailAddress,
223225
'phoneNumber': phoneNumber,
226+
'hashedEmailAddress': hashedEmailAddress,
227+
'hashedPhoneNumber': hashedPhoneNumber,
224228
},
225229
);
226230
} catch (e, s) {

packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/platform_interface/platform_interface_firebase_analytics.dart

+2
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,8 @@ abstract class FirebaseAnalyticsPlatform extends PlatformInterface {
208208
Future<void> initiateOnDeviceConversionMeasurement({
209209
String? emailAddress,
210210
String? phoneNumber,
211+
String? hashedEmailAddress,
212+
String? hashedPhoneNumber,
211213
}) {
212214
throw UnimplementedError(
213215
'initiateOnDeviceConversionMeasurement() is not implemented',

packages/firebase_analytics/firebase_analytics_web/test/firebase_analytics_web_test.mocks.dart

+4
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,8 @@ class MockFirebaseAnalyticsWeb extends _i1.Mock
289289
_i5.Future<void> initiateOnDeviceConversionMeasurement({
290290
String? emailAddress,
291291
String? phoneNumber,
292+
String? hashedEmailAddress,
293+
String? hashedPhoneNumber,
292294
}) =>
293295
(super.noSuchMethod(
294296
Invocation.method(
@@ -297,6 +299,8 @@ class MockFirebaseAnalyticsWeb extends _i1.Mock
297299
{
298300
#emailAddress: emailAddress,
299301
#phoneNumber: phoneNumber,
302+
#hashedEmailAddress: hashedEmailAddress,
303+
#hashedPhoneNumber: hashedPhoneNumber,
300304
},
301305
),
302306
returnValue: _i5.Future<void>.value(),

0 commit comments

Comments
 (0)