react-native-moengage 7.4.1 → 8.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.
Files changed (55) hide show
  1. package/CHANGELOG.md +72 -1
  2. package/ReactNativeMoEngage.podspec +3 -3
  3. package/android/build.gradle +11 -12
  4. package/android/gradle/wrapper/gradle-wrapper.properties +3 -3
  5. package/android/gradle.properties +0 -1
  6. package/android/src/main/java/com/moengage/react/EventEmitterImpl.kt +57 -22
  7. package/android/src/main/java/com/moengage/react/MoEInitializer.kt +44 -13
  8. package/android/src/main/java/com/moengage/react/MoEReactBridge.kt +116 -82
  9. package/android/src/main/java/com/moengage/react/MoEReactHelper.kt +2 -2
  10. package/android/src/main/java/com/moengage/react/PayloadGenerator.kt +41 -17
  11. package/iOS/MoEReactBridge/MoEReactBridge.h +1 -1
  12. package/iOS/MoEReactBridge/MoEReactBridge.m +34 -60
  13. package/iOS/MoEReactBridge/MoEngageInitializer.h +61 -0
  14. package/iOS/MoEReactBridge/MoEngageInitializer.m +164 -0
  15. package/iOS/MoEReactBridge/{MoEReactConstants.h → MoEngageReactConstants.h} +13 -3
  16. package/iOS/MoEReactBridge/{MoEReactConstants.m → MoEngageReactConstants.m} +14 -7
  17. package/iOS/MoEReactBridge/MoEngageReactPluginInfo.h +2 -0
  18. package/iOS/MoEReactBridge.xcodeproj/project.pbxproj +6 -6
  19. package/package.json +8 -3
  20. package/src/index.ts +196 -208
  21. package/src/models/MoEAccountMeta.ts +8 -0
  22. package/src/models/MoEAction.ts +4 -0
  23. package/src/models/MoEActionType.ts +4 -0
  24. package/src/models/MoECampaignContext.ts +10 -0
  25. package/src/models/MoECampaignData.ts +14 -0
  26. package/src/models/MoEClickData.ts +18 -0
  27. package/src/models/MoEGeoLocation.ts +2 -10
  28. package/src/models/MoEInAppCustomAction.ts +8 -13
  29. package/src/models/MoEInAppData.ts +16 -0
  30. package/src/models/MoEInAppNavigation.ts +14 -24
  31. package/src/models/MoENavigationType.ts +4 -0
  32. package/src/models/MoEPlatform.ts +4 -0
  33. package/src/models/MoEProperties.ts +19 -15
  34. package/src/models/MoEPushCampaign.ts +6 -22
  35. package/src/models/MoEPushPayload.ts +14 -0
  36. package/src/models/MoEPushService.ts +4 -4
  37. package/src/models/MoEPushToken.ts +6 -15
  38. package/src/models/MoESelfHandledCampaign.ts +10 -0
  39. package/src/models/MoESelfHandledCampaignData.ts +18 -0
  40. package/src/models/MoEngagePermissionType.ts +3 -0
  41. package/src/models/MoEngagePersimissionResultData.ts +14 -0
  42. package/src/moeParser/MoEInAppParser.ts +192 -0
  43. package/src/moeParser/MoEPushNotificationParser.ts +78 -0
  44. package/src/moeParser/MoEngagePayloadParser.ts +11 -0
  45. package/src/platform/MoERNAndroid.ts +62 -92
  46. package/src/platform/MoERNiOS.ts +27 -60
  47. package/src/utils/MoEConstants.ts +61 -0
  48. package/src/utils/MoEEventHandlerHelper.ts +47 -28
  49. package/src/utils/MoEJsonBuilder.ts +229 -0
  50. package/src/utils/MoEObjectToJson.ts +44 -0
  51. package/iOS/MoEReactBridge/MOReactInitializer.h +0 -46
  52. package/iOS/MoEReactBridge/MOReactInitializer.m +0 -172
  53. package/iOS/MoEReactBridge/MOReactPluginInfo.h +0 -2
  54. package/src/models/MoEInAppCampaign.ts +0 -46
  55. package/src/models/MoEInAppSelfHandledCampaign.ts +0 -34
package/CHANGELOG.md CHANGED
@@ -1,6 +1,77 @@
1
- ## Changelog:
1
+ # 28-10-2022
2
+
3
+ ## 8.1.0
4
+ - Android
5
+ - AGP version updated to `7.3.1`
6
+ - Gradle version updated to `7.4`
7
+ - Target SDK version - 31
8
+ - Compile SDK Version - 31
9
+ - Support for Android SDK version `12.4.00`
10
+ - InApp `6.4.0`
11
+
12
+ - iOS
13
+ - Deprecated API
14
+
15
+ | Then | Now |
16
+ |:----------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------:|
17
+ | - (void)initializeDefaultInstance:(BOOL)isSdkEnabled andLaunchOptions:(NSDictionary*)launchOptions | - (void)initializeDefaultInstanceWithState:(MoEngageSDKState)sdkState andLaunchOptions:(NSDictionary*)launchOptions; |
18
+ | - (void)initializeDefaultSDKConfig:(MOSDKConfig*)sdkConfig withSDKState:(BOOL)isSdkEnabled andLaunchOptions:(NSDictionary*)launchOptions | - (void)initializeDefaultSDKConfigWithState:(MOSDKConfig*)sdkConfig withSDKState:(MoEngageSDKState)sdkState andLaunchOptions:(NSDictionary*)launchOptions; |
19
+
20
+ ## 27-10-2022
21
+
22
+ ### 8.0.0
23
+ - Support for Android SDK version `12.3.02` and above.
24
+ - Support for iOS SDK version `8.3.1` and above.
25
+ - TS Lint warnings resolved.
26
+ - Breaking Changes
27
+ - InApp Model `MoEInAppCampaign` broken down from a single object to multiple objects
28
+ - `MoEInAppData`
29
+ - `MoEClickData`
30
+ - `MoESelfHandledCampaignData`
31
+ - Push Models
32
+ - `MoEPushCampaign` --> `MoEPushPayload`
33
+ - Breaking APIs in Javascript
34
+
35
+ | Then | Now |
36
+ |:------------:|:-----------------:|
37
+ | initialize() | initialize(appId) |
38
+
39
+ - Removed APIs
40
+
41
+ | Removed APIs |
42
+ |:---------------------------:|
43
+ | selfHandledPrimaryClicked() |
44
+ | enableSDKLogs() |
45
+ | optOutInAppNotification() |
46
+ | optOutPushNotification() |
47
+
48
+ - Android
49
+ - Build Configuration Updates
50
+ - Minimum SDK version - 21
51
+ - Target SDK version - 30
52
+ - Compile SDK Version - 30
53
+ - Mi SDK update to Version 5.x.x, refer to the [Configuring Xiaomi Push](https://developers.moengage.com/hc/en-us/articles/4403466194708) and update the integration.
54
+ - Deprecated APIs
55
+
56
+ | Then | Now |
57
+ |:--------------------------------------------------------------:|:-----------------------------------------------------------------------------:|
58
+ | MoEInitializer.initialize(Context, MoEngage.Builder) | MoEInitializer.initializeDefaultInstance(Context, MoEngage.Builder) |
59
+ | MoEInitializer.initialize(Context, MoEngage.Builder, SdkState) | MoEInitializer.initializeDefaultInstance(Context, MoEngage.Builder, SdkState) |
60
+
61
+ - iOS
62
+ - `MOReactInitializer` renamed to `MoEngageInitializer`
63
+ - Deprecated APIs
64
+
65
+ | Then | Now |
66
+ |:-------------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------:|
67
+ | - (void)intializeSDKWithLaunchOptions:(NSDictionary*)launchOptions; | - (void)initializeDefaultInstance:(NSDictionary*)launchOptions; |
68
+ | - (void)intializeSDKWithState:(BOOL)isSdkEnabled andLaunchOptions:(NSDictionary*)launchOptions; | - (void)initializeDefaultInstance:(BOOL)isSdkEnabled andLaunchOptions:(NSDictionary*)launchOptions; |
69
+ | - (void)intializeSDKWithConfig:(MOSDKConfig*)sdkConfig andLaunchOptions:(NSDictionary*)launchOptions; | - (void)initializeDefaultSDKConfig:(MOSDKConfig*)sdkConfig andLaunchOptions:(NSDictionary*)launchOptions; |
70
+ | - (void)intializeSDKWithConfig:(MOSDKConfig*)sdkConfig withSDKState:(BOOL)isSdkEnabled andLaunchOptions:(NSDictionary*)launchOptions; | - (void)initializeDefaultSDKConfig:(MOSDKConfig*)sdkConfig withSDKState:(BOOL)isSdkEnabled andLaunchOptions:(NSDictionary*)launchOptions; |
71
+
2
72
 
3
73
  ### 7.4.1
74
+ Release Date: 15th July 2022
4
75
  - Device identifier tracking update as per Google's User data policy. Advertising Id is only tracked after user consent.
5
76
 
6
77
  ### 7.4.0
@@ -15,10 +15,10 @@ 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 'MoEPluginBase','>= 2.3.0','< 2.4.0'
18
+ s.dependency 'MoEngagePluginBase','>= 3.1.0','< 3.2.0'
19
19
 
20
20
  s.prepare_command = <<-CMD
21
- echo // Generated file, do not edit > iOS/MoEReactBridge/MOReactPluginInfo.h
22
- echo "#define MO_REACT_PLUGIN_VERSION @\\"#{package["version"]}\\"" >> iOS/MoEReactBridge/MOReactPluginInfo.h
21
+ echo // Generated file, do not edit > iOS/MoEReactBridge/MoEngageReactPluginInfo.h
22
+ echo "#define MOE_REACT_PLUGIN_VERSION @\\"#{package["version"]}\\"" >> iOS/MoEReactBridge/MoEngageReactPluginInfo.h
23
23
  CMD
24
24
  end
@@ -1,13 +1,12 @@
1
1
  buildscript {
2
- ext.kotlinVersion = '1.4.20'
2
+ ext.kotlinVersion = '1.6.0'
3
3
  repositories {
4
4
  google()
5
5
  mavenCentral()
6
- jcenter()
7
6
  }
8
7
 
9
8
  dependencies {
10
- classpath 'com.android.tools.build:gradle:4.1.2'
9
+ classpath 'com.android.tools.build:gradle:7.3.1'
11
10
  classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
12
11
  }
13
12
  }
@@ -15,20 +14,19 @@ buildscript {
15
14
  rootProject.allprojects {
16
15
  repositories {
17
16
  google()
18
- mavenLocal()
19
17
  mavenCentral()
20
- jcenter()
21
18
  }
22
19
  }
23
20
 
24
21
  ext {
25
22
  //dependency version
26
- moengageVersion = "11.6.02"
27
- basePluginVersion = "2.2.2"
23
+ moengageCoreVersion = "12.4.00"
24
+ moengageInAppVersion = "6.4.0"
25
+ basePluginVersion = "3.1.0"
28
26
  //build versions
29
- minimumVersion = 16
30
- targetVersion = 29
31
- compileVersion = 29
27
+ minimumVersion = 21
28
+ targetVersion = 31
29
+ compileVersion = 31
32
30
  }
33
31
 
34
32
  apply plugin: 'com.android.library'
@@ -66,9 +64,10 @@ dependencies {
66
64
  implementation fileTree(include: ['*.jar'], dir: 'libs')
67
65
 
68
66
  implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion")
69
-
70
- compileOnly ("com.moengage:moe-android-sdk:$moengageVersion")
67
+
68
+ compileOnly ("com.moengage:moe-android-sdk:$moengageCoreVersion")
71
69
  api("com.moengage:plugin-base:$basePluginVersion")
70
+ compileOnly("com.moengage:inapp:$moengageInAppVersion")
72
71
 
73
72
  compileOnly 'com.facebook.react:react-native:+'
74
73
 
@@ -1,6 +1,6 @@
1
- #Sun Jan 31 18:33:58 IST 2021
1
+ #Thu Aug 18 13:23:11 IST 2022
2
2
  distributionBase=GRADLE_USER_HOME
3
+ distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
3
4
  distributionPath=wrapper/dists
4
- zipStoreBase=GRADLE_USER_HOME
5
5
  zipStorePath=wrapper/dists
6
- distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
6
+ zipStoreBase=GRADLE_USER_HOME
@@ -1,2 +1 @@
1
- android.enableJetifier=true
2
1
  android.useAndroidX=true
@@ -3,9 +3,17 @@ package com.moengage.react
3
3
  import com.facebook.react.bridge.ReactContext
4
4
  import com.facebook.react.bridge.WritableMap
5
5
  import com.facebook.react.modules.core.DeviceEventManagerModule
6
+ import com.moengage.core.LogLevel
6
7
  import com.moengage.core.internal.logger.Logger
7
- import com.moengage.plugin.base.EventEmitter
8
- import com.moengage.plugin.base.model.*
8
+ import com.moengage.plugin.base.internal.EventEmitter
9
+ import com.moengage.plugin.base.internal.model.events.Event
10
+ import com.moengage.plugin.base.internal.model.events.EventType
11
+ import com.moengage.plugin.base.internal.model.events.inapp.InAppActionEvent
12
+ import com.moengage.plugin.base.internal.model.events.inapp.InAppLifecycleEvent
13
+ import com.moengage.plugin.base.internal.model.events.inapp.InAppSelfHandledEvent
14
+ import com.moengage.plugin.base.internal.model.events.push.PermissionEvent
15
+ import com.moengage.plugin.base.internal.model.events.push.PushClickedEvent
16
+ import com.moengage.plugin.base.internal.model.events.push.TokenEvent
9
17
 
10
18
 
11
19
  /**
@@ -17,35 +25,54 @@ class EventEmitterImpl(private val reactContext: ReactContext) : EventEmitter {
17
25
 
18
26
  override fun emit(event: Event) {
19
27
  try {
20
- Logger.v("$tag emit() : $event")
21
- when(event){
22
- is InAppEvent -> emitInAppEvent(event)
23
- is PushEvent -> emitPushEvent(event)
24
- is TokenEvent -> emitPushToken(event)
28
+ Logger.print { "$tag emit() : $event" }
29
+ when (event.eventType) {
30
+ EventType.PUSH_CLICKED -> emitPushClicked(event as PushClickedEvent)
31
+ EventType.PUSH_TOKEN_GENERATED -> emitPushToken(event as TokenEvent)
32
+ EventType.INAPP_CLOSED, EventType.INAPP_SHOWN -> emitInAppLifecycle(event as InAppLifecycleEvent)
33
+ EventType.INAPP_CUSTOM_ACTION, EventType.INAPP_NAVIGATION -> emitInAppAction(
34
+ event as InAppActionEvent
35
+ )
36
+ EventType.INAPP_SELF_HANDLED_AVAILABLE -> emitInAppSelfHandled(event as InAppSelfHandledEvent)
37
+ EventType.PERMISSION -> emitPermissionResult(event as PermissionEvent)
25
38
  }
26
- } catch (e: Exception) {
27
- Logger.e("$tag emit() : ", e)
39
+ } catch (t: Throwable) {
40
+ Logger.print(LogLevel.ERROR, t) { "$tag emit() : " }
28
41
  }
29
42
  }
30
43
 
31
- private fun emitInAppEvent(inAppEvent: InAppEvent){
32
- Logger.v("$tag emitInAppEvent() : Event $inAppEvent")
33
- val eventName = eventMapping[inAppEvent.eventType] ?: return
34
- val payload = PayloadGenerator().inAppCampaignToWriteableMap(inAppEvent.inAppCampaign)
44
+ private fun emitInAppAction(event: InAppActionEvent) {
45
+ Logger.print { "$tag emitInAppNavigation() : $event" }
46
+ val eventName = eventMapping[event.eventType] ?: return
47
+ val payload = PayloadGenerator().inAppNavigationToWriteableMap(event.clickData)
35
48
  emit(eventName, payload)
36
49
  }
37
50
 
38
- private fun emitPushEvent(pushEvent: PushEvent){
39
- Logger.v("$tag emitPushEvent() : Event $pushEvent")
40
- val eventName = eventMapping[pushEvent.eventType] ?: return
41
- val payload = PayloadGenerator().pushPayloadToWriteableMap(pushEvent.payload)
51
+ private fun emitInAppLifecycle(event: InAppLifecycleEvent) {
52
+ Logger.print { "$tag emitInAppLifecycle() : $event" }
53
+ val eventName = eventMapping[event.eventType] ?: return
54
+ val payload = PayloadGenerator().inAppDataToWriteableMap(event.inAppData)
55
+ emit(eventName, payload)
56
+ }
57
+
58
+ private fun emitInAppSelfHandled(event: InAppSelfHandledEvent) {
59
+ Logger.print { "$tag emitInAppSelfHandled() : $event" }
60
+ val eventName = eventMapping[event.eventType] ?: return
61
+ val payload = PayloadGenerator().selfHandledDataToWriteableMap(event.data)
62
+ emit(eventName, payload)
63
+ }
64
+
65
+ private fun emitPushClicked(event: PushClickedEvent) {
66
+ Logger.print { "$tag emitPushClicked() : $event" }
67
+ val eventName = eventMapping[event.eventType] ?: return
68
+ val payload = PayloadGenerator().pushPayloadToWriteableMap(event.payload)
42
69
  emit(eventName, payload)
43
70
  }
44
71
 
45
72
  private fun emitPushToken(tokenEvent: TokenEvent) {
46
- Logger.v("$tag emitPushToken() : Event $tokenEvent")
73
+ Logger.print { "$tag emitPushToken() : $tokenEvent" }
47
74
  val eventName = eventMapping[tokenEvent.eventType] ?: return
48
- val payload = PayloadGenerator().tokenToWriteableMap(tokenEvent.pushToken)
75
+ val payload = PayloadGenerator().tokenToWriteableMap(tokenEvent)
49
76
  emit(eventName, payload)
50
77
  }
51
78
 
@@ -53,10 +80,17 @@ class EventEmitterImpl(private val reactContext: ReactContext) : EventEmitter {
53
80
  try {
54
81
  reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
55
82
  .emit(eventName, params)
56
- } catch (e: Exception) {
57
- Logger.e("$tag emit() : ", e)
83
+ } catch (t: Throwable) {
84
+ Logger.print(LogLevel.ERROR, t) { "$tag emit() : " }
58
85
  }
59
86
  }
87
+
88
+ private fun emitPermissionResult(event: PermissionEvent) {
89
+ Logger.print { "$tag emitPermissionResult() : Event $event" }
90
+ val eventName = eventMapping[event.eventType] ?: return
91
+ val payload = PayloadGenerator().permissionResultToWriteableMap(event.result)
92
+ emit(eventName, payload)
93
+ }
60
94
  }
61
95
 
62
96
  val eventMapping = mapOf<EventType, String>(
@@ -66,5 +100,6 @@ val eventMapping = mapOf<EventType, String>(
66
100
  EventType.INAPP_CLOSED to "MoEInAppCampaignDismissed",
67
101
  EventType.INAPP_CUSTOM_ACTION to "MoEInAppCampaignCustomAction",
68
102
  EventType.INAPP_SELF_HANDLED_AVAILABLE to "MoEInAppCampaignSelfHandled",
69
- EventType.PUSH_TOKEN_GENERATED to "MoEPushTokenGenerated"
103
+ EventType.PUSH_TOKEN_GENERATED to "MoEPushTokenGenerated",
104
+ EventType.PERMISSION to "MoEPermissionResult"
70
105
  )
@@ -1,10 +1,12 @@
1
1
  package com.moengage.react
2
2
 
3
3
  import android.content.Context
4
+ import com.moengage.core.LogLevel
4
5
  import com.moengage.core.MoEngage
5
6
  import com.moengage.core.internal.logger.Logger
6
7
  import com.moengage.core.internal.model.IntegrationMeta
7
- import com.moengage.plugin.base.PluginInitializer.initialize
8
+ import com.moengage.core.model.SdkState
9
+ import com.moengage.plugin.base.internal.PluginInitializer
8
10
 
9
11
 
10
12
  /**
@@ -14,26 +16,55 @@ import com.moengage.plugin.base.PluginInitializer.initialize
14
16
  object MoEInitializer {
15
17
  private const val tag = "${MODULE_TAG}MoEInitializer"
16
18
 
19
+ @Deprecated(
20
+ "",
21
+ level = DeprecationLevel.WARNING,
22
+ replaceWith = ReplaceWith(
23
+ "initializeDefaultInstance(context, builder)",
24
+ "com.moengage.react.MoEInitializer.initializeDefaultInstance"
25
+ )
26
+ )
17
27
  fun initialize(context: Context, builder: MoEngage.Builder) {
28
+ initializeDefaultInstance(context, builder)
29
+ }
30
+
31
+ @Deprecated(
32
+ "",
33
+ level = DeprecationLevel.WARNING,
34
+ replaceWith = ReplaceWith(
35
+ "initializeDefaultInstance(context, builder, sdkState)",
36
+ "com.moengage.react.MoEInitializer.initializeDefaultInstance"
37
+ )
38
+ )
39
+ fun initialize(context: Context, builder: MoEngage.Builder, sdkState: SdkState) {
40
+ initializeDefaultInstance(context, builder, sdkState)
41
+ }
42
+
43
+ fun initializeDefaultInstance(context: Context, builder: MoEngage.Builder) {
18
44
  try {
19
- Logger.v("$tag initialize() : Will try to initialize the sdk.")
20
- initialize(context, builder, true)
21
- } catch (e: Exception) {
22
- Logger.e("$tag initialize() : ", e)
45
+ Logger.print { "$tag initialize() : Will try to initialize the sdk." }
46
+ PluginInitializer.initialize(
47
+ builder,
48
+ IntegrationMeta(INTEGRATION_TYPE, BuildConfig.MOENGAGE_REACT_LIBRARY_VERSION)
49
+ )
50
+ } catch (t: Throwable) {
51
+ Logger.print(LogLevel.ERROR, t) { "$tag initialize() : " }
23
52
  }
24
53
  }
25
54
 
26
- fun initialize(context: Context, builder: MoEngage.Builder, isSdkEnabled: Boolean) {
55
+ fun initializeDefaultInstance(context: Context, builder: MoEngage.Builder, sdkState: SdkState) {
27
56
  try {
28
- Logger.v("$tag initialize() : Initialising MoEngage SDK.")
29
- initialize(
30
- context, builder,
57
+ Logger.print { "$tag initialize() : Initialising MoEngage SDK." }
58
+ PluginInitializer.initialize(
59
+ builder,
31
60
  IntegrationMeta(INTEGRATION_TYPE, BuildConfig.MOENGAGE_REACT_LIBRARY_VERSION),
32
- isSdkEnabled
61
+ sdkState
33
62
  )
34
- Logger.v("$tag initialize() : Initialising MoEngage SDK.")
35
- } catch (e: Exception) {
36
- Logger.e("$tag initialize() : ", e)
63
+ Logger.print { "$tag initialize() : " }
64
+ } catch (t: Throwable) {
65
+ Logger.print(LogLevel.ERROR, t) { "$tag initialize() : " }
37
66
  }
38
67
  }
68
+
69
+
39
70
  }