react-native-moengage 8.1.2 → 8.3.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 +21 -0
- package/ReactNativeMoEngage.podspec +2 -2
- package/android/build.gradle +3 -3
- package/android/src/main/java/com/moengage/react/EventEmitterImpl.kt +20 -0
- package/android/src/main/java/com/moengage/react/GlobalCache.kt +25 -0
- package/android/src/main/java/com/moengage/react/MoEInitializer.kt +15 -2
- package/android/src/main/java/com/moengage/react/MoEReactBridge.kt +16 -3
- package/iOS/MoEReactBridge/MoEngageInitializer.h +11 -11
- package/iOS/MoEReactBridge/MoEngageInitializer.m +16 -13
- package/iOS/MoEReactBridge/MoEngageReactConstants.h +2 -0
- package/iOS/MoEReactBridge/MoEngageReactConstants.m +2 -0
- package/iOS/MoEReactBridge/MoEngageReactPluginInfo.h +1 -1
- package/package.json +1 -1
- package/src/index.ts +44 -1
- package/src/platform/MoERNAndroid.ts +12 -0
- package/src/utils/MoEJsonBuilder.ts +24 -0
- package/iOS/MoEReactBridge.xcodeproj/xcuserdata/rakshitha.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +0 -24
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
# 09-02-2023
|
|
2
|
+
|
|
3
|
+
## 8.3.0
|
|
4
|
+
- Android
|
|
5
|
+
- Android 13 push notification Opt-in with rationale via In-Apps
|
|
6
|
+
- Device Id enable / disable support
|
|
7
|
+
- BugFix
|
|
8
|
+
- Adding PushClick Callback Redirection Support if Application is in Foreground/Background State
|
|
9
|
+
|
|
10
|
+
# 16-01-2023
|
|
11
|
+
|
|
12
|
+
## 8.2.0
|
|
13
|
+
- iOS
|
|
14
|
+
- MoEngage-iOS-SDK version updated to `~>9.2.0`.
|
|
15
|
+
- Updated API
|
|
16
|
+
|
|
17
|
+
| Then | Now |
|
|
18
|
+
|:----------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------:|
|
|
19
|
+
| - (void)initializeDefaultSDKConfig:(MOSDKConfig*)sdkConfig andLaunchOptions:(NSDictionary*)launchOptions; | -(void)initializeDefaultSDKConfig:(MoEngageSDKConfig*)sdkConfig andLaunchOptions:(NSDictionary*)launchOptions; |
|
|
20
|
+
| - (void)initializeDefaultSDKConfigWithState:(MOSDKConfig*)sdkConfig withSDKState:(MoEngageSDKState)sdkState andLaunchOptions:(NSDictionary*)launchOptions; | - (void)initializeDefaultSDKConfigWithState:(MoEngageSDKConfig*)sdkConfig withSDKState:(MoEngageSDKState)sdkState andLaunchOptions:(NSDictionary*)launchOptions; |
|
|
21
|
+
|
|
1
22
|
# 21-11-2022
|
|
2
23
|
|
|
3
24
|
## 8.1.2
|
|
@@ -15,8 +15,8 @@ Pod::Spec.new do |s|
|
|
|
15
15
|
s.platform = :ios, "10.0"
|
|
16
16
|
s.source_files = 'iOS/MoEReactBridge/**/*.{h,m}'
|
|
17
17
|
s.dependency 'React'
|
|
18
|
-
s.dependency 'MoEngagePluginBase','>=
|
|
19
|
-
s.dependency 'MoEngageRichNotification','>=
|
|
18
|
+
s.dependency 'MoEngagePluginBase','>= 4.0.0','< 4.1.0'
|
|
19
|
+
s.dependency 'MoEngageRichNotification','>= 7.2.0','< 7.3.0'
|
|
20
20
|
|
|
21
21
|
s.prepare_command = <<-CMD
|
|
22
22
|
echo // Generated file, do not edit > iOS/MoEReactBridge/MoEngageReactPluginInfo.h
|
package/android/build.gradle
CHANGED
|
@@ -20,9 +20,9 @@ rootProject.allprojects {
|
|
|
20
20
|
|
|
21
21
|
ext {
|
|
22
22
|
//dependency version
|
|
23
|
-
moengageCoreVersion = "12.
|
|
24
|
-
moengageInAppVersion = "6.
|
|
25
|
-
basePluginVersion = "3.
|
|
23
|
+
moengageCoreVersion = "12.6.00"
|
|
24
|
+
moengageInAppVersion = "6.5.0"
|
|
25
|
+
basePluginVersion = "3.2.0"
|
|
26
26
|
//build versions
|
|
27
27
|
minimumVersion = 21
|
|
28
28
|
targetVersion = 31
|
|
@@ -2,10 +2,12 @@ package com.moengage.react
|
|
|
2
2
|
|
|
3
3
|
import com.facebook.react.bridge.ReactContext
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
|
+
import com.facebook.react.common.LifecycleState
|
|
5
6
|
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
6
7
|
import com.moengage.core.LogLevel
|
|
7
8
|
import com.moengage.core.internal.logger.Logger
|
|
8
9
|
import com.moengage.plugin.base.internal.EventEmitter
|
|
10
|
+
import com.moengage.plugin.base.internal.instanceMetaFromJson
|
|
9
11
|
import com.moengage.plugin.base.internal.model.events.Event
|
|
10
12
|
import com.moengage.plugin.base.internal.model.events.EventType
|
|
11
13
|
import com.moengage.plugin.base.internal.model.events.inapp.InAppActionEvent
|
|
@@ -14,6 +16,7 @@ import com.moengage.plugin.base.internal.model.events.inapp.InAppSelfHandledEven
|
|
|
14
16
|
import com.moengage.plugin.base.internal.model.events.push.PermissionEvent
|
|
15
17
|
import com.moengage.plugin.base.internal.model.events.push.PushClickedEvent
|
|
16
18
|
import com.moengage.plugin.base.internal.model.events.push.TokenEvent
|
|
19
|
+
import org.json.JSONObject
|
|
17
20
|
|
|
18
21
|
|
|
19
22
|
/**
|
|
@@ -66,6 +69,13 @@ class EventEmitterImpl(private val reactContext: ReactContext) : EventEmitter {
|
|
|
66
69
|
Logger.print { "$tag emitPushClicked() : $event" }
|
|
67
70
|
val eventName = eventMapping[event.eventType] ?: return
|
|
68
71
|
val payload = PayloadGenerator().pushPayloadToWriteableMap(event.payload)
|
|
72
|
+
if (GlobalCache.lifecycleAwarePushCallbackEnabled
|
|
73
|
+
&& reactContext.lifecycleState != LifecycleState.RESUMED
|
|
74
|
+
) {
|
|
75
|
+
Logger.print { "$tag emitPushClicked() : ${reactContext.lifecycleState}" }
|
|
76
|
+
GlobalCache.addPushClickedEventToCache(payload)
|
|
77
|
+
return
|
|
78
|
+
}
|
|
69
79
|
emit(eventName, payload)
|
|
70
80
|
}
|
|
71
81
|
|
|
@@ -91,6 +101,16 @@ class EventEmitterImpl(private val reactContext: ReactContext) : EventEmitter {
|
|
|
91
101
|
val payload = PayloadGenerator().permissionResultToWriteableMap(event.result)
|
|
92
102
|
emit(eventName, payload)
|
|
93
103
|
}
|
|
104
|
+
|
|
105
|
+
internal fun emitPendingEvents() {
|
|
106
|
+
if (GlobalCache.lifecycleAwarePushCallbackEnabled) {
|
|
107
|
+
val cachedPushClickedEvent = GlobalCache.getPushClickedCachedEvent() ?: return
|
|
108
|
+
val eventName = eventMapping[EventType.PUSH_CLICKED] ?: return
|
|
109
|
+
GlobalCache.removePushClickedEventFromCache()
|
|
110
|
+
|
|
111
|
+
emit(eventName, cachedPushClickedEvent)
|
|
112
|
+
}
|
|
113
|
+
}
|
|
94
114
|
}
|
|
95
115
|
|
|
96
116
|
val eventMapping = mapOf<EventType, String>(
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
package com.moengage.react
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.WritableMap
|
|
4
|
+
|
|
5
|
+
object GlobalCache {
|
|
6
|
+
|
|
7
|
+
var lifecycleAwarePushCallbackEnabled = false
|
|
8
|
+
internal set
|
|
9
|
+
|
|
10
|
+
private var pushClickedCachedEvent: WritableMap? = null
|
|
11
|
+
|
|
12
|
+
fun getPushClickedCachedEvent(): WritableMap? {
|
|
13
|
+
return pushClickedCachedEvent
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
internal fun addPushClickedEventToCache(
|
|
17
|
+
pushClickedEvent: WritableMap
|
|
18
|
+
) {
|
|
19
|
+
this.pushClickedCachedEvent = pushClickedEvent
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
internal fun removePushClickedEventFromCache() {
|
|
23
|
+
pushClickedCachedEvent = null
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -40,9 +40,15 @@ object MoEInitializer {
|
|
|
40
40
|
initializeDefaultInstance(context, builder, sdkState)
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
@JvmOverloads
|
|
44
|
+
fun initializeDefaultInstance(
|
|
45
|
+
context: Context,
|
|
46
|
+
builder: MoEngage.Builder,
|
|
47
|
+
lifecycleAwarePushCallbackEnabled: Boolean = false
|
|
48
|
+
) {
|
|
44
49
|
try {
|
|
45
50
|
Logger.print { "$tag initialize() : Will try to initialize the sdk." }
|
|
51
|
+
GlobalCache.lifecycleAwarePushCallbackEnabled = lifecycleAwarePushCallbackEnabled
|
|
46
52
|
PluginInitializer.initialize(
|
|
47
53
|
builder,
|
|
48
54
|
IntegrationMeta(INTEGRATION_TYPE, BuildConfig.MOENGAGE_REACT_LIBRARY_VERSION)
|
|
@@ -52,9 +58,16 @@ object MoEInitializer {
|
|
|
52
58
|
}
|
|
53
59
|
}
|
|
54
60
|
|
|
55
|
-
|
|
61
|
+
@JvmOverloads
|
|
62
|
+
fun initializeDefaultInstance(
|
|
63
|
+
context: Context,
|
|
64
|
+
builder: MoEngage.Builder,
|
|
65
|
+
sdkState: SdkState,
|
|
66
|
+
lifecycleAwarePushCallbackEnabled: Boolean = false
|
|
67
|
+
) {
|
|
56
68
|
try {
|
|
57
69
|
Logger.print { "$tag initialize() : Initialising MoEngage SDK." }
|
|
70
|
+
GlobalCache.lifecycleAwarePushCallbackEnabled = lifecycleAwarePushCallbackEnabled
|
|
58
71
|
PluginInitializer.initialize(
|
|
59
72
|
builder,
|
|
60
73
|
IntegrationMeta(INTEGRATION_TYPE, BuildConfig.MOENGAGE_REACT_LIBRARY_VERSION),
|
|
@@ -6,8 +6,8 @@ import com.facebook.react.bridge.ReactApplicationContext
|
|
|
6
6
|
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
7
7
|
import com.facebook.react.bridge.ReactMethod
|
|
8
8
|
import com.moengage.core.LogLevel
|
|
9
|
-
import com.moengage.core.internal.LIB_VERSION
|
|
10
9
|
import com.moengage.core.internal.logger.Logger
|
|
10
|
+
import com.moengage.core.internal.utils.getSdkVersion
|
|
11
11
|
import com.moengage.plugin.base.internal.PluginHelper
|
|
12
12
|
import com.moengage.plugin.base.internal.setEventEmitter
|
|
13
13
|
|
|
@@ -21,6 +21,7 @@ class MoEReactBridge(private val reactContext: ReactApplicationContext) :
|
|
|
21
21
|
|
|
22
22
|
private val context: Context = reactContext.applicationContext
|
|
23
23
|
private val pluginHelper = PluginHelper()
|
|
24
|
+
private val moeSdkVersion = getSdkVersion()
|
|
24
25
|
|
|
25
26
|
override fun getName(): String {
|
|
26
27
|
return "MoEReactBridge"
|
|
@@ -151,7 +152,9 @@ class MoEReactBridge(private val reactContext: ReactApplicationContext) :
|
|
|
151
152
|
try {
|
|
152
153
|
Logger.print { "$tag initialize() : " }
|
|
153
154
|
pluginHelper.initialise(payload)
|
|
154
|
-
|
|
155
|
+
val eventEmitterImpl = EventEmitterImpl(reactContext)
|
|
156
|
+
eventEmitterImpl.emitPendingEvents()
|
|
157
|
+
setEventEmitter(eventEmitterImpl)
|
|
155
158
|
} catch (t: Throwable) {
|
|
156
159
|
Logger.print(LogLevel.ERROR, t) { "$tag initialize() : " }
|
|
157
160
|
}
|
|
@@ -179,7 +182,7 @@ class MoEReactBridge(private val reactContext: ReactApplicationContext) :
|
|
|
179
182
|
@ReactMethod
|
|
180
183
|
fun validateSdkVersion(promise: Promise) {
|
|
181
184
|
Logger.print { "$tag validateSdkVersion() : Validating Version" }
|
|
182
|
-
if (
|
|
185
|
+
if (moeSdkVersion > 13000) {
|
|
183
186
|
Logger.print(LogLevel.ERROR) { "$tag validateSdkVersion() : invalid version" }
|
|
184
187
|
promise.reject("error", "Use SDK version 12.x.xx")
|
|
185
188
|
} else {
|
|
@@ -254,4 +257,14 @@ class MoEReactBridge(private val reactContext: ReactApplicationContext) :
|
|
|
254
257
|
Logger.print(LogLevel.ERROR, t) { "$tag permissionResponse() :" }
|
|
255
258
|
}
|
|
256
259
|
}
|
|
260
|
+
|
|
261
|
+
@ReactMethod
|
|
262
|
+
fun updatePushPermissionRequestCount(payload: String) {
|
|
263
|
+
try {
|
|
264
|
+
Logger.print { "$tag updatePushPermissionRequestCount() : Payload: $payload" }
|
|
265
|
+
pluginHelper.updatePushPermissionRequestCount(context, payload)
|
|
266
|
+
} catch (t: Throwable) {
|
|
267
|
+
Logger.print(LogLevel.ERROR, t) { "$tag updatePushPermissionRequestCount() :" }
|
|
268
|
+
}
|
|
269
|
+
}
|
|
257
270
|
}
|
|
@@ -19,14 +19,14 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
19
19
|
|
|
20
20
|
/// Initialization Methods to setup SDK with configuration parameters from Info.plist file
|
|
21
21
|
/// @param launchOptions Launch Options dictionary
|
|
22
|
-
/// @warning Make sure to call only one of the initialization methods available (either with plist OR with
|
|
22
|
+
/// @warning Make sure to call only one of the initialization methods available (either with plist OR with MoEngageSDKConfig instance)
|
|
23
23
|
/// @version 8.0.0 and above
|
|
24
24
|
- (void)initializeDefaultInstance:(NSDictionary*)launchOptions;
|
|
25
25
|
|
|
26
26
|
/// Initialization Methods to setup SDK with configuration parameters from Info.plist file
|
|
27
27
|
/// @param sdkState MoEngageSDKState enum indicating if SDK is Enabled/Disabled, refer (link)[https://docs.moengage.com/docs/gdpr-compliance-1#enabledisable-sdk] for more info
|
|
28
28
|
/// @param launchOptions Launch Options dictionary
|
|
29
|
-
/// @warning Make sure to call only one of the initialization methods available (either with plist OR with
|
|
29
|
+
/// @warning Make sure to call only one of the initialization methods available (either with plist OR with MoEngageSDKConfig instance)
|
|
30
30
|
/// @version 8.1.0 and above
|
|
31
31
|
- (void)initializeDefaultInstanceWithState:(MoEngageSDKState)sdkState andLaunchOptions:(NSDictionary*)launchOptions;
|
|
32
32
|
|
|
@@ -37,28 +37,28 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
37
37
|
/// @version 8.0.0 and above
|
|
38
38
|
- (void)initializeDefaultInstance:(BOOL)isSdkEnabled andLaunchOptions:(NSDictionary*)launchOptions __deprecated_msg("Use initializeDefaultInstanceWithState:andLaunchOptions instead.");
|
|
39
39
|
|
|
40
|
-
/// Initialization Methods to setup SDK with
|
|
41
|
-
/// @param sdkConfig
|
|
40
|
+
/// Initialization Methods to setup SDK with MoEngageSDKConfig instance instead of from Info.plist file
|
|
41
|
+
/// @param sdkConfig MoEngageSDKConfig instance for SDK configuration
|
|
42
42
|
/// @param launchOptions Launch Options dictionary
|
|
43
43
|
/// @warning Make sure to call only one of the initialization methods available (either with plist OR with MOSDKConfig instance)
|
|
44
44
|
/// @version 8.0.0 and above
|
|
45
|
-
- (void)initializeDefaultSDKConfig:(
|
|
45
|
+
- (void)initializeDefaultSDKConfig:(MoEngageSDKConfig*)sdkConfig andLaunchOptions:(NSDictionary*)launchOptions;
|
|
46
46
|
|
|
47
|
-
/// Initialization Methods to setup SDK with
|
|
48
|
-
/// @param sdkConfig
|
|
47
|
+
/// Initialization Methods to setup SDK with MoEngageSDKConfig instance instead of from Info.plist file
|
|
48
|
+
/// @param sdkConfig MoEngageSDKConfig instance for SDK configuration
|
|
49
49
|
/// @param sdkState MoEngageSDKState indicating if SDK is Enabled/Disabled, refer (link)[https://docs.moengage.com/docs/gdpr-compliance-1#enabledisable-sdk] for more info
|
|
50
50
|
/// @param launchOptions Launch Options dictionary
|
|
51
51
|
/// @warning Make sure to call only one of the initialization methods available (either with plist OR with MOSDKConfig instance)
|
|
52
52
|
/// @version 8.1.0 and above
|
|
53
|
-
- (void)initializeDefaultSDKConfigWithState:(
|
|
53
|
+
- (void)initializeDefaultSDKConfigWithState:(MoEngageSDKConfig*)sdkConfig withSDKState:(MoEngageSDKState)sdkState andLaunchOptions:(NSDictionary*)launchOptions;
|
|
54
54
|
|
|
55
|
-
/// Initialization Methods to setup SDK with
|
|
56
|
-
/// @param sdkConfig
|
|
55
|
+
/// Initialization Methods to setup SDK with MoEngageSDKConfig instance instead of from Info.plist file
|
|
56
|
+
/// @param sdkConfig MoEngageSDKConfig instance for SDK configuration
|
|
57
57
|
/// @param isSdkEnabled Bool indicating if SDK is Enabled/Disabled, refer (link)[https://docs.moengage.com/docs/gdpr-compliance-1#enabledisable-sdk] for more info
|
|
58
58
|
/// @param launchOptions Launch Options dictionary
|
|
59
59
|
/// @warning Make sure to call only one of the initialization methods available (either with plist OR with MOSDKConfig instance)
|
|
60
60
|
/// @version 8.0.0 and above
|
|
61
|
-
- (void)initializeDefaultSDKConfig:(
|
|
61
|
+
- (void)initializeDefaultSDKConfig:(MoEngageSDKConfig*)sdkConfig withSDKState:(BOOL)isSdkEnabled andLaunchOptions:(NSDictionary*)launchOptions __deprecated_msg("Use initializeDefaultSDKConfigWithState:andLaunchOptions instead.");
|
|
62
62
|
@end
|
|
63
63
|
|
|
64
64
|
NS_ASSUME_NONNULL_END
|
|
@@ -34,29 +34,29 @@
|
|
|
34
34
|
[self initializeDefaultSDKConfig:[self fetchSDKConfig] andLaunchOptions:launchOptions];
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
- (void)initializeDefaultSDKConfig:(
|
|
37
|
+
- (void)initializeDefaultSDKConfig:(MoEngageSDKConfig*)sdkConfig andLaunchOptions:(NSDictionary*)launchOptions{
|
|
38
38
|
MoEngagePlugin *plugin = [[MoEngagePlugin alloc] init];
|
|
39
39
|
[plugin initializeDefaultInstanceWithSdkConfig:sdkConfig launchOptions:launchOptions];
|
|
40
40
|
[self commonSetUp:plugin identifier:sdkConfig.identifier];
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
- (void)initializeDefaultInstance:(BOOL)isSdkEnabled andLaunchOptions:(NSDictionary*)launchOptions{
|
|
44
|
-
|
|
44
|
+
MoEngageSDKConfig *sdkConfig = [self fetchSDKConfig];
|
|
45
45
|
MoEngageSDKState currentSDKState = isSdkEnabled ? MoEngageSDKStateEnabled: MoEngageSDKStateDisabled;
|
|
46
46
|
[self initializeDefaultSDKConfigWithState:sdkConfig withSDKState:currentSDKState andLaunchOptions:launchOptions];
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
- (void)initializeDefaultInstanceWithState:(MoEngageSDKState)sdkState andLaunchOptions:(NSDictionary*)launchOptions{
|
|
50
|
-
|
|
50
|
+
MoEngageSDKConfig *sdkConfig = [self fetchSDKConfig];
|
|
51
51
|
[self initializeDefaultSDKConfigWithState:sdkConfig withSDKState:sdkState andLaunchOptions:launchOptions];
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
- (void)initializeDefaultSDKConfig:(
|
|
54
|
+
- (void)initializeDefaultSDKConfig:(MoEngageSDKConfig*)sdkConfig withSDKState:(BOOL)isSDKEnabled andLaunchOptions:(NSDictionary*)launchOptions{
|
|
55
55
|
MoEngageSDKState currentSDKState = isSDKEnabled ? MoEngageSDKStateEnabled: MoEngageSDKStateDisabled;
|
|
56
56
|
[self initializeDefaultSDKConfigWithState:sdkConfig withSDKState:currentSDKState andLaunchOptions:launchOptions];
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
- (void)initializeDefaultSDKConfigWithState:(
|
|
59
|
+
- (void)initializeDefaultSDKConfigWithState:(MoEngageSDKConfig *)sdkConfig withSDKState:(MoEngageSDKState)sdkState andLaunchOptions:(NSDictionary*)launchOptions{
|
|
60
60
|
|
|
61
61
|
MoEngagePlugin *plugin = [[MoEngagePlugin alloc] init];
|
|
62
62
|
[plugin initializeDefaultInstanceWithSdkConfig:sdkConfig sdkState:sdkState launchOptions:launchOptions];
|
|
@@ -74,9 +74,9 @@
|
|
|
74
74
|
[[MoEngagePluginBridge sharedInstance] setPluginBridgeDelegate:self identifier:identifier];
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
-(
|
|
77
|
+
-(MoEngageSDKConfig*)fetchSDKConfig {
|
|
78
78
|
NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
|
|
79
|
-
|
|
79
|
+
MoEngageSDKConfig *sdkConfig;
|
|
80
80
|
|
|
81
81
|
if ( [infoDict objectForKey: kMoEngage] != nil && [infoDict objectForKey: kMoEngage] != [NSNull null]) {
|
|
82
82
|
NSDictionary* moeDict = [infoDict objectForKey: kMoEngage];
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
|
|
85
85
|
NSString *appId = [moeDict objectForKey: kAppId];
|
|
86
86
|
if (appId.length > 0) {
|
|
87
|
-
sdkConfig = [[
|
|
87
|
+
sdkConfig = [[MoEngageSDKConfig alloc] initWithAppID:appId];
|
|
88
88
|
}
|
|
89
89
|
} else {
|
|
90
90
|
NSAssert(NO, @"MoEngage - Configure the APP ID for your MoEngage App.To get the AppID login to your MoEngage account, after that go to Settings -> App Settings. You will find the App ID in this screen. And refer to docs.moengage.com for more info");
|
|
@@ -119,20 +119,23 @@
|
|
|
119
119
|
return sdkConfig;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
-
- (
|
|
123
|
-
|
|
122
|
+
- (MoEngageDataCenter)getDataCenterFromString:(NSString*)stringVal {
|
|
123
|
+
MoEngageDataCenter dataCenter = MoEngageDataCenterData_center_01;
|
|
124
124
|
|
|
125
125
|
if ([stringVal isEqual:kDataCenter1])
|
|
126
126
|
{
|
|
127
|
-
dataCenter =
|
|
127
|
+
dataCenter = MoEngageDataCenterData_center_01;
|
|
128
128
|
}
|
|
129
129
|
else if ([stringVal isEqual:kDataCenter2])
|
|
130
130
|
{
|
|
131
|
-
dataCenter =
|
|
131
|
+
dataCenter = MoEngageDataCenterData_center_02;
|
|
132
132
|
}
|
|
133
133
|
else if ([stringVal isEqual:kDataCenter3])
|
|
134
134
|
{
|
|
135
|
-
dataCenter =
|
|
135
|
+
dataCenter = MoEngageDataCenterData_center_03;
|
|
136
|
+
} else if ([stringVal isEqual: kDataCenter4])
|
|
137
|
+
{
|
|
138
|
+
dataCenter = MoEngageDataCenterData_center_04;
|
|
136
139
|
}
|
|
137
140
|
else
|
|
138
141
|
{
|
|
@@ -27,6 +27,8 @@ extern NSString* const kEnableLogs;
|
|
|
27
27
|
extern NSString* const kDataCenter1;
|
|
28
28
|
extern NSString* const kDataCenter2;
|
|
29
29
|
extern NSString* const kDataCenter3;
|
|
30
|
+
extern NSString* const kDataCenter4;
|
|
31
|
+
|
|
30
32
|
|
|
31
33
|
//PayLoad Constants
|
|
32
34
|
extern NSString* const kPayload;
|
|
@@ -24,6 +24,8 @@ NSString* const kEnableLogs = @"ENABLE_LOGS";
|
|
|
24
24
|
NSString* const kDataCenter1 = @"DATA_CENTER_01";
|
|
25
25
|
NSString* const kDataCenter2 = @"DATA_CENTER_02";
|
|
26
26
|
NSString* const kDataCenter3 = @"DATA_CENTER_03";
|
|
27
|
+
NSString* const kDataCenter4 = @"DATA_CENTER_04";
|
|
28
|
+
|
|
27
29
|
|
|
28
30
|
//PayLoad Constants
|
|
29
31
|
NSString* const kPayload = @"payload";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Generated file, do not edit
|
|
2
|
-
#define MOE_REACT_PLUGIN_VERSION @"8.1.
|
|
2
|
+
#define MOE_REACT_PLUGIN_VERSION @"8.1.2"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-moengage",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.3.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
|
"keywords": [
|
package/src/index.ts
CHANGED
|
@@ -24,7 +24,9 @@ import {
|
|
|
24
24
|
getSdkStateJson,
|
|
25
25
|
getSelfHandledJson,
|
|
26
26
|
getUserAttributeJson,
|
|
27
|
-
getUserLocAttributeJson
|
|
27
|
+
getUserLocAttributeJson,
|
|
28
|
+
getPushPermissionRequestCountJson,
|
|
29
|
+
getDeviceIdTrackingJson
|
|
28
30
|
} from "./utils/MoEJsonBuilder";
|
|
29
31
|
import {
|
|
30
32
|
USER_ATTRIBUTE_UNIQUE_ID,
|
|
@@ -751,6 +753,47 @@ var ReactMoE = {
|
|
|
751
753
|
if (Platform.OS == PLATFORM_ANDROID) {
|
|
752
754
|
MoERNAndroid.requestPushPermission();
|
|
753
755
|
}
|
|
756
|
+
},
|
|
757
|
+
|
|
758
|
+
/**
|
|
759
|
+
* API to update push permission request count. The count will be incremented on every call.
|
|
760
|
+
* Note: This API is only for Android platform and is a no-operation method for other plaforms.
|
|
761
|
+
*
|
|
762
|
+
* @param {number} count - number of times push permission requested
|
|
763
|
+
*/
|
|
764
|
+
updatePushPermissionRequestCountAndroid: function (count: number) {
|
|
765
|
+
console.log("Will increment push permission request count");
|
|
766
|
+
let payload = getPushPermissionRequestCountJson(count, moeAppId);
|
|
767
|
+
|
|
768
|
+
if (Platform.OS == PLATFORM_ANDROID) {
|
|
769
|
+
MoERNAndroid.updatePushPermissionRequestCount(payload);
|
|
770
|
+
}
|
|
771
|
+
},
|
|
772
|
+
|
|
773
|
+
/**
|
|
774
|
+
* API to enable Device Id tracking for Android.
|
|
775
|
+
*
|
|
776
|
+
* Note: By default Device Id tracking is enabled
|
|
777
|
+
*/
|
|
778
|
+
enableDeviceIdTracking: function () {
|
|
779
|
+
console.log("Will enable device id tracking");
|
|
780
|
+
let payload = getDeviceIdTrackingJson(true, moeAppId);
|
|
781
|
+
|
|
782
|
+
if (Platform.OS == PLATFORM_ANDROID) {
|
|
783
|
+
MoERNAndroid.enableDeviceIdTracking(payload);
|
|
784
|
+
}
|
|
785
|
+
},
|
|
786
|
+
|
|
787
|
+
/**
|
|
788
|
+
* API to disable Device Id tracking for Android.
|
|
789
|
+
*/
|
|
790
|
+
disableDeviceIdTracking: function () {
|
|
791
|
+
console.log("Will disable device id tracking");
|
|
792
|
+
let payload = getDeviceIdTrackingJson(false, moeAppId);
|
|
793
|
+
|
|
794
|
+
if (Platform.OS == PLATFORM_ANDROID) {
|
|
795
|
+
MoERNAndroid.disableDeviceIdTracking(payload);
|
|
796
|
+
}
|
|
754
797
|
}
|
|
755
798
|
|
|
756
799
|
};
|
|
@@ -143,6 +143,18 @@ export class MoERNAndroid {
|
|
|
143
143
|
static requestPushPermission() {
|
|
144
144
|
MoEReactBridge.requestPushPermission();
|
|
145
145
|
}
|
|
146
|
+
|
|
147
|
+
static updatePushPermissionRequestCount(payload: { [k: string]: any }) {
|
|
148
|
+
MoEReactBridge.updatePushPermissionRequestCount(JSON.stringify(payload));
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
static enableDeviceIdTracking(payload: { [k: string]: any }) {
|
|
152
|
+
MoEReactBridge.deviceIdentifierTrackingStatusUpdate(JSON.stringify(payload))
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
static disableDeviceIdTracking(payload: { [k: string]: any }) {
|
|
156
|
+
MoEReactBridge.deviceIdentifierTrackingStatusUpdate(JSON.stringify(payload))
|
|
157
|
+
}
|
|
146
158
|
}
|
|
147
159
|
|
|
148
160
|
const PUSH_SERVICE_FCM = "FCM"
|
|
@@ -226,4 +226,28 @@ export function getPermissionResponseJson(isGranted: boolean, permissionType: Mo
|
|
|
226
226
|
type: permissionType.toLowerCase()
|
|
227
227
|
}
|
|
228
228
|
return json;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
export function getPushPermissionRequestCountJson(count: number, appId: String) {
|
|
232
|
+
var json: { [k: string]: any } = {
|
|
233
|
+
accountMeta: {
|
|
234
|
+
appId: appId
|
|
235
|
+
},
|
|
236
|
+
data: {
|
|
237
|
+
pushOptinInAttemptCount: count
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return json;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
export function getDeviceIdTrackingJson(isDeviceIdTrackingEnabled: Boolean, appId: String) {
|
|
244
|
+
var json: { [k: string]: any } = {
|
|
245
|
+
accountMeta: {
|
|
246
|
+
appId: appId
|
|
247
|
+
},
|
|
248
|
+
data: {
|
|
249
|
+
isDeviceIdTrackingEnabled: isDeviceIdTrackingEnabled
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return json;
|
|
229
253
|
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<Bucket
|
|
3
|
-
uuid = "A9D2CCE5-E1E4-46E2-8FD6-8A880E005343"
|
|
4
|
-
type = "1"
|
|
5
|
-
version = "2.0">
|
|
6
|
-
<Breakpoints>
|
|
7
|
-
<BreakpointProxy
|
|
8
|
-
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
|
9
|
-
<BreakpointContent
|
|
10
|
-
uuid = "B5C2799E-B498-4B55-9AB4-16D905914902"
|
|
11
|
-
shouldBeEnabled = "Yes"
|
|
12
|
-
ignoreCount = "0"
|
|
13
|
-
continueAfterRunningActions = "No"
|
|
14
|
-
filePath = "MoEReactBridge/MOReactInitializer.m"
|
|
15
|
-
startingColumnNumber = "9223372036854775807"
|
|
16
|
-
endingColumnNumber = "9223372036854775807"
|
|
17
|
-
startingLineNumber = "34"
|
|
18
|
-
endingLineNumber = "34"
|
|
19
|
-
landmarkName = "-intializeSDKWithLaunchOptions:"
|
|
20
|
-
landmarkType = "7">
|
|
21
|
-
</BreakpointContent>
|
|
22
|
-
</BreakpointProxy>
|
|
23
|
-
</Breakpoints>
|
|
24
|
-
</Bucket>
|