Skip to content

Commit 533a317

Browse files
authored
Add InitiateOnDeviceConversion method to Analytics (#961)
* Add InitiateOnDeviceConversion to c++ sdk * Added release notes
1 parent 5c42ab6 commit 533a317

File tree

9 files changed

+60
-1
lines changed

9 files changed

+60
-1
lines changed

analytics/integration_test/src/integration_test.cc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,9 @@ TEST_F(FirebaseAnalyticsTest, TestSetProperties) {
108108
firebase::analytics::kUserPropertySignUpMethod, "Google");
109109
// Set the user ID.
110110
firebase::analytics::SetUserId("my_integration_test_user");
111+
// Initiate on-device conversion measurement.
112+
firebase::analytics::InitiateOnDeviceConversionMeasurementWithEmailAddress(
113+
111114
}
112115

113116
TEST_F(FirebaseAnalyticsTest, TestLogEvents) {

analytics/src/analytics_android.cc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,16 @@ void LogEvent(const char* name, const Parameter* parameters,
264264
});
265265
}
266266

267+
/// Initiates on-device conversion measurement given a user email address on iOS
268+
/// (no-op on Android). On iOS, requires dependency
269+
/// GoogleAppMeasurementOnDeviceConversion to be linked in, otherwise it is a
270+
/// no-op.
271+
void InitiateOnDeviceConversionMeasurementWithEmailAddress(
272+
const char* email_address) {
273+
FIREBASE_ASSERT_RETURN_VOID(internal::IsInitialized());
274+
// No-op on Android
275+
}
276+
267277
// Set a user property to the given value.
268278
void SetUserProperty(const char* name, const char* value) {
269279
FIREBASE_ASSERT_RETURN_VOID(internal::IsInitialized());

analytics/src/analytics_ios.mm

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
#import <Foundation/Foundation.h>
1818

19+
#import "FIRAnalytics+OnDevice.h"
1920
#import "FIRAnalytics.h"
2021

2122
#include "analytics/src/include/firebase/analytics.h"
@@ -222,6 +223,14 @@ void LogEvent(const char* name, const Parameter* parameters, size_t number_of_pa
222223
[FIRAnalytics logEventWithName:@(name) parameters:parameters_dict];
223224
}
224225

226+
/// Initiates on-device conversion measurement given a user email address on iOS (no-op on
227+
/// Android). On iOS, requires dependency GoogleAppMeasurementOnDeviceConversion to be linked
228+
/// in, otherwise it is a no-op.
229+
void InitiateOnDeviceConversionMeasurementWithEmailAddress(const char* email_address) {
230+
FIREBASE_ASSERT_RETURN_VOID(internal::IsInitialized());
231+
[FIRAnalytics initiateOnDeviceConversionMeasurementWithEmailAddress:@(email_address)];
232+
}
233+
225234
// Set a user property to the given value.
226235
void SetUserProperty(const char* name, const char* value) {
227236
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
@@ -92,6 +92,15 @@ void LogEvent(const char* /*name*/, const Parameter* /*parameters*/,
9292
FIREBASE_ASSERT_RETURN_VOID(internal::IsInitialized());
9393
}
9494

95+
/// Initiates on-device conversion measurement given a user email address on iOS
96+
/// (no-op on Android). On iOS, requires dependency
97+
/// GoogleAppMeasurementOnDeviceConversion to be linked in, otherwise it is a
98+
/// no-op.
99+
void InitiateOnDeviceConversionMeasurementWithEmailAddress(
100+
const char* email_address) {
101+
FIREBASE_ASSERT_RETURN_VOID(internal::IsInitialized());
102+
}
103+
95104
// Set a user property to the given value.
96105
void SetUserProperty(const char* /*name*/, const char* /*value*/) {
97106
FIREBASE_ASSERT_RETURN_VOID(internal::IsInitialized());

analytics/src/include/firebase/analytics.h

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,7 @@ void LogEvent(const char* name);
433433
// in the C# code.
434434
%csmethodmodifiers LogEvent "public unsafe"
435435
#endif // SWIG
436+
// clang-format on
436437

437438
/// @brief Log an event with associated parameters.
438439
///
@@ -456,7 +457,15 @@ void LogEvent(const char* name);
456457
/// array.
457458
void LogEvent(const char* name, const Parameter* parameters,
458459
size_t number_of_parameters);
459-
// clang-format on
460+
461+
/// Initiates on-device conversion measurement given a user email address on iOS
462+
/// (no-op on Android). On iOS, requires dependency
463+
/// GoogleAppMeasurementOnDeviceConversion to be linked in, otherwise it is a
464+
/// no-op.
465+
/// @param[in] email_address User email address. Include a domain name for all
466+
/// email addresses (e.g. gmail.com or hotmail.co.jp).
467+
void InitiateOnDeviceConversionMeasurementWithEmailAddress(
468+
const char* email_address);
460469

461470
/// @brief Set a user property to the given value.
462471
///

analytics/src_ios/fake/FIRAnalytics.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
+ (void)logEventWithName:(nonnull NSString *)name
2222
parameters:(nullable NSDictionary<NSString *, id> *)parameters;
2323

24+
+ (void)initiateOnDeviceConversionMeasurementWithEmailAddress:(nonnull NSString *)emailAddress;
25+
2426
+ (void)setUserPropertyString:(nullable NSString *)value forName:(nonnull NSString *)name;
2527

2628
+ (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
@@ -55,6 +55,11 @@ + (void)logEventWithName:(nonnull NSString *)name
5555
}
5656
}
5757

58+
+ (void)initiateOnDeviceConversionMeasurementWithEmailAddress:(nonnull NSString *)emailAddress {
59+
FakeReporter->AddReport("+[FIRAnalytics initiateOnDeviceConversionMeasurementWithEmailAddress:]",
60+
{ [emailAddress UTF8String] });
61+
}
62+
5863
+ (void)setUserPropertyString:(nullable NSString *)value forName:(nonnull NSString *)name {
5964
FakeReporter->AddReport("+[FIRAnalytics setUserPropertyString:forName:]",
6065
{ [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
@@ -222,6 +222,16 @@ TEST_F(AnalyticsTest, TestLogEventParameters) {
222222
LogEvent("my_event", parameters, sizeof(parameters) / sizeof(parameters[0]));
223223
}
224224

225+
TEST_F(AnalyticsTest,
226+
TestInitiateOnDeviceConversionMeasurementWithEmailAddress) {
227+
// InitiateOnDeviceConversionMeasurementWithEmailAddress is no-op on Android
228+
AddExpectationApple(
229+
"+[FIRAnalytics initiateOnDeviceConversionMeasurementWithEmailAddress:]",
230+
{"my_email"});
231+
232+
InitiateOnDeviceConversionMeasurementWithEmailAddress("my_email");
233+
}
234+
225235
TEST_F(AnalyticsTest, TestSetUserProperty) {
226236
AddExpectationAndroid("FirebaseAnalytics.setUserProperty",
227237
{"my_property", "my_value"});

release_build_files/readme.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -605,6 +605,8 @@ code.
605605
only using AdMob, Analytics, Remote Config, or Messaging.
606606
- Functions: Add a new method `GetHttpsCallableFromURL`, to create callables
607607
with URLs other than cloudfunctions.net.
608+
- Analytics (iOS): Added InitiateOnDeviceConversionMeasurementWithEmail function to facilitate the
609+
[on-device conversion measurement](https://support.google.com/google-ads/answer/12119136) API.
608610

609611
### 9.0.0
610612
- Changes

0 commit comments

Comments
 (0)