From 0c0b08980b10cd704284e7fe906a04fca0a9e32c Mon Sep 17 00:00:00 2001 From: Cristian Dregan Date: Wed, 17 May 2023 16:08:57 +0300 Subject: [PATCH] Release 1.5.0 --- OmetriaSDK/build.gradle.kts | 2 +- .../com/android/ometriasdk/core/Ometria.kt | 26 +++++++++++++++---- .../OmetriaActivityLifecycleHelper.kt | 2 +- README.md | 10 ++++++- app/build.gradle.kts | 4 +-- 5 files changed, 34 insertions(+), 10 deletions(-) diff --git a/OmetriaSDK/build.gradle.kts b/OmetriaSDK/build.gradle.kts index c108836..30b947b 100644 --- a/OmetriaSDK/build.gradle.kts +++ b/OmetriaSDK/build.gradle.kts @@ -1,4 +1,4 @@ -val versionName = "1.4.2" +val versionName = "1.5.0" plugins { id("com.android.library") diff --git a/OmetriaSDK/src/main/java/com/android/ometriasdk/core/Ometria.kt b/OmetriaSDK/src/main/java/com/android/ometriasdk/core/Ometria.kt index 0806b82..d7e94b3 100644 --- a/OmetriaSDK/src/main/java/com/android/ometriasdk/core/Ometria.kt +++ b/OmetriaSDK/src/main/java/com/android/ometriasdk/core/Ometria.kt @@ -54,6 +54,7 @@ class Ometria private constructor() : OmetriaNotificationInteractionHandler { private lateinit var repository: Repository private lateinit var notificationHandler: NotificationHandler private lateinit var executor: OmetriaThreadPoolExecutor + private lateinit var activityLifecycleHelper: OmetriaActivityLifecycleHelper lateinit var notificationInteractionHandler: OmetriaNotificationInteractionHandler /** @@ -75,6 +76,7 @@ class Ometria private constructor() : OmetriaNotificationInteractionHandler { * @param apiToken The api key that has been attributed to your project. * @param notificationIcon The icon that will be used when displaying push notifications. * @param notificationColor The color that will be used when displaying push notifications. + * @param notificationChannelName The name param when creating NotificationChannel object. */ @JvmStatic fun initialize( @@ -84,6 +86,8 @@ class Ometria private constructor() : OmetriaNotificationInteractionHandler { notificationColor: Int? = COLOR_DEFAULT, notificationChannelName: String = OMETRIA_CHANNEL_NAME ) = instance.also { + clearOldInstanceIfNeeded() + it.ometriaConfig = OmetriaConfig(apiToken, application) it.localCache = LocalCache(application) it.executor = OmetriaThreadPoolExecutor() @@ -101,19 +105,31 @@ class Ometria private constructor() : OmetriaNotificationInteractionHandler { notificationChannelName = notificationChannelName, executor = it.executor ) - it.isInitialized = true it.notificationInteractionHandler = instance if (it.shouldGenerateInstallationId()) { it.generateInstallationId() } - val activityLifecycleHelper = OmetriaActivityLifecycleHelper(it.repository, application) + if (it.isInitialized) { + it.activityLifecycleHelper.repository = it.repository + } else { + it.activityLifecycleHelper = OmetriaActivityLifecycleHelper( + repository = it.repository, + context = application + ) + ProcessLifecycleOwner.get().lifecycle.addObserver(it.activityLifecycleHelper) + application.registerActivityLifecycleCallbacks(it.activityLifecycleHelper) + } - val lifecycle = ProcessLifecycleOwner.get().lifecycle - lifecycle.addObserver(activityLifecycleHelper) + it.isInitialized = true + } - application.registerActivityLifecycleCallbacks(activityLifecycleHelper) + private fun clearOldInstanceIfNeeded() { + if (instance.isInitialized) { + instance.flush() + instance.clear() + } } /** diff --git a/OmetriaSDK/src/main/java/com/android/ometriasdk/lifecycle/OmetriaActivityLifecycleHelper.kt b/OmetriaSDK/src/main/java/com/android/ometriasdk/lifecycle/OmetriaActivityLifecycleHelper.kt index 0a56b70..4208093 100644 --- a/OmetriaSDK/src/main/java/com/android/ometriasdk/lifecycle/OmetriaActivityLifecycleHelper.kt +++ b/OmetriaSDK/src/main/java/com/android/ometriasdk/lifecycle/OmetriaActivityLifecycleHelper.kt @@ -12,7 +12,7 @@ import com.android.ometriasdk.core.Repository import java.util.concurrent.atomic.AtomicBoolean internal class OmetriaActivityLifecycleHelper( - private val repository: Repository, + var repository: Repository, private val context: Context ) : DefaultLifecycleObserver, diff --git a/README.md b/README.md index ec3dd1e..adf22f6 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ To install the library inside **Android Studio**, declare it as dependency in yo ```gradle dependencies { - implementation 'com.ometria:android-sdk:1.4.2' + implementation 'com.ometria:android-sdk:1.5.0' } ``` @@ -78,6 +78,14 @@ Ometria.initialize( ).loggingEnabled(true) ``` +### Using multiple Ometria API tokens within the same app instance (Reinitializing the SDK) + +There are cases where different flows of an application should log events under different tokens (think of different user roles, or other similar scenarios). +To address this, we offer the possibility of reinitializing the Ometria SDK. Although we currently do not keep references to multiple instances of the SDK, +we ensure that on reinitialization there will be a flush attempt for all the events that have been logged up to that point on the old instance. + +Reinitializing the SDK requires the exact steps as a normal initialization. + 5\. Event tracking guide ------------------------ You need to be aware of your users’ behaviour on your platforms in order to understand them. Some behaviour is automatically detectable, other events need work from the app developer to track. diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ef24497..fb43697 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -12,8 +12,8 @@ android { applicationId = "com.android.sample" minSdk = 21 targetSdk = 33 - versionCode = 8 - versionName = "1.0.5" + versionCode = 9 + versionName = "1.0.6" } signingConfigs { getByName("debug") {