Skip to content

Commit 7a19a44

Browse files
authored
Add Analytics function for on-device conversion (#1429)
* Add Analytics function for phone number conversion * Formatting * Update analytics.h * Update analytics_test.cc
1 parent 86198bb commit 7a19a44

File tree

9 files changed

+60
-0
lines changed

9 files changed

+60
-0
lines changed

analytics/integration_test/src/integration_test.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,8 @@ TEST_F(FirebaseAnalyticsTest, TestSetProperties) {
190190
// Initiate on-device conversion measurement.
191191
firebase::analytics::InitiateOnDeviceConversionMeasurementWithEmailAddress(
192192
"my_email@site.com");
193+
firebase::analytics::InitiateOnDeviceConversionMeasurementWithPhoneNumber(
194+
"+15551234567");
193195
}
194196

195197
TEST_F(FirebaseAnalyticsTest, TestLogEvents) {

analytics/src/analytics_android.cc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,16 @@ void InitiateOnDeviceConversionMeasurementWithEmailAddress(
411411
// No-op on Android
412412
}
413413

414+
/// Initiates on-device conversion measurement given a phone number on iOS
415+
/// (no-op on Android). On iOS, requires dependency
416+
/// GoogleAppMeasurementOnDeviceConversion to be linked in, otherwise it is a
417+
/// no-op.
418+
void InitiateOnDeviceConversionMeasurementWithPhoneNumber(
419+
const char* phone_number) {
420+
FIREBASE_ASSERT_RETURN_VOID(internal::IsInitialized());
421+
// No-op on Android
422+
}
423+
414424
// Set a user property to the given value.
415425
void SetUserProperty(const char* name, const char* value) {
416426
FIREBASE_ASSERT_RETURN_VOID(internal::IsInitialized());

analytics/src/analytics_ios.mm

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,14 @@ void InitiateOnDeviceConversionMeasurementWithEmailAddress(const char* email_add
266266
[FIRAnalytics initiateOnDeviceConversionMeasurementWithEmailAddress:@(email_address)];
267267
}
268268

269+
/// Initiates on-device conversion measurement given a phone number on iOS (no-op on
270+
/// Android). On iOS, requires dependency GoogleAppMeasurementOnDeviceConversion to be linked
271+
/// in, otherwise it is a no-op.
272+
void InitiateOnDeviceConversionMeasurementWithPhoneNumber(const char* phone_number) {
273+
FIREBASE_ASSERT_RETURN_VOID(internal::IsInitialized());
274+
[FIRAnalytics initiateOnDeviceConversionMeasurementWithPhoneNumber:@(phone_number)];
275+
}
276+
269277
// Set a user property to the given value.
270278
void SetUserProperty(const char* name, const char* value) {
271279
FIREBASE_ASSERT_RETURN_VOID(internal::IsInitialized());

analytics/src/analytics_stub.cc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,15 @@ void InitiateOnDeviceConversionMeasurementWithEmailAddress(
106106
FIREBASE_ASSERT_RETURN_VOID(internal::IsInitialized());
107107
}
108108

109+
/// Initiates on-device conversion measurement given a phone number on iOS
110+
/// (no-op on Android). On iOS, requires dependency
111+
/// GoogleAppMeasurementOnDeviceConversion to be linked in, otherwise it is a
112+
/// no-op.
113+
void InitiateOnDeviceConversionMeasurementWithPhoneNumber(
114+
const char* phone_number) {
115+
FIREBASE_ASSERT_RETURN_VOID(internal::IsInitialized());
116+
}
117+
109118
// Set a user property to the given value.
110119
void SetUserProperty(const char* /*name*/, const char* /*value*/) {
111120
FIREBASE_ASSERT_RETURN_VOID(internal::IsInitialized());

analytics/src/include/firebase/analytics.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,17 @@ void LogEvent(const char* name, const Parameter* parameters,
487487
void InitiateOnDeviceConversionMeasurementWithEmailAddress(
488488
const char* email_address);
489489

490+
/// Initiates on-device conversion measurement given a phone number in E.164
491+
/// format on iOS (no-op on Android). On iOS, requires dependency
492+
/// GoogleAppMeasurementOnDeviceConversion to be linked in, otherwise it is a
493+
/// no-op.
494+
/// @param phone_number User phone number. Must be in E.164 format, which means
495+
/// it must be
496+
/// limited to a maximum of 15 digits and must include a plus sign (+) prefix
497+
/// and country code with no dashes, parentheses, or spaces.
498+
void InitiateOnDeviceConversionMeasurementWithPhoneNumber(
499+
const char* phone_number);
500+
490501
/// @brief Set a user property to the given value.
491502
///
492503
/// Properties associated with a user allow a developer to segment users

analytics/src_ios/fake/FIRAnalytics.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323

2424
+ (void)initiateOnDeviceConversionMeasurementWithEmailAddress:(nonnull NSString *)emailAddress;
2525

26+
+ (void)InitiateOnDeviceConversionMeasurementWithPhoneNumber:(nonnull NSString *)phoneNumber;
27+
2628
+ (void)setUserPropertyString:(nullable NSString *)value forName:(nonnull NSString *)name;
2729

2830
+ (void)setUserID:(nullable NSString *)userID;

analytics/src_ios/fake/FIRAnalytics.mm

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ + (void)initiateOnDeviceConversionMeasurementWithEmailAddress:(nonnull NSString
6060
{ [emailAddress UTF8String] });
6161
}
6262

63+
+ (void)initiateOnDeviceConversionMeasurementWithPhoneNumber:(nonnull NSString *)phoneNumber {
64+
FakeReporter->AddReport("+[FIRAnalytics initiateOnDeviceConversionMeasurementWithPhoneNumber:]",
65+
{ [phoneNumber UTF8String] });
66+
}
67+
6368
+ (void)setUserPropertyString:(nullable NSString *)value forName:(nonnull NSString *)name {
6469
FakeReporter->AddReport("+[FIRAnalytics setUserPropertyString:forName:]",
6570
{ [name UTF8String], value ? [value UTF8String] : "nil" });

analytics/tests/analytics_test.cc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,16 @@ TEST_F(AnalyticsTest,
232232
InitiateOnDeviceConversionMeasurementWithEmailAddress("my_email");
233233
}
234234

235+
TEST_F(AnalyticsTest,
236+
TestInitiateOnDeviceConversionMeasurementWithPhoneNumber) {
237+
// InitiateOnDeviceConversionMeasurementWithPhoneNumber is no-op on Android
238+
AddExpectationApple(
239+
"+[FIRAnalytics initiateOnDeviceConversionMeasurementWithPhoneNumber:]",
240+
{"+15551234567"});
241+
242+
InitiateOnDeviceConversionMeasurementWithPhoneNumber("+15551234567");
243+
}
244+
235245
TEST_F(AnalyticsTest, TestSetUserProperty) {
236246
AddExpectationAndroid("FirebaseAnalytics.setUserProperty",
237247
{"my_property", "my_value"});

release_build_files/readme.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -629,6 +629,9 @@ code.
629629
## Release Notes
630630
### Next Release
631631
- Changes
632+
- Analytics (iOS): Added InitiateOnDeviceConversionMeasurementWithPhoneNumber
633+
function to facilitate the [on-device conversion
634+
measurement](https://support.google.com/google-ads/answer/12119136) API.
632635
- Auth: Add Firebase Auth Emulator support. Set the environment variable
633636
USE_AUTH_EMULATOR=yes (and optionally AUTH_EMULATOR_PORT, default 9099)
634637
to connect to the local Firebase Auth Emulator.

0 commit comments

Comments
 (0)