@@ -4,14 +4,14 @@ import android.app.Activity
44import android.app.Application
55import android.content.Intent
66import android.os.Bundle
7- import android.util.Log
87import com.facebook.react.ReactApplication
98import com.facebook.react.ReactInstanceManager
109import com.facebook.react.bridge.ActivityEventListener
1110import com.facebook.react.bridge.ReactContext
1211import java.util.concurrent.atomic.AtomicBoolean
1312import cloud.mindbox.mobile_sdk.Mindbox
1413import cloud.mindbox.mobile_sdk.logger.Level
14+ import cloud.mindbox.mobile_sdk.pushes.MindboxPushService
1515
1616
1717internal class MindboxSdkLifecycleListener private constructor(
@@ -20,12 +20,23 @@ internal class MindboxSdkLifecycleListener private constructor(
2020) : Application.ActivityLifecycleCallbacks {
2121
2222 companion object {
23+ @Volatile
24+ private var listener: MindboxSdkLifecycleListener ? = null
25+
2326 fun register (
2427 application : Application ,
2528 subscriber : MindboxEventSubscriber = MindboxEventEmitter (application)
2629 ) {
27- val listener = MindboxSdkLifecycleListener (application, subscriber)
28- application.registerActivityLifecycleCallbacks(listener)
30+ if (listener == null ) {
31+ synchronized(this ) {
32+ if (listener == null ) {
33+ Mindbox .writeLog(" [RN] Initialize MindboxSdkLifecycleListener" , Level .INFO )
34+ val lifecycleListener = MindboxSdkLifecycleListener (application, subscriber)
35+ application.registerActivityLifecycleCallbacks(lifecycleListener)
36+ listener = lifecycleListener
37+ }
38+ }
39+ }
2940 }
3041 }
3142
@@ -168,3 +179,31 @@ internal class MindboxSdkLifecycleListener private constructor(
168179 }
169180 }
170181}
182+
183+ /* *
184+ * Initializes push notification services for React Native integration.
185+ *
186+ * This method performs two crucial initialization steps:
187+ * 1. Initializes the specified push services (FCM, HMS, RuStore) through Mindbox SDK
188+ * 2. Registers the Mindbox lifecycle listener to handle React Native specific events
189+ *
190+ * @param application The Android Application context used for initialization
191+ * @param pushServices List of push notification services to initialize. Typically includes
192+ * [MindboxFirebase] for Firebase Cloud Messaging and/or
193+ * [MindboxHuawei] for Huawei Cloud Messaging and/or
194+ * [MindboxRuStore] for Huawei Cloud Messaging
195+ *
196+ * @example
197+ * // Typical usage:
198+ * Mindbox.initPushServicesForReactNative(
199+ * application,
200+ * listOf(MindboxFirebase, MindboxHuawei, MindboxRuStore)
201+ * )
202+ *
203+ * @note This method should be called once during application startup,
204+ * in the Application.onCreate() method.
205+ */
206+ public fun Mindbox.initPushServicesForReactNative (application : Application , pushServices : List <MindboxPushService >) {
207+ Mindbox .initPushServices(application, pushServices)
208+ MindboxSdkLifecycleListener .register(application)
209+ }
0 commit comments