react-native-moengage 10.3.0 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ # 30-09-2024
2
+
3
+ ## 11.1.0
4
+ - Added support for Multiple SelfHandled InApps.
5
+ - iOS
6
+ - Added support for Provisional Push.
7
+ - MoEngage-iOS-SDK version updated to `9.20.0`.
8
+
9
+ # 07-08-2024
10
+
11
+ ## 11.0.0
12
+ - iOS
13
+ - BugFix: Resolved the issue of tracking User Attribute TRUE/FALSE as 0/1.
14
+ - Pinned plugin dependency version
15
+ - MoEngage-iOS-SDK version updated to `9.18.1`.
16
+
1
17
  # 31-07-2024
2
18
 
3
19
  ## 10.3.0
@@ -15,7 +15,7 @@ Pod::Spec.new do |s|
15
15
  s.platforms = { :ios => "11.0", :tvos => "11.0" }
16
16
  s.source_files = 'iOS/MoEReactBridge/**/*.{h,m,mm}'
17
17
  s.dependency 'React'
18
- s.dependency 'MoEngagePluginBase','>= 4.10.0','< 4.11.0'
18
+ s.dependency 'MoEngagePluginBase','5.1.0'
19
19
  s.ios.dependency 'MoEngage-iOS-SDK/RichNotification'
20
20
 
21
21
  s.prepare_command = <<-CMD
@@ -20,9 +20,9 @@ rootProject.allprojects {
20
20
 
21
21
  ext {
22
22
  //dependency version
23
- moengageCoreVersion = "13.04.00"
24
- moengageInAppVersion = "8.5.0"
25
- basePluginVersion = "4.1.0"
23
+ moengageCoreVersion = "13.05.00"
24
+ moengageInAppVersion = "8.6.0"
25
+ basePluginVersion = "4.2.0"
26
26
  //build versions
27
27
  minimumVersion = 21
28
28
  compileVersion = 34
@@ -11,260 +11,273 @@
11
11
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12
12
  */
13
13
 
14
- package com.moengage.react
15
-
16
- import android.content.Context
17
- import com.facebook.react.bridge.Promise
18
- import com.facebook.react.bridge.ReactApplicationContext
19
- import com.moengage.core.LogLevel
20
- import com.moengage.core.MoECoreHelper
21
- import com.moengage.core.internal.logger.Logger
22
- import com.moengage.core.listeners.AppBackgroundListener
23
- import com.moengage.plugin.base.internal.PluginHelper
24
- import com.moengage.plugin.base.internal.setEventEmitter
25
- import com.moengage.plugin.base.internal.userDeletionDataToJson
26
-
27
- /**
28
- * Class to handle all the request from the [MoEReactBridge] from both old and new arch
29
- *
30
- * @author Abhishek Kumar
31
- * @since Todo: Add Version
32
- */
33
- internal class MoEReactBridgeHandler(private val reactContext: ReactApplicationContext) {
34
-
35
- private val tag = "${MODULE_TAG}MoEReactBridgeHandler"
36
-
37
- private val context: Context = reactContext.applicationContext
38
- private val pluginHelper = PluginHelper()
39
-
40
- private val backgroundStateListener =
41
- AppBackgroundListener { _, _ -> pluginHelper.onFrameworkDetached() }
42
-
43
- fun getName() = NAME
44
-
45
- fun setAppStatus(payload: String) {
46
- try {
47
- Logger.print { "$tag setAppStatus() : Payload: $payload" }
48
- pluginHelper.setAppStatus(context, payload)
49
- } catch (t: Throwable) {
50
- Logger.print(LogLevel.ERROR, t) { "$tag setAppStatus() : " }
51
- }
52
- }
53
-
54
- fun trackEvent(payload: String) {
55
- try {
56
- Logger.print { "$tag trackEvent() : Payload: $payload" }
57
- pluginHelper.trackEvent(context, payload)
58
- } catch (t: Throwable) {
59
- Logger.print(LogLevel.ERROR, t) { "$tag trackEvent() : " }
60
- }
61
- }
62
-
63
- fun setUserAttribute(payload: String) {
64
- try {
65
- Logger.print { "$tag setUserAttribute() : Payload: $payload" }
66
- pluginHelper.setUserAttribute(context, payload)
67
- } catch (t: Throwable) {
68
- Logger.print(LogLevel.ERROR, t) { "$tag setUserAttribute() : " }
69
- }
70
- }
71
-
72
- fun logout(payload: String) {
73
- try {
74
- Logger.print { "$tag logout() : $payload" }
75
- pluginHelper.logout(context, payload)
76
- } catch (t: Throwable) {
77
- Logger.print(LogLevel.ERROR, t) { "$tag logout() : " }
78
- }
79
- }
80
-
81
- fun setAlias(payload: String) {
82
- try {
83
- Logger.print { "$tag setAlias() : Payload: $payload" }
84
- pluginHelper.setAlias(context, payload)
85
- } catch (t: Throwable) {
86
- Logger.print(LogLevel.ERROR, t) { "$tag setAlias() : " }
87
- }
88
- }
89
-
90
- fun setAppContext(payload: String) {
91
- try {
92
- Logger.print { "$tag setAppContext() : Payload: $payload" }
93
- pluginHelper.setAppContext(context, payload)
94
- } catch (t: Throwable) {
95
- Logger.print(LogLevel.ERROR, t) { "$tag setAppContext() : " }
96
- }
97
- }
98
-
99
- fun resetAppContext(payload: String) {
100
- try {
101
- Logger.print { "$tag resetAppContext() : $payload" }
102
- pluginHelper.resetAppContext(context, payload)
103
- } catch (t: Throwable) {
104
- Logger.print(LogLevel.ERROR, t) { "$tag resetAppContext() : " }
105
- }
106
- }
107
-
108
- fun showInApp(payload: String) {
109
- try {
110
- Logger.print { "$tag showInApp() : $payload" }
111
- pluginHelper.showInApp(context, payload)
112
- } catch (t: Throwable) {
113
- Logger.print(LogLevel.ERROR, t) { "$tag showInApp() : " }
114
- }
115
- }
116
-
117
- fun getSelfHandledInApp(payload: String) {
118
- try {
119
- Logger.print { "$tag getSelfHandledInApp() : $payload" }
120
- pluginHelper.getSelfHandledInApp(context, payload)
121
- } catch (t: Throwable) {
122
- Logger.print(LogLevel.ERROR, t) { "$tag getSelfHandledInApp() : " }
123
- }
124
- }
125
-
126
- fun passPushToken(payload: String) {
127
- try {
128
- Logger.print { "$tag passPushToken() : $payload" }
129
- pluginHelper.passPushToken(context, payload)
130
- } catch (t: Throwable) {
131
- Logger.print(LogLevel.ERROR, t) { "$tag passPushToken() : " }
132
- }
133
- }
134
-
135
- fun passPushPayload(payload: String) {
136
- try {
137
- Logger.print { "$tag passPushPayload() : $payload" }
138
- pluginHelper.passPushPayload(context, payload)
139
- } catch (t: Throwable) {
140
- Logger.print(LogLevel.ERROR, t) { "$tag passPushPayload() : " }
141
- }
142
- }
143
-
144
- fun initialize(payload: String) {
145
- try {
146
- Logger.print { "$tag initialize() : $payload" }
147
- pluginHelper.initialise(payload)
148
- setEventEmitter(EventEmitterImpl(reactContext))
149
- if (GlobalCache.lifecycleAwareCallbackEnabled) {
150
- MoECoreHelper.addAppBackgroundListener(backgroundStateListener)
151
- }
152
- } catch (t: Throwable) {
153
- Logger.print(LogLevel.ERROR, t) { "$tag initialize() : " }
154
- }
155
- }
156
-
157
- fun selfHandledCallback(payload: String) {
158
- try {
159
- Logger.print { "$tag selfHandledCallback() : $payload" }
160
- pluginHelper.selfHandledCallback(context, payload)
161
- } catch (t: Throwable) {
162
- Logger.print(LogLevel.ERROR, t) { "$tag selfHandledCallback() : " }
163
- }
164
- }
165
-
166
- fun optOutTracking(payload: String) {
167
- try {
168
- pluginHelper.optOutTracking(context, payload)
169
- } catch (t: Throwable) {
170
- Logger.print(LogLevel.ERROR, t) { "$tag optOutTracking() : " }
171
- }
172
- }
173
-
174
- fun updateSdkState(payload: String) {
175
- try {
176
- Logger.print { "$tag updateSdkState() : $payload" }
177
- pluginHelper.storeFeatureStatus(context, payload)
178
- } catch (t: Throwable) {
179
- Logger.print(LogLevel.ERROR, t) { "$tag updateSdkState() : " }
180
- }
181
- }
182
-
183
- fun onOrientationChanged() {
184
- try {
185
- Logger.print { "$tag onOrientationChanged() : " }
186
- pluginHelper.onConfigurationChanged()
187
- } catch (t: Throwable) {
188
- Logger.print(LogLevel.ERROR, t) { "$tag onOrientationChanged() : " }
189
- }
190
- }
191
-
192
- fun deviceIdentifierTrackingStatusUpdate(payload: String) {
193
- try {
194
- Logger.print { "$tag deviceIdentifierTrackingStatusUpdate() : $payload" }
195
- pluginHelper.deviceIdentifierTrackingStatusUpdate(context, payload)
196
- } catch (t: Throwable) {
197
- Logger.print(LogLevel.ERROR, t) { "$tag deviceIdentifierTrackingStatusUpdate() : " }
198
- }
199
- }
200
-
201
- fun setupNotificationChannels() {
202
- try {
203
- Logger.print { "$tag setupNotificationChannels() : " }
204
- pluginHelper.setUpNotificationChannels(context)
205
- } catch (t: Throwable) {
206
- Logger.print(LogLevel.ERROR, t) { "$tag setupNotificationChannel() :" }
207
- }
208
- }
209
-
210
- fun navigateToSettings() {
211
- try {
212
- Logger.print { "$tag navigateToSettings() : " }
213
- pluginHelper.navigateToSettings(context)
214
- } catch (t: Throwable) {
215
- Logger.print(LogLevel.ERROR, t) { "$tag navigateToSettings() :" }
216
- }
217
- }
218
-
219
- fun requestPushPermission() {
220
- try {
221
- Logger.print { "$tag requestPushPermission() : " }
222
- pluginHelper.requestPushPermission(context)
223
- } catch (t: Throwable) {
224
- Logger.print(LogLevel.ERROR, t) { "$tag requestPushPermission() :" }
225
- }
226
- }
227
-
228
- fun permissionResponse(payload: String) {
229
- try {
230
- Logger.print { "$tag permissionResponse() : Payload: $payload" }
231
- pluginHelper.permissionResponse(context, payload)
232
- } catch (t: Throwable) {
233
- Logger.print(LogLevel.ERROR, t) { "$tag permissionResponse() :" }
234
- }
235
- }
236
-
237
- fun updatePushPermissionRequestCount(payload: String) {
238
- try {
239
- Logger.print { "$tag updatePushPermissionRequestCount() : Payload: $payload" }
240
- pluginHelper.updatePushPermissionRequestCount(context, payload)
241
- } catch (t: Throwable) {
242
- Logger.print(LogLevel.ERROR, t) { "$tag updatePushPermissionRequestCount() :" }
243
- }
244
- }
245
-
246
- fun deleteUser(payload: String, promise: Promise) {
247
- try {
248
- Logger.print { "$tag deleteUser() : Payload: $payload" }
249
- pluginHelper.deleteUser(context, payload) { userDeletionData ->
250
- promise.resolve(userDeletionDataToJson(userDeletionData).toString())
251
- }
252
- } catch (t: Throwable) {
253
- Logger.print(LogLevel.ERROR, t) { "$tag deleteUser() :" }
254
- promise.reject(t)
255
- }
256
- }
257
-
258
- fun showNudge(payload: String) {
259
- try {
260
- Logger.print { "$tag showNudge() : Payload: $payload" }
261
- pluginHelper.showNudge(context, payload)
262
- } catch (t: Throwable) {
263
- Logger.print(LogLevel.ERROR, t) { "$tag showNudge() :" }
264
- }
265
- }
266
-
267
- companion object {
268
- const val NAME = "MoEReactBridge"
269
- }
270
- }
14
+ package com.moengage.react
15
+
16
+ import android.content.Context
17
+ import com.facebook.react.bridge.Promise
18
+ import com.facebook.react.bridge.ReactApplicationContext
19
+ import com.moengage.core.LogLevel
20
+ import com.moengage.core.MoECoreHelper
21
+ import com.moengage.core.internal.logger.Logger
22
+ import com.moengage.core.listeners.AppBackgroundListener
23
+ import com.moengage.plugin.base.internal.PluginHelper
24
+ import com.moengage.plugin.base.internal.selfHandledInAppsToJson
25
+ import com.moengage.plugin.base.internal.setEventEmitter
26
+ import com.moengage.plugin.base.internal.userDeletionDataToJson
27
+
28
+ /**
29
+ * Class to handle all the request from the [MoEReactBridge] from both old and new arch
30
+ *
31
+ * @author Abhishek Kumar
32
+ * @since Todo: Add Version
33
+ */
34
+ internal class MoEReactBridgeHandler(private val reactContext: ReactApplicationContext) {
35
+
36
+ private val tag = "${MODULE_TAG}MoEReactBridgeHandler"
37
+
38
+ private val context: Context = reactContext.applicationContext
39
+ private val pluginHelper = PluginHelper()
40
+
41
+ private val backgroundStateListener =
42
+ AppBackgroundListener { _, _ -> pluginHelper.onFrameworkDetached() }
43
+
44
+ fun getName() = NAME
45
+
46
+ fun setAppStatus(payload: String) {
47
+ try {
48
+ Logger.print { "$tag setAppStatus() : Payload: $payload" }
49
+ pluginHelper.setAppStatus(context, payload)
50
+ } catch (t: Throwable) {
51
+ Logger.print(LogLevel.ERROR, t) { "$tag setAppStatus() : " }
52
+ }
53
+ }
54
+
55
+ fun trackEvent(payload: String) {
56
+ try {
57
+ Logger.print { "$tag trackEvent() : Payload: $payload" }
58
+ pluginHelper.trackEvent(context, payload)
59
+ } catch (t: Throwable) {
60
+ Logger.print(LogLevel.ERROR, t) { "$tag trackEvent() : " }
61
+ }
62
+ }
63
+
64
+ fun setUserAttribute(payload: String) {
65
+ try {
66
+ Logger.print { "$tag setUserAttribute() : Payload: $payload" }
67
+ pluginHelper.setUserAttribute(context, payload)
68
+ } catch (t: Throwable) {
69
+ Logger.print(LogLevel.ERROR, t) { "$tag setUserAttribute() : " }
70
+ }
71
+ }
72
+
73
+ fun logout(payload: String) {
74
+ try {
75
+ Logger.print { "$tag logout() : $payload" }
76
+ pluginHelper.logout(context, payload)
77
+ } catch (t: Throwable) {
78
+ Logger.print(LogLevel.ERROR, t) { "$tag logout() : " }
79
+ }
80
+ }
81
+
82
+ fun setAlias(payload: String) {
83
+ try {
84
+ Logger.print { "$tag setAlias() : Payload: $payload" }
85
+ pluginHelper.setAlias(context, payload)
86
+ } catch (t: Throwable) {
87
+ Logger.print(LogLevel.ERROR, t) { "$tag setAlias() : " }
88
+ }
89
+ }
90
+
91
+ fun setAppContext(payload: String) {
92
+ try {
93
+ Logger.print { "$tag setAppContext() : Payload: $payload" }
94
+ pluginHelper.setAppContext(context, payload)
95
+ } catch (t: Throwable) {
96
+ Logger.print(LogLevel.ERROR, t) { "$tag setAppContext() : " }
97
+ }
98
+ }
99
+
100
+ fun resetAppContext(payload: String) {
101
+ try {
102
+ Logger.print { "$tag resetAppContext() : $payload" }
103
+ pluginHelper.resetAppContext(context, payload)
104
+ } catch (t: Throwable) {
105
+ Logger.print(LogLevel.ERROR, t) { "$tag resetAppContext() : " }
106
+ }
107
+ }
108
+
109
+ fun showInApp(payload: String) {
110
+ try {
111
+ Logger.print { "$tag showInApp() : $payload" }
112
+ pluginHelper.showInApp(context, payload)
113
+ } catch (t: Throwable) {
114
+ Logger.print(LogLevel.ERROR, t) { "$tag showInApp() : " }
115
+ }
116
+ }
117
+
118
+ fun getSelfHandledInApp(payload: String) {
119
+ try {
120
+ Logger.print { "$tag getSelfHandledInApp() : $payload" }
121
+ pluginHelper.getSelfHandledInApp(context, payload)
122
+ } catch (t: Throwable) {
123
+ Logger.print(LogLevel.ERROR, t) { "$tag getSelfHandledInApp() : " }
124
+ }
125
+ }
126
+
127
+ fun passPushToken(payload: String) {
128
+ try {
129
+ Logger.print { "$tag passPushToken() : $payload" }
130
+ pluginHelper.passPushToken(context, payload)
131
+ } catch (t: Throwable) {
132
+ Logger.print(LogLevel.ERROR, t) { "$tag passPushToken() : " }
133
+ }
134
+ }
135
+
136
+ fun passPushPayload(payload: String) {
137
+ try {
138
+ Logger.print { "$tag passPushPayload() : $payload" }
139
+ pluginHelper.passPushPayload(context, payload)
140
+ } catch (t: Throwable) {
141
+ Logger.print(LogLevel.ERROR, t) { "$tag passPushPayload() : " }
142
+ }
143
+ }
144
+
145
+ fun initialize(payload: String) {
146
+ try {
147
+ Logger.print { "$tag initialize() : $payload" }
148
+ pluginHelper.initialise(payload)
149
+ setEventEmitter(EventEmitterImpl(reactContext))
150
+ if (GlobalCache.lifecycleAwareCallbackEnabled) {
151
+ MoECoreHelper.addAppBackgroundListener(backgroundStateListener)
152
+ }
153
+ } catch (t: Throwable) {
154
+ Logger.print(LogLevel.ERROR, t) { "$tag initialize() : " }
155
+ }
156
+ }
157
+
158
+ fun selfHandledCallback(payload: String) {
159
+ try {
160
+ Logger.print { "$tag selfHandledCallback() : $payload" }
161
+ pluginHelper.selfHandledCallback(context, payload)
162
+ } catch (t: Throwable) {
163
+ Logger.print(LogLevel.ERROR, t) { "$tag selfHandledCallback() : " }
164
+ }
165
+ }
166
+
167
+ fun optOutTracking(payload: String) {
168
+ try {
169
+ pluginHelper.optOutTracking(context, payload)
170
+ } catch (t: Throwable) {
171
+ Logger.print(LogLevel.ERROR, t) { "$tag optOutTracking() : " }
172
+ }
173
+ }
174
+
175
+ fun updateSdkState(payload: String) {
176
+ try {
177
+ Logger.print { "$tag updateSdkState() : $payload" }
178
+ pluginHelper.storeFeatureStatus(context, payload)
179
+ } catch (t: Throwable) {
180
+ Logger.print(LogLevel.ERROR, t) { "$tag updateSdkState() : " }
181
+ }
182
+ }
183
+
184
+ fun onOrientationChanged() {
185
+ try {
186
+ Logger.print { "$tag onOrientationChanged() : " }
187
+ pluginHelper.onConfigurationChanged()
188
+ } catch (t: Throwable) {
189
+ Logger.print(LogLevel.ERROR, t) { "$tag onOrientationChanged() : " }
190
+ }
191
+ }
192
+
193
+ fun deviceIdentifierTrackingStatusUpdate(payload: String) {
194
+ try {
195
+ Logger.print { "$tag deviceIdentifierTrackingStatusUpdate() : $payload" }
196
+ pluginHelper.deviceIdentifierTrackingStatusUpdate(context, payload)
197
+ } catch (t: Throwable) {
198
+ Logger.print(LogLevel.ERROR, t) { "$tag deviceIdentifierTrackingStatusUpdate() : " }
199
+ }
200
+ }
201
+
202
+ fun setupNotificationChannels() {
203
+ try {
204
+ Logger.print { "$tag setupNotificationChannels() : " }
205
+ pluginHelper.setUpNotificationChannels(context)
206
+ } catch (t: Throwable) {
207
+ Logger.print(LogLevel.ERROR, t) { "$tag setupNotificationChannel() :" }
208
+ }
209
+ }
210
+
211
+ fun navigateToSettings() {
212
+ try {
213
+ Logger.print { "$tag navigateToSettings() : " }
214
+ pluginHelper.navigateToSettings(context)
215
+ } catch (t: Throwable) {
216
+ Logger.print(LogLevel.ERROR, t) { "$tag navigateToSettings() :" }
217
+ }
218
+ }
219
+
220
+ fun requestPushPermission() {
221
+ try {
222
+ Logger.print { "$tag requestPushPermission() : " }
223
+ pluginHelper.requestPushPermission(context)
224
+ } catch (t: Throwable) {
225
+ Logger.print(LogLevel.ERROR, t) { "$tag requestPushPermission() :" }
226
+ }
227
+ }
228
+
229
+ fun permissionResponse(payload: String) {
230
+ try {
231
+ Logger.print { "$tag permissionResponse() : Payload: $payload" }
232
+ pluginHelper.permissionResponse(context, payload)
233
+ } catch (t: Throwable) {
234
+ Logger.print(LogLevel.ERROR, t) { "$tag permissionResponse() :" }
235
+ }
236
+ }
237
+
238
+ fun updatePushPermissionRequestCount(payload: String) {
239
+ try {
240
+ Logger.print { "$tag updatePushPermissionRequestCount() : Payload: $payload" }
241
+ pluginHelper.updatePushPermissionRequestCount(context, payload)
242
+ } catch (t: Throwable) {
243
+ Logger.print(LogLevel.ERROR, t) { "$tag updatePushPermissionRequestCount() :" }
244
+ }
245
+ }
246
+
247
+ fun deleteUser(payload: String, promise: Promise) {
248
+ try {
249
+ Logger.print { "$tag deleteUser() : Payload: $payload" }
250
+ pluginHelper.deleteUser(context, payload) { userDeletionData ->
251
+ promise.resolve(userDeletionDataToJson(userDeletionData).toString())
252
+ }
253
+ } catch (t: Throwable) {
254
+ Logger.print(LogLevel.ERROR, t) { "$tag deleteUser() :" }
255
+ promise.reject(t)
256
+ }
257
+ }
258
+
259
+ fun showNudge(payload: String) {
260
+ try {
261
+ Logger.print { "$tag showNudge() : Payload: $payload" }
262
+ pluginHelper.showNudge(context, payload)
263
+ } catch (t: Throwable) {
264
+ Logger.print(LogLevel.ERROR, t) { "$tag showNudge() :" }
265
+ }
266
+ }
267
+
268
+ companion object {
269
+ const val NAME = "MoEReactBridge"
270
+ }
271
+
272
+ fun getSelfHandledInApps(payload: String, promise: Promise) {
273
+ try {
274
+ Logger.print { "$tag getSelfHandledInApps() : Payload: $payload" }
275
+ pluginHelper.getSelfHandledInApps(context, payload) { data ->
276
+ promise.resolve(selfHandledInAppsToJson(data).toString())
277
+ }
278
+ } catch (t: Throwable) {
279
+ Logger.print(LogLevel.ERROR, t) { "$tag getSelfHandledInApps() :" }
280
+ promise.reject(t)
281
+ }
282
+ }
283
+ }
@@ -140,4 +140,12 @@ class MoEReactBridge(reactContext: ReactApplicationContext) : NativeMoEngageSpec
140
140
  override fun registerForPush() {
141
141
  // iOS only
142
142
  }
143
+
144
+ override fun getSelfHandledInApps(payload: String, promise: Promise) {
145
+ bridgeHandler.getSelfHandledInApps(payload, promise)
146
+ }
147
+
148
+ override fun registerForProvisionalPush() {
149
+ //iOS only
150
+ }
143
151
  }
@@ -118,6 +118,10 @@ RCT_EXPORT_METHOD(registerForPush) {
118
118
  [[MoEReactNativeHandler sharedInstance] registerForPush];
119
119
  }
120
120
 
121
+ RCT_EXPORT_METHOD(registerForProvisionalPush) {
122
+ [[MoEReactNativeHandler sharedInstance] registerForProvisionalPush];
123
+ }
124
+
121
125
  #pragma mark Show InApp
122
126
 
123
127
  RCT_EXPORT_METHOD(showInApp:(NSString *)payload) {
@@ -130,6 +134,10 @@ RCT_EXPORT_METHOD(getSelfHandledInApp:(NSString *)payload) {
130
134
  [[MoEReactNativeHandler sharedInstance] getSelfHandledInApp:payload];
131
135
  }
132
136
 
137
+ RCT_EXPORT_METHOD(getSelfHandledInApps:(NSString *)payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject) {
138
+ [[MoEReactNativeHandler sharedInstance] getSelfHandledInApps:payload resolve:resolve reject:reject];
139
+ }
140
+
133
141
  RCT_EXPORT_METHOD(updateSelfHandledInAppStatus:(NSString *)payload) {
134
142
  [[MoEReactNativeHandler sharedInstance] updateSelfHandledInAppStatus:payload];
135
143
  }
@@ -27,10 +27,12 @@
27
27
  -(void)showInApp:(NSString *)payload;
28
28
  -(void)showNudge:(NSString *)payload ;
29
29
  -(void)getSelfHandledInApp:(NSString *)payload;
30
+ -(void)getSelfHandledInApps:(NSString *)payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject;
30
31
  -(void)updateSelfHandledInAppStatus:(NSString *)payload;
31
32
  -(void)setAppContext:(NSString *)payload;
32
33
  -(void)resetAppContext:(NSString *)payload;
33
34
  -(void)logout:(NSString *)payload;
34
35
  -(void)optOutDataTracking:(NSString *)payload;
35
36
  -(void)updateSdkState:(NSString *)payload;
37
+ -(void)registerForProvisionalPush;
36
38
  @end
@@ -66,6 +66,14 @@
66
66
  [[MoEngagePluginBridge sharedInstance] registerForPush];
67
67
  }
68
68
 
69
+ -(void)registerForProvisionalPush {
70
+ if (@available(iOS 12, *)) {
71
+ [[MoEngagePluginBridge sharedInstance] registerForProvisionalPush];
72
+ } else {
73
+ NSLog(@"registerForProvisionalPush is not available below iOS 12.");
74
+ }
75
+ }
76
+
69
77
  #pragma mark Show InApp
70
78
  -(void)showInApp:(NSString *)payload {
71
79
  NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
@@ -78,6 +86,20 @@
78
86
  [[MoEngagePluginBridge sharedInstance] getSelfHandledInApp:jsonPayload];
79
87
  }
80
88
 
89
+ -(void)getSelfHandledInApps:(NSString *)payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject {
90
+ NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
91
+ [[MoEngagePluginBridge sharedInstance] getSelfHandledInApps:jsonPayload completionBlock:^(NSDictionary<NSString *,id> * _Nonnull campaignPayload) {
92
+ NSError *err;
93
+ NSData * jsonData = [NSJSONSerialization dataWithJSONObject:campaignPayload options:0 error:&err];
94
+ if (jsonData) {
95
+ NSString *strPayload = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
96
+ resolve(strPayload);
97
+ } else {
98
+ reject(@"Error", @"Error in parsing Self Handled Campaign Payload", [NSError errorWithDomain:@"" code:400 userInfo:@{@"Error reason": @"Error in parsing Self Handled Campaign Payload"}]);
99
+ }
100
+ }];
101
+ }
102
+
81
103
  -(void)updateSelfHandledInAppStatus:(NSString *)payload {
82
104
  NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
83
105
  [[MoEngagePluginBridge sharedInstance] updateSelfHandledImpression:jsonPayload];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-moengage",
3
- "version": "10.3.0",
3
+ "version": "11.1.0",
4
4
  "description": "MoEngage is a mobile marketing automation company. This react-native SDK helps you track events, trigger smart notifications and in-apps, provides a drop-in Inbox Controller for notifications.",
5
5
  "main": "src/index.ts",
6
6
  "files": [
@@ -76,6 +76,13 @@ export interface Spec extends TurboModule {
76
76
  */
77
77
  getSelfHandledInApp: (payload: string) => void;
78
78
 
79
+ /**
80
+ * Call this method to get the multiple eligible Self Handled Campaigns.
81
+ * @param payload : Stringified JSON payload
82
+ * @returns Stringified list of Self Handled campaigns
83
+ */
84
+ getSelfHandledInApps: (payload: string) => Promise<string>;
85
+
79
86
  /**
80
87
  * Call this method to update the impressions of self handled inapps.
81
88
  *
@@ -192,6 +199,12 @@ export interface Spec extends TurboModule {
192
199
  /// ios specific
193
200
  registerForPush: () => void;
194
201
 
202
+
203
+ /**
204
+ * Registers for iOS Provisional Push.
205
+ */
206
+ registerForProvisionalPush: () => void;
207
+
195
208
  addListener: (eventType: string) => void;
196
209
  removeListeners: (count: number) => void;
197
210
  }
package/src/index.ts CHANGED
@@ -56,7 +56,9 @@ import MoEPushPayload from "../src/models/MoEPushPayload";
56
56
  import MoEInAppData from "../src/models/MoEInAppData";
57
57
  import { getUserDeletionData } from "../src/moeParser/MoEngagePayloadParser";
58
58
  import { MoEngageNudgePosition } from "../src/models/MoEngageNudgePosition";
59
+ import MoEAnalyticsConfig from "../src/models/MoEAnalyticsConfig";
59
60
  import { MoESupportedAttributes } from "./models/MoESupportedAttributes";
61
+ import * as MoECoreHandler from "./utils/MoECoreHandler";
60
62
 
61
63
  const PLATFORM_IOS = "ios";
62
64
  const PLATFORM_ANDROID = "android";
@@ -160,13 +162,7 @@ var ReactMoE = {
160
162
  initialize: function (appId: string, initConfig: MoEInitConfig = MoEInitConfig.defaultConfig()) {
161
163
  moeAppId = appId;
162
164
  MoEngageGlobalCache.updateInitConfig(initConfig);
163
- let payload: string = "";
164
- if (Platform.OS == PLATFORM_ANDROID) {
165
- payload = getInitConfigJson(appId, initConfig);
166
- } else if (Platform.OS == PLATFORM_IOS) {
167
- payload = getAppIdJson(appId);
168
- }
169
-
165
+ let payload: string = getInitConfigJson(appId, initConfig);
170
166
  MoEngageLogger.verbose("Initializing the MoEngage Plugin");
171
167
  MoEReactBridge.initialize(payload);
172
168
  },
@@ -389,7 +385,7 @@ var ReactMoE = {
389
385
 
390
386
  /**
391
387
  * Call this method when you show the self handled in-app so we can update impressions.
392
- * @param {MoESelfHandledCampaignData}campInfo : campaign information object
388
+ * @param {MoESelfHandledCampaignData}inAppCampaign : campaign information object
393
389
  */
394
390
  selfHandledShown: function (inAppCampaign: MoESelfHandledCampaignData) {
395
391
  if (!(inAppCampaign instanceof MoESelfHandledCampaignData)) {
@@ -402,7 +398,7 @@ var ReactMoE = {
402
398
 
403
399
  /**
404
400
  * Call this method to track when self handled in app widget(other than Primary Widget) is clicked.
405
- * @param {MoESelfHandledCampaignData}campInfo : campaign information object
401
+ * @param {MoESelfHandledCampaignData}moEClickData : campaign information object
406
402
  */
407
403
  selfHandledClicked: function (moEClickData: MoESelfHandledCampaignData) {
408
404
  if (!(moEClickData instanceof MoESelfHandledCampaignData)) {
@@ -415,7 +411,7 @@ var ReactMoE = {
415
411
 
416
412
  /**
417
413
  * Call this method to track dismiss actions on the inApp.
418
- * @param {MoESelfHandledCampaignData}campInfo : campaign information object
414
+ * @param {MoESelfHandledCampaignData}inAppCampaign : campaign information object
419
415
  */
420
416
  selfHandledDismissed: function (inAppCampaign: MoESelfHandledCampaignData) {
421
417
  if (!(inAppCampaign instanceof MoESelfHandledCampaignData)) {
@@ -428,7 +424,7 @@ var ReactMoE = {
428
424
 
429
425
  /**
430
426
  * Call this method to the current context for inApp module.
431
- * @param {Array{String}}contexts : Name of all the contexts
427
+ * @param{Array{String}}contexts : Name of all the contexts
432
428
  */
433
429
  setCurrentContext: function (contexts: Array<String>) {
434
430
  if (!MoEHelper.validateArrayOfString(contexts)) {
@@ -731,6 +727,29 @@ var ReactMoE = {
731
727
 
732
728
  return new UserDeletionData(new MoEAccountMeta(moeAppId), false)
733
729
  },
730
+
731
+ /**
732
+ * Call this method to get the multiple self handled campaigns.
733
+ * @since TODO
734
+ */
735
+ getSelfHandledInApps: async function () {
736
+ MoEngageLogger.verbose("Will try to fetch multiple self handled inapps", moeAppId);
737
+ return await MoECoreHandler.getSelfHandledInApps(moeAppId);
738
+ },
739
+
740
+ /**
741
+ * Call this method to register for provisional push notification in iOS
742
+ * Note: This API is only for iOS platform and is a no-operation method for other plaforms.
743
+ * @since TODO
744
+ */
745
+ registerForProvisionalPush: function () {
746
+ if (Platform.OS == PLATFORM_IOS) {
747
+ MoEngageLogger.verbose("Will call registerForProvisionalPush");
748
+ MoEReactBridge.registerForProvisionalPush();
749
+ } else {
750
+ MoEngageLogger.debug("This api is not supported on Android platform.");
751
+ }
752
+ },
734
753
  };
735
754
 
736
755
  export {
@@ -746,6 +765,7 @@ export {
746
765
  MoEngageLogLevel,
747
766
  MoEngageLogger,
748
767
  MoEngageNudgePosition,
768
+ MoEAnalyticsConfig
749
769
  };
750
770
  export default ReactMoE;
751
771
 
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Config class for Analytics
3
+ * Note: This Config is only for iOS platform and is a no-operation method for other plaforms.
4
+ */
5
+
6
+ export default class MoEAnalyticsConfig {
7
+
8
+ shouldTrackUserAttributeBoolAsNumber: boolean;
9
+
10
+ /**
11
+ * Create an instance of {@link MoEAnalyticsConfig}
12
+ *
13
+ * @param shouldTrackUserAttributeBoolAsNumber true to track User attribute TRUE/FALSE as 0/1
14
+ */
15
+ constructor (shouldTrackUserAttributeBoolAsNumber: boolean) {
16
+ this.shouldTrackUserAttributeBoolAsNumber = shouldTrackUserAttributeBoolAsNumber;
17
+ }
18
+
19
+ /**
20
+ * Default Config for {@link MoEAnalyticsConfig}
21
+ */
22
+ static defaultConfig() {
23
+ return new MoEAnalyticsConfig(false);
24
+ }
25
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * DisplayRules for Campaign
3
+ * @since TODO
4
+ */
5
+ export default class MoEInAppRules {
6
+ /**
7
+ * Screenname for which InApp was configured to be shown.
8
+ */
9
+ screenName: string | null
10
+
11
+ /**
12
+ * contexts for which InApp was configured to be shown.
13
+ */
14
+ contexts: Array<string>
15
+
16
+ constructor(screenName: string, contexts: Array<string> = []) {
17
+ this.screenName = screenName;
18
+ this.contexts = contexts;
19
+ }
20
+ }
@@ -1,9 +1,9 @@
1
1
  import MoEngageLogConfig from "./MoEngageLogConfig";
2
2
  import MoEPushConfig from "./MoEPushConfig";
3
+ import MoEAnalyticsConfig from "./MoEAnalyticsConfig"
3
4
 
4
5
  /**
5
6
  * Config class for MoEngage SDK
6
- * Note: This Config is only for Android platform and is a no-operation method for other plaforms.
7
7
  */
8
8
  export default class MoEInitConfig {
9
9
 
@@ -11,17 +11,22 @@ export default class MoEInitConfig {
11
11
 
12
12
  logConfig: MoEngageLogConfig = MoEngageLogConfig.defaultConfig();
13
13
 
14
+ analyticsConfig = MoEAnalyticsConfig.defaultConfig();
15
+
14
16
  /**
15
17
  * Create an instance of {@link MoEInitConfig}
16
18
  *
17
19
  * @param pushConfig instance of {@link MoEPushConfig}
18
20
  * @param logConfig instance of {@link MoEngageLogConfig}
21
+ * @param analyticsConfig instance of {@link MoEAnalyticsConfig}
19
22
  */
20
23
  constructor(pushConfig: MoEPushConfig = MoEPushConfig.defaultConfig(),
21
- logConfig: MoEngageLogConfig = MoEngageLogConfig.defaultConfig()
24
+ logConfig: MoEngageLogConfig = MoEngageLogConfig.defaultConfig(),
25
+ analyticsConfig: MoEAnalyticsConfig = MoEAnalyticsConfig.defaultConfig()
22
26
  ) {
23
27
  this.pushConfig = pushConfig;
24
28
  this.logConfig = logConfig;
29
+ this.analyticsConfig = analyticsConfig;
25
30
  }
26
31
 
27
32
  /**
@@ -30,7 +35,8 @@ export default class MoEInitConfig {
30
35
  static defaultConfig() {
31
36
  return new MoEInitConfig(
32
37
  MoEPushConfig.defaultConfig(),
33
- MoEngageLogConfig.defaultConfig()
38
+ MoEngageLogConfig.defaultConfig(),
39
+ MoEAnalyticsConfig.defaultConfig()
34
40
  );
35
41
  }
36
42
  }
@@ -1,10 +1,13 @@
1
+ import MoEInAppRules from "../models/MoEInAppRules";
2
+
1
3
  export default class MoESelfHandledCampaign {
2
4
  payload: string;
3
5
  dismissInterval: Number;
6
+ displayRules: MoEInAppRules
4
7
 
5
- constructor(payload: string, dismissInterval: Number) {
8
+ constructor(payload: string, dismissInterval: Number, displayRules: MoEInAppRules) {
6
9
  this.payload = payload;
7
10
  this.dismissInterval = dismissInterval;
11
+ this.displayRules = displayRules;
8
12
  }
9
-
10
13
  }
@@ -0,0 +1,15 @@
1
+ import MoEAccountMeta from "./MoEAccountMeta";
2
+ import MoESelfHandledCampaignData from "./MoESelfHandledCampaignData";
3
+
4
+ /**
5
+ * Model for Multiple SelfHandled Data
6
+ */
7
+ export default class MoESelfHandledCampaignsData {
8
+ accountMeta: MoEAccountMeta;
9
+ campaigns: Array<MoESelfHandledCampaignData>
10
+
11
+ constructor(accountMeta: MoEAccountMeta, campaigns: Array<MoESelfHandledCampaignData>) {
12
+ this.accountMeta = accountMeta;
13
+ this.campaigns = campaigns;
14
+ }
15
+ }
@@ -5,8 +5,11 @@ import MoEClickData from "../models/MoEClickData";
5
5
  import MoEInAppCustomAction from "../models/MoEInAppCustomAction";
6
6
  import MoEInAppData from "../models/MoEInAppData";
7
7
  import MoEInAppNavigation from "../models/MoEInAppNavigation";
8
+ import MoEInAppRules from "../models/MoEInAppRules";
8
9
  import MoESelfHandledCampaign from "../models/MoESelfHandledCampaign";
9
10
  import MoESelfHandledCampaignData from "../models/MoESelfHandledCampaignData";
11
+ import MoESelfHandledCampaignsData from "../models/MoESelfHandledCampaignsData";
12
+
10
13
  import {
11
14
  ACTION_TYPE,
12
15
  FORMATTED_CAMPAIGN_ID,
@@ -24,7 +27,12 @@ import {
24
27
  MOE_PAYLOAD,
25
28
  MOE_PLATFORM,
26
29
  MOE_SELF_HANDLED,
27
- MOE_NAVIGATION_VALUE
30
+ MOE_NAVIGATION_VALUE,
31
+ MOE_INAPP_DISPLAY_RULES,
32
+ MOE_INAPP_SCREEN_NAME,
33
+ MOE_INAPP_CONTEXTS,
34
+ MOE_DATA,
35
+ ACCOUNT_META
28
36
  } from "../utils/MoEConstants";
29
37
  import { isValidObject } from "../utils/MoEHelper";
30
38
  import { getMoEAccountMeta } from "./MoEngagePayloadParser";
@@ -64,7 +72,19 @@ function getMoESelfHandledCampaign(json: { [k: string]: any }) {
64
72
  var selfHandled = json[MOE_SELF_HANDLED];
65
73
  var payload = selfHandled[MOE_PAYLOAD];
66
74
  var dismissInterval = selfHandled[MOE_DISMISSINTERVAL];
67
- return new MoESelfHandledCampaign(payload, dismissInterval);
75
+ let displayRulesPayload = selfHandled[MOE_INAPP_DISPLAY_RULES];
76
+ let displayRules = getMoEInAppRules(displayRulesPayload);
77
+
78
+ return new MoESelfHandledCampaign(payload, dismissInterval, displayRules);
79
+ }
80
+
81
+ function getMoEInAppRules(json: { [k: string]: any }) {
82
+ var screenName = null;
83
+ if (json[MOE_INAPP_SCREEN_NAME] != undefined) {
84
+ screenName = json[MOE_INAPP_SCREEN_NAME];
85
+ }
86
+ var contexts = json[MOE_INAPP_CONTEXTS];
87
+ return new MoEInAppRules(screenName, contexts);
68
88
  }
69
89
 
70
90
  function getMoEInAppCustomAction(json: { [k: string]: any }) {
@@ -203,7 +223,26 @@ export function getNavigationObj(json: { [k: string]: any }, accountMetaPayload:
203
223
  var accountMeta = getMoEAccountMeta(accountMetaPayload);
204
224
  var action = getMoEInAppNavigation(json);
205
225
  return new MoEClickData(accountMeta, platform, campaignData, action);
206
-
207
226
  }
208
227
  else return undefined
228
+ }
229
+
230
+ export function getMoESelfHandledCampaignsDataObj(payload: string) {
231
+ const jsonPayload = JSON.parse(payload);
232
+ const accountMeta = getMoEAccountMeta(jsonPayload[ACCOUNT_META]);
233
+ const selfHandledCampaigns: Array<MoESelfHandledCampaignData> = [];
234
+
235
+ for (let i = 0; i < jsonPayload.campaigns.length; i++) {
236
+ const campaignJson = jsonPayload.campaigns[i];
237
+ const campaignPayload = campaignJson[MOE_DATA];
238
+
239
+ if (isSelfHandledCampaignValid(campaignPayload)) {
240
+ const campaign = getMoESelfHandledCampaign(campaignPayload);
241
+ var platform = campaignPayload[MOE_PLATFORM];
242
+ const campaignData = getMoECampaignData(campaignPayload);
243
+ const campaignInfo = new MoESelfHandledCampaignData(accountMeta, platform, campaign, campaignData);
244
+ selfHandledCampaigns.push(campaignInfo);
245
+ }
246
+ }
247
+ return new MoESelfHandledCampaignsData(accountMeta, selfHandledCampaigns);
209
248
  }
@@ -26,6 +26,12 @@ export const MOE_KEY_VALUE_PAIR = 'kvPair'
26
26
  //IN APP SELF HANDLED
27
27
  export const MOE_DISMISSINTERVAL = 'dismissInterval'
28
28
  export const MOE_IS_CANCELLABLE = 'isCancellable'
29
+ export const MOE_CAMPAIGNS = 'campaigns'
30
+
31
+ // INAPP DISPLAY RULES
32
+ export const MOE_INAPP_DISPLAY_RULES = 'displayRules'
33
+ export const MOE_INAPP_SCREEN_NAME = 'screenName'
34
+ export const MOE_INAPP_CONTEXTS = 'contexts'
29
35
 
30
36
  //IN APP NAVIGATION
31
37
  export const MOE_NAVIGATION_TYPE = 'navigationType'
@@ -0,0 +1,15 @@
1
+ import { getMoESelfHandledCampaignsDataObj } from "../../src/moeParser/MoEInAppParser";
2
+ import MoEngageLogger from "../logger/MoEngageLogger";
3
+ import MoEReactBridge from "../NativeMoEngage";
4
+ import { getAppIdJson } from "../utils/MoEJsonBuilder";
5
+
6
+ export const getSelfHandledInApps = async (appId: string) => {
7
+ try {
8
+ const selfHandledCampaignsData = await MoEReactBridge.getSelfHandledInApps(getAppIdJson(appId));
9
+ const retVal = getMoESelfHandledCampaignsDataObj(selfHandledCampaignsData);
10
+ return retVal;
11
+ } catch (error) {
12
+ MoEngageLogger.error("getSelfHandledInApps: error parsing $error", error);
13
+ return null;
14
+ }
15
+ }
@@ -3,13 +3,14 @@ import MoEInAppData from "../models/MoEInAppData";
3
3
  import MoEProperties from "../models/MoEProperties";
4
4
  import MoESelfHandledCampaignData from "../models/MoESelfHandledCampaignData";
5
5
  import { MOE_LOCATION } from "./MoEConstants";
6
- import { MoEPropertiesToJson} from "./MoEObjectToJson";
7
- import {MoEngagePermissionType} from "../models/MoEngagePermissionType";
6
+ import { MoEPropertiesToJson } from "./MoEObjectToJson";
7
+ import { MoEngagePermissionType } from "../models/MoEngagePermissionType";
8
8
  import MoEInitConfig from "../models/MoEInitConfig";
9
9
  import MoEngageLogger from "../logger/MoEngageLogger";
10
- import {MoEngageNudgePosition} from "../models/MoEngageNudgePosition";
10
+ import { MoEngageNudgePosition } from "../models/MoEngageNudgePosition";
11
11
  import { MoESupportedAttributes } from "../models/MoESupportedAttributes";
12
-
12
+ import MoESelfHandledCampaign from "../models/MoESelfHandledCampaign";
13
+ import MoEInAppRules from "../models/MoEInAppRules";
13
14
 
14
15
  export function getInAppCampaignJson(moEInAppData: MoEInAppData, type: string, appId: String) {
15
16
  var json: { [k: string]: any } = {
@@ -37,7 +38,7 @@ export function getSelfHandledJson(moESelfHandledCampaignData: MoESelfHandledCam
37
38
  campaignName: moESelfHandledCampaignData.campaignData.campaignName,
38
39
  campaignId: moESelfHandledCampaignData.campaignData.campaignId,
39
40
  campaignContext: moESelfHandledCampaignData.campaignData.context.attributes,
40
- selfHandled: moESelfHandledCampaignData.campaign,
41
+ selfHandled: getSelfHandledCampaignJson(moESelfHandledCampaignData.campaign),
41
42
  platform: moESelfHandledCampaignData.platform
42
43
  }
43
44
  }
@@ -81,14 +82,14 @@ export function getMoEPushCampaignJson(pushPayload: object, service: string, app
81
82
  },
82
83
  data: {
83
84
  payload: pushPayload,
84
- service:service
85
+ service: service
85
86
  }
86
87
  }
87
88
  return JSON.stringify(json);
88
89
  }
89
90
 
90
91
  export function getMoEPushTokenJson(pushToken: string, pushService: string, platform: string, appId: String) {
91
- var json: { [k: string]: any} = {
92
+ var json: { [k: string]: any } = {
92
93
  accountMeta: {
93
94
  appId: appId
94
95
  },
@@ -227,11 +228,11 @@ export function getOptOutTrackingJson(type: string, state: boolean, appId: strin
227
228
  }
228
229
 
229
230
  export function getPermissionResponseJson(isGranted: boolean, permissionType: MoEngagePermissionType) {
230
- let json: { [k: string]: any } = {
231
- isGranted: isGranted,
232
- type: permissionType.toLowerCase()
233
- }
234
- return JSON.stringify(json);
231
+ let json: { [k: string]: any } = {
232
+ isGranted: isGranted,
233
+ type: permissionType.toLowerCase()
234
+ }
235
+ return JSON.stringify(json);
235
236
  }
236
237
 
237
238
  export function getPushPermissionRequestCountJson(count: number, appId: String) {
@@ -266,6 +267,9 @@ export function getInitConfigJson(appId: String, initConfig: MoEInitConfig) {
266
267
  initConfig: {
267
268
  pushConfig: {
268
269
  shouldDeliverCallbackOnForegroundClick: initConfig.pushConfig.shouldDeliverCallbackOnForegroundClick
270
+ },
271
+ analyticsConfig: {
272
+ shouldTrackUserAttributeBooleanAsNumber: initConfig.analyticsConfig.shouldTrackUserAttributeBoolAsNumber
269
273
  }
270
274
  }
271
275
  }
@@ -283,3 +287,22 @@ export function getNudgeDisplayJson(nudgePosition: MoEngageNudgePosition, appId:
283
287
  }
284
288
  return JSON.stringify(json);
285
289
  }
290
+
291
+ export function getSelfHandledCampaignJson(moESelfHandledCampaign: MoESelfHandledCampaign) {
292
+ var json: { [k: string]: any } = {
293
+ dismissInterval: moESelfHandledCampaign.dismissInterval,
294
+ displayRules: moESelfHandledCampaign.displayRules,
295
+ payload: moESelfHandledCampaign.payload
296
+ }
297
+ MoEngageLogger.verbose("getSelfHandledCampaignJson(): payload json: ", json);
298
+ return json;
299
+ }
300
+
301
+ export function getDisplayRulesJson(displayRules: MoEInAppRules) {
302
+ var json: { [k: string]: any } = {
303
+ contexts: displayRules.contexts,
304
+ screenName: displayRules.screenName
305
+ }
306
+ MoEngageLogger.verbose("getDisplayRulesJson(): payload json: ", json);
307
+ return json;
308
+ }