From a8943dcbea9c822ce6ae0264536799c9f2f3880a Mon Sep 17 00:00:00 2001 From: Josh Kasten Date: Thu, 2 May 2024 19:18:46 -0400 Subject: [PATCH 1/4] add HTTP header OneSignal-Install-Id OneSignal-Install-Id is a UUIDv4 locally generated on the device and added to as an HTTP Header to all calls made to OneSignal's backend. This allows the OneSignal's backend know where traffic is coming from, no matter if the SubscriptionId or OneSignalId changes or isn't available yet. State for the new installId is encapsulated in a new InstallIdService class, where it handles generating the id and persisting it. Tests were also added to ensure the persisting behavior works as expected. --- .../java/com/onesignal/core/CoreModule.kt | 3 ++ .../core/internal/device/IInstallIdService.kt | 11 ++++++ .../internal/device/impl/InstallIdService.kt | 35 ++++++++++++++++++ .../core/internal/http/impl/HttpClient.kt | 4 +++ .../preferences/IPreferencesService.kt | 7 ++++ .../internal/device/InstallIdServiceTests.kt | 36 +++++++++++++++++++ .../core/internal/http/HttpClientTests.kt | 3 +- 7 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/device/IInstallIdService.kt create mode 100644 OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/device/impl/InstallIdService.kt create mode 100644 OneSignalSDK/onesignal/core/src/test/java/com/onesignal/core/internal/device/InstallIdServiceTests.kt diff --git a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/CoreModule.kt b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/CoreModule.kt index afac786ad6..efc06d54a4 100644 --- a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/CoreModule.kt +++ b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/CoreModule.kt @@ -13,7 +13,9 @@ import com.onesignal.core.internal.config.impl.ConfigModelStoreListener import com.onesignal.core.internal.database.IDatabaseProvider import com.onesignal.core.internal.database.impl.DatabaseProvider import com.onesignal.core.internal.device.IDeviceService +import com.onesignal.core.internal.device.IInstallIdService import com.onesignal.core.internal.device.impl.DeviceService +import com.onesignal.core.internal.device.impl.InstallIdService import com.onesignal.core.internal.http.IHttpClient import com.onesignal.core.internal.http.impl.HttpClient import com.onesignal.core.internal.http.impl.HttpConnectionFactory @@ -53,6 +55,7 @@ internal class CoreModule : IModule { builder.register