diff --git a/play-services-core/src/main/kotlin/com/google/android/gms/measurement/internal/AppMeasurementDynamiteService.kt b/play-services-core/src/main/kotlin/com/google/android/gms/measurement/internal/AppMeasurementDynamiteService.kt index d5d95999df..4a84729f3d 100644 --- a/play-services-core/src/main/kotlin/com/google/android/gms/measurement/internal/AppMeasurementDynamiteService.kt +++ b/play-services-core/src/main/kotlin/com/google/android/gms/measurement/internal/AppMeasurementDynamiteService.kt @@ -23,6 +23,7 @@ private const val TAG = "AppMeasurementService" @Keep class AppMeasurementDynamiteService : IAppMeasurementDynamiteService.Stub() { private var initialized: Boolean = false + private var savedUserProperties: Bundle = Bundle() private fun returnBundle(receiver: IBundleReceiver?, bundle: Bundle?) = runCatching { receiver?.onBundle(bundle) } private fun returnResult(receiver: IBundleReceiver?, value: Any?) = returnBundle(receiver, bundleOf("r" to value)) @@ -54,12 +55,23 @@ class AppMeasurementDynamiteService : IAppMeasurementDynamiteService.Stub() { private fun setUserProperty(origin: String?, name: String?, value: Any?, z: Boolean, eventTimeMillis: Long) { Log.d(TAG, "Not yet implemented: setUserProperty($origin, $name, $value, $z)") + if (name == null) return // Skip if name is null + when (value) { + null -> savedUserProperties.remove(name) + is String -> savedUserProperties.putString(name, value) + is Int -> savedUserProperties.putInt(name, value) + is Long -> savedUserProperties.putLong(name, value) + is Float -> savedUserProperties.putFloat(name, value) + is Boolean -> savedUserProperties.putBoolean(name, value) + is Double -> savedUserProperties.putDouble(name, value.toDouble()) + else -> savedUserProperties.putString(name, value.toString()) + } } override fun getUserProperties(origin: String?, prefix: String?, includeInternal: Boolean, receiver: IBundleReceiver?) { requireInitialized() Log.d(TAG, "Not yet implemented: getUserProperties($origin, $prefix, $includeInternal)") - returnBundle(receiver, Bundle()) + returnBundle(receiver, savedUserProperties) } override fun getMaxUserProperties(origin: String?, receiver: IBundleReceiver?) {