diff --git a/android-core/src/main/java/com/mparticle/internal/KitFrameworkWrapper.java b/android-core/src/main/java/com/mparticle/internal/KitFrameworkWrapper.java index 6d8b9b8da..d400f30f7 100644 --- a/android-core/src/main/java/com/mparticle/internal/KitFrameworkWrapper.java +++ b/android-core/src/main/java/com/mparticle/internal/KitFrameworkWrapper.java @@ -708,6 +708,13 @@ public void purchaseFinalized(@NonNull String placementId, @NonNull String catal } } + @Override + public void close() { + if (mKitManager != null) { + mKitManager.close(); + } + } + static class CoreCallbacksImpl implements CoreCallbacks { KitFrameworkWrapper mKitFrameworkWrapper; ConfigManager mConfigManager; diff --git a/android-core/src/main/java/com/mparticle/internal/KitManager.java b/android-core/src/main/java/com/mparticle/internal/KitManager.java index 83f9384ff..eac6f4e92 100644 --- a/android-core/src/main/java/com/mparticle/internal/KitManager.java +++ b/android-core/src/main/java/com/mparticle/internal/KitManager.java @@ -146,6 +146,8 @@ void execute(@NonNull String identifier, void purchaseFinalized(@NonNull String placementId, @NonNull String catalogItemId, boolean status); + void close(); + enum KitStatus { NOT_CONFIGURED, STOPPED, diff --git a/android-core/src/main/kotlin/com/mparticle/Rokt.kt b/android-core/src/main/kotlin/com/mparticle/Rokt.kt index 524856b95..d5ab151f3 100644 --- a/android-core/src/main/kotlin/com/mparticle/Rokt.kt +++ b/android-core/src/main/kotlin/com/mparticle/Rokt.kt @@ -43,4 +43,10 @@ class Rokt internal constructor( mKitManager.purchaseFinalized(placementId, catalogItemId, status) } } + + fun close() { + if (mConfigManager.isEnabled) { + mKitManager.close() + } + } } \ No newline at end of file diff --git a/android-kit-base/src/main/java/com/mparticle/kits/KitIntegration.java b/android-kit-base/src/main/java/com/mparticle/kits/KitIntegration.java index e480e5d20..11fac2c05 100644 --- a/android-kit-base/src/main/java/com/mparticle/kits/KitIntegration.java +++ b/android-kit-base/src/main/java/com/mparticle/kits/KitIntegration.java @@ -637,5 +637,7 @@ void execute(@NonNull String viewName, void setWrapperSdkVersion(@NonNull WrapperSdkVersion wrapperSdkVersion); void purchaseFinalized(@NonNull String placementId, @NonNull String catalogItemId, boolean status); + + void close(); } } diff --git a/android-kit-base/src/main/java/com/mparticle/kits/KitManagerImpl.java b/android-kit-base/src/main/java/com/mparticle/kits/KitManagerImpl.java index f552dd893..bbdc16c74 100644 --- a/android-kit-base/src/main/java/com/mparticle/kits/KitManagerImpl.java +++ b/android-kit-base/src/main/java/com/mparticle/kits/KitManagerImpl.java @@ -1421,12 +1421,14 @@ public Flow events(@NonNull String identifier) { for (KitIntegration provider : providers.values()) { try { if (provider instanceof KitIntegration.RoktListener && !provider.isDisabled()) { + Logger.verbose("Calling events for kit: " + provider.getName() + " with identifier: " + identifier); return ((KitIntegration.RoktListener) provider).events(identifier); } } catch (Exception e) { Logger.warning("Failed to call setWrapperSdkVersion for kit: " + provider.getName() + ": " + e.getMessage()); } } + Logger.warning("No RoktListener found"); return flowOf(); } @@ -1456,6 +1458,19 @@ public void purchaseFinalized(@NonNull String placementId, @NonNull String catal } } + @Override + public void close() { + for (final KitIntegration provider : providers.values()) { + try { + if (provider instanceof KitIntegration.RoktListener && !provider.isDisabled()) { + ((KitIntegration.RoktListener) provider).close(); + } + } catch (final Exception e) { + Logger.warning("Failed to call close for kit: " + provider.getName() + ": " + e.getMessage()); + } + } + } + private void confirmEmail( @Nullable String email, @Nullable MParticleUser user, diff --git a/android-kit-base/src/test/kotlin/com/mparticle/kits/KitManagerImplTest.kt b/android-kit-base/src/test/kotlin/com/mparticle/kits/KitManagerImplTest.kt index 312bdbb92..86351eb10 100644 --- a/android-kit-base/src/test/kotlin/com/mparticle/kits/KitManagerImplTest.kt +++ b/android-kit-base/src/test/kotlin/com/mparticle/kits/KitManagerImplTest.kt @@ -1702,6 +1702,10 @@ class KitManagerImplTest { override fun purchaseFinalized(placementId: String, catalogItemId: String, status: Boolean) { println("purchaseFinalized with placementId: $placementId catalogItemId : $catalogItemId status : $status ") } + + override fun close() { + println("close called") + } } internal inner class KitManagerEventCounter : MockKitManagerImpl() {