@@ -60,7 +60,9 @@ static const ::firebase::App* g_app = nullptr;
6060 " ()Lcom/google/android/gms/tasks/Task;" ), \
6161 X (GetInstance, " getInstance" , " (Landroid/content/Context;)" \
6262 " Lcom/google/firebase/analytics/FirebaseAnalytics;" , \
63- firebase::util::kMethodTypeStatic )
63+ firebase::util::kMethodTypeStatic ), \
64+ X (SetDefaultEventParameters, " setDefaultEventParameters" , \
65+ " (Landroid/os/Bundle;)V" )
6466// clang-format on
6567
6668// clang-format off
@@ -340,8 +342,8 @@ void AddToBundle(JNIEnv* env, jobject bundle, const char* key,
340342void AddToBundle (JNIEnv* env, jobject bundle, const char * key, double value) {
341343 jstring key_string = env->NewStringUTF (key);
342344 env->CallVoidMethod (bundle,
343- util::bundle::GetMethodId (util::bundle::kPutFloat ),
344- key_string, static_cast <jfloat >(value));
345+ util::bundle::GetMethodId (util::bundle::kPutDouble ),
346+ key_string, static_cast <jdouble >(value));
345347 util::CheckAndClearJniExceptions (env);
346348 env->DeleteLocalRef (key_string);
347349}
@@ -518,6 +520,43 @@ void LogEvent(const char* name, const Parameter* parameters,
518520 });
519521}
520522
523+ // Set the default event parametrs.
524+ void SetDefaultEventParameters (const Parameter* parameters,
525+ size_t number_of_parameters) {
526+ FIREBASE_ASSERT_RETURN_VOID (internal::IsInitialized ());
527+ JNIEnv* env = g_app->GetJNIEnv ();
528+
529+ if (!parameters) {
530+ env->CallVoidMethod (
531+ g_analytics_class_instance,
532+ analytics::GetMethodId (analytics::kSetDefaultEventParameters ), nullptr );
533+ if (util::CheckAndClearJniExceptions (env)) {
534+ LogError (" Failed to set default event parameters" );
535+ }
536+ return ;
537+ }
538+
539+ jobject bundle =
540+ env->NewObject (util::bundle::GetClass (),
541+ util::bundle::GetMethodId (util::bundle::kConstructor ));
542+ for (size_t i = 0 ; i < number_of_parameters; ++i) {
543+ const Parameter& parameter = parameters[i];
544+ if (!AddVariantToBundle (env, bundle, parameter.name , parameter.value )) {
545+ // A Variant type that couldn't be handled was passed in.
546+ LogError (
547+ " SetDefaultEventParameters(%s): %s is not a valid parameter value"
548+ " type. Excluded from default parameters." ,
549+ parameter.name , Variant::TypeName (parameter.value .type ()));
550+ }
551+ }
552+ env->CallVoidMethod (
553+ g_analytics_class_instance,
554+ analytics::GetMethodId (analytics::kSetDefaultEventParameters ), bundle);
555+ if (util::CheckAndClearJniExceptions (env)) {
556+ LogError (" Failed to set default event parameters" );
557+ }
558+ }
559+
521560// / Initiates on-device conversion measurement given a user email address on iOS
522561// / (no-op on Android). On iOS, requires dependency
523562// / GoogleAppMeasurementOnDeviceConversion to be linked in, otherwise it is a
0 commit comments