@adobe/react-native-aepmessaging 5.0.0 → 6.0.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 (61) hide show
  1. package/.babelrc +1 -1
  2. package/RCTAEPMessaging.podspec +26 -8
  3. package/README.md +93 -10
  4. package/android/build.gradle +84 -22
  5. package/android/gradle.properties +5 -0
  6. package/android/src/main/AndroidManifest.xml +0 -2
  7. package/android/src/main/AndroidManifestNew.xml +2 -0
  8. package/android/src/main/java/com/adobe/marketing/mobile/reactnative/messaging/RCTAEPMessagingModule.java +215 -202
  9. package/android/src/main/java/com/adobe/marketing/mobile/reactnative/messaging/RCTAEPMessagingPackage.java +27 -25
  10. package/android/src/main/java/com/adobe/marketing/mobile/reactnative/messaging/RCTAEPMessagingUtil.java +134 -0
  11. package/dist/Messaging.d.ts +62 -0
  12. package/dist/Messaging.js +118 -0
  13. package/dist/Messaging.js.map +1 -0
  14. package/{js → dist}/index.d.ts +3 -1
  15. package/{js → dist}/index.js +4 -2
  16. package/dist/index.js.map +1 -0
  17. package/dist/models/Message.d.ts +39 -0
  18. package/dist/models/Message.js +64 -0
  19. package/dist/models/Message.js.map +1 -0
  20. package/dist/models/MessagingDelegate.d.ts +35 -0
  21. package/{js → dist}/models/MessagingDelegate.js +1 -1
  22. package/dist/models/MessagingDelegate.js.map +1 -0
  23. package/{js → dist}/models/MessagingEdgeEventType.d.ts +4 -4
  24. package/{js → dist}/models/MessagingEdgeEventType.js +5 -5
  25. package/dist/models/MessagingEdgeEventType.js.map +1 -0
  26. package/dist/models/MessagingProposition.d.ts +8 -0
  27. package/dist/models/MessagingProposition.js +24 -0
  28. package/dist/models/MessagingProposition.js.map +1 -0
  29. package/dist/models/MessagingPropositionItem.d.ts +8 -0
  30. package/dist/models/MessagingPropositionItem.js +14 -0
  31. package/dist/models/MessagingPropositionItem.js.map +1 -0
  32. package/ios/src/RCTAEPMessaging-Bridging-Header.h +15 -0
  33. package/ios/src/RCTAEPMessaging.mm +50 -0
  34. package/ios/src/RCTAEPMessaging.swift +266 -0
  35. package/ios/src/RCTAEPMessagingConstants.swift +22 -0
  36. package/ios/src/RCTAEPMessagingDataBridge.swift +47 -0
  37. package/package.json +6 -6
  38. package/src/Messaging.ts +164 -0
  39. package/{ts → src}/index.ts +11 -2
  40. package/src/models/Message.ts +72 -0
  41. package/src/models/MessagingDelegate.ts +53 -0
  42. package/{ts → src}/models/MessagingEdgeEventType.ts +5 -5
  43. package/src/models/MessagingProposition.ts +32 -0
  44. package/src/models/MessagingPropositionItem.ts +20 -0
  45. package/tsconfig.json +2 -2
  46. package/ios/RCTAEPMessaging.xcodeproj/project.pbxproj +0 -304
  47. package/ios/src/RCTAEPMessaging.h +0 -20
  48. package/ios/src/RCTAEPMessaging.m +0 -196
  49. package/js/Messaging.d.ts +0 -32
  50. package/js/Messaging.js +0 -80
  51. package/js/Messaging.js.map +0 -1
  52. package/js/index.js.map +0 -1
  53. package/js/models/Message.d.ts +0 -43
  54. package/js/models/Message.js +0 -80
  55. package/js/models/Message.js.map +0 -1
  56. package/js/models/MessagingDelegate.d.ts +0 -25
  57. package/js/models/MessagingDelegate.js.map +0 -1
  58. package/js/models/MessagingEdgeEventType.js.map +0 -1
  59. package/ts/Messaging.ts +0 -99
  60. package/ts/models/Message.ts +0 -82
  61. package/ts/models/MessagingDelegate.ts +0 -41
package/.babelrc CHANGED
@@ -2,7 +2,7 @@
2
2
  "presets": ["@babel/preset-typescript", "react-native"],
3
3
  "plugins": [
4
4
  ["module-resolver", {
5
- "root": [ "./ts/" ]
5
+ "root": [ "./src/" ]
6
6
  }]
7
7
  ]
8
8
  }
@@ -1,22 +1,40 @@
1
1
  require "json"
2
+
2
3
  package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+ folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
3
5
 
4
6
  Pod::Spec.new do |s|
5
7
  s.name = "RCTAEPMessaging"
6
8
  s.version = package["version"]
7
9
  s.summary = "Messaging library for Adobe Experience Platform Mobile SDK. Written and Supported by Adobe."
8
10
  s.author = "Adobe Experience Platform SDK Team"
9
-
10
11
  s.homepage = "https://github.com/adobe/aepsdk-react-native"
11
-
12
12
  s.license = "Apache 2.0 License"
13
- s.platform = :ios, '11.0'
14
-
13
+ s.platform = :ios, '12.0'
15
14
  s.source = { :git => "https://github.com/adobe/aepsdk-react-native.git", :tag => "#{s.version}" }
15
+ s.source_files = "ios/**/*.{h,m,mm,swift}"
16
+ s.swift_version = '5.1'
17
+
18
+ s.dependency "AEPMessaging", ">= 5.0.0", "< 6.0.0"
16
19
 
17
- s.source_files = "ios/**/*.{h,m}"
18
- s.requires_arc = true
20
+ if respond_to?(:install_modules_dependencies, true)
21
+ install_modules_dependencies(s)
22
+ else
23
+ s.dependency "React-Core"
19
24
 
20
- s.dependency "React"
21
- s.dependency "AEPMessaging", "~> 4.0"
25
+ # Don't install the dependencies when we run `pod install` in the old architecture.
26
+ if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
27
+ s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
28
+ s.pod_target_xcconfig = {
29
+ "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
30
+ "OTHER_CPLUSPLUSFLAGS" => "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1",
31
+ "CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
32
+ }
33
+ s.dependency "React-Codegen"
34
+ s.dependency "RCT-Folly"
35
+ s.dependency "RCTRequired"
36
+ s.dependency "RCTTypeSafety"
37
+ s.dependency "ReactCommon/turbomodule/core"
38
+ end
39
+ end
22
40
  end
package/README.md CHANGED
@@ -211,15 +211,7 @@ const messagingDelegate = {
211
211
  Messaging.setMessagingDelegate(messagingDelegate)
212
212
  ```
213
213
 
214
- ### saveMessage
215
214
 
216
- Natively caches the provided `Message` object in-memory. Cached `Message` objects can used at a later time to show the cached `Message` or perform other actions on the `Message` object. This function should be called from the `shouldShowMessage` function of the custom `MessagingDelegate`.
217
-
218
- **Syntax**
219
-
220
- ```javascript
221
- saveMessage(message: Message)
222
- ```
223
215
 
224
216
  **Example**
225
217
 
@@ -234,6 +226,90 @@ const messagingDelegate = {
234
226
  };
235
227
  ```
236
228
 
229
+ ### updatePropositionsForSurfaces
230
+
231
+ Dispatches an event to fetch propositions for the provided surfaces from remote.
232
+
233
+ **Syntax**
234
+
235
+ ```javascript
236
+ updatePropositionsForSurfaces(surfaces: string[])
237
+ ```
238
+
239
+ **Example**
240
+
241
+ ```javascript
242
+ Messaging.updatePropositionsForSurfaces(["mobileapp://my-surface"])
243
+ ```
244
+
245
+ ### getPropositionsForSurfaces
246
+
247
+ Retrieves the previously fetched (and cached) feeds content from the SDK for the provided surfaces. If the feeds content for one or more surfaces isn't previously cached in the SDK, it will not be retrieved from Adobe Journey Optimizer via the Experience Edge network.
248
+
249
+ **Syntax**
250
+
251
+ ```javascript
252
+ getPropositionsForSurfaces(surfaces: string[])
253
+ ```
254
+
255
+ **Example**
256
+
257
+ ```javascript
258
+ const propositions = Messaging.getPropositionsForSurfaces(["mobileapp://my-surface"])
259
+ console.log(propositions)
260
+ ```
261
+
262
+ ### getLatestMessage
263
+
264
+ Retrieves the most recently displayed message object
265
+
266
+ **Syntax**
267
+
268
+ ```javascript
269
+ Messaging.getLatestMessage()
270
+ ```
271
+
272
+ **Example**
273
+
274
+ ```javascript
275
+ const message = Messaging.getLatestMessage()
276
+ console.log(message.id)
277
+ ```
278
+
279
+ ### getCachedMessages
280
+
281
+ Retrieves a list of all messages that have been cached in-memory
282
+
283
+ **Syntax**
284
+
285
+ ```javascript
286
+ Messaging.getCachedMessages()
287
+ ```
288
+
289
+ **Example**
290
+
291
+ ```javascript
292
+ const messages = Messaging.getCachedMessages()
293
+ messages.forEach(message => message.clear())
294
+ ```
295
+
296
+ ### setMessageSettings
297
+
298
+ Allows setting a global setting for `shouldSaveMessage` and `shouldShowMessage`. Use a messaging delegate defined in the `setMessagingDelegate` method for more fine-grained control of message settings
299
+
300
+ **Syntax**
301
+
302
+ ```javascript
303
+ Messaging.setMessageSettings(shouldShowMessage: boolean, shouldSaveMessage: boolean)
304
+ ```
305
+
306
+ **Example**
307
+
308
+ ```javascript
309
+ Messaging.setMessageSettings(true, false)
310
+ ```
311
+
312
+
237
313
  ## Handling In App Messages using Message Object
238
314
 
239
315
  The `Message` object passed to the `MessagingDelegate` contains the following functions to handle a message:
@@ -340,7 +416,7 @@ var message: Message
340
416
  message.clear()
341
417
  ```
342
418
 
343
- ## Programatically control the display of in-app messages
419
+ ## Programmatically control the display of in-app messages
344
420
 
345
421
  App developers can now create a type `MessagingDelegate` in order to be alerted when specific events occur during the lifecycle of an in-app message.
346
422
 
@@ -354,7 +430,9 @@ type MessagingDelegate = {
354
430
 
355
431
  shouldShowMessage(message: Message): boolean,
356
432
 
357
- urlLoaded(url: string, message: Message): void,
433
+ urlLoaded(url: string, message: Message): void, // iOS Only
434
+
435
+ onContentLoaded(message: Message): void, // Android Only
358
436
  };
359
437
  ```
360
438
 
@@ -377,7 +455,12 @@ const messagingDelegate = {
377
455
  urlLoaded(url: string, message: Message) {
378
456
  // Action after message loads an URL
379
457
  },
458
+
459
+ onContentLoaded(message: Message) {
460
+ // Action after message loads content
461
+ },
380
462
  };
463
+
381
464
  ```
382
465
 
383
466
  ### Controlling when the message should be shown to the end user.
@@ -1,40 +1,102 @@
1
1
  buildscript {
2
- repositories {
3
- google()
4
- mavenCentral()
5
- }
2
+ // Buildscript is evaluated before everything else so we can't use getExtOrDefault
3
+ def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["ReactNativeMessaging_kotlinVersion"]
6
4
 
7
- dependencies {
8
- classpath 'com.android.tools.build:gradle:3.5.1'
9
- }
5
+ repositories {
6
+ google()
7
+ mavenCentral()
8
+ }
9
+
10
+ dependencies {
11
+ classpath "com.android.tools.build:gradle:7.2.1"
12
+ // noinspection DifferentKotlinGradleVersion
13
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
14
+ }
15
+ }
16
+
17
+ def isNewArchitectureEnabled() {
18
+ return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
19
+ }
20
+
21
+ apply plugin: "com.android.library"
22
+ apply plugin: "kotlin-android"
23
+
24
+
25
+ def appProject = rootProject.allprojects.find { it.plugins.hasPlugin('com.android.application') }
26
+
27
+ if (isNewArchitectureEnabled()) {
28
+ apply plugin: "com.facebook.react"
29
+ }
30
+
31
+ def getExtOrDefault(name) {
32
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["ReactNativeMessaging_" + name]
33
+ }
34
+
35
+ def getExtOrIntegerDefault(name) {
36
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["ReactNativeMessaging_" + name]).toInteger()
10
37
  }
11
38
 
12
- apply plugin: 'com.android.library'
39
+ def supportsNamespace() {
40
+ def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
41
+ def major = parsed[0].toInteger()
42
+ def minor = parsed[1].toInteger()
43
+
44
+ // Namespace support was added in 7.3.0
45
+ if (major == 7 && minor >= 3) {
46
+ return true
47
+ }
13
48
 
14
- def safeExtGet(prop, fallback) {
15
- rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
49
+ return major >= 8
16
50
  }
17
51
 
18
52
  android {
19
- compileSdkVersion safeExtGet('compileSdkVersion', 33)
53
+ if (supportsNamespace()) {
54
+ namespace "com.adobe.marketing.mobile.reactnative.messaging"
20
55
 
21
- defaultConfig {
22
- minSdkVersion safeExtGet('minSdkVersion', 19)
23
- targetSdkVersion safeExtGet('targetSdkVersion', 33)
24
- versionCode 1
25
- versionName "1.0"
56
+ sourceSets {
57
+ main {
58
+ manifest.srcFile "src/main/AndroidManifestNew.xml"
59
+ }
26
60
  }
27
- lintOptions {
28
- abortOnError false
61
+ }
62
+
63
+ compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
64
+
65
+ defaultConfig {
66
+ minSdkVersion getExtOrIntegerDefault("minSdkVersion")
67
+ targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
68
+
69
+ }
70
+
71
+ buildTypes {
72
+ release {
73
+ minifyEnabled false
29
74
  }
75
+ }
76
+
77
+ lintOptions {
78
+ disable "GradleCompatible"
79
+ }
80
+
81
+ compileOptions {
82
+ sourceCompatibility JavaVersion.VERSION_1_8
83
+ targetCompatibility JavaVersion.VERSION_1_8
84
+ }
30
85
  }
31
86
 
32
87
  repositories {
33
- google()
34
- mavenCentral()
88
+ mavenCentral()
89
+ google()
35
90
  }
36
91
 
92
+ def kotlin_version = getExtOrDefault("kotlinVersion")
93
+
37
94
  dependencies {
38
- api "com.adobe.marketing.mobile:messaging:[2.1.0, 3.0["
39
- implementation "com.facebook.react:react-native:+"
95
+ // For < 0.71, this will be from the local maven repo
96
+ // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
97
+ //noinspection GradleDynamicVersion
98
+ implementation "com.facebook.react:react-native:+"
99
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
100
+ api "com.adobe.marketing.mobile:messaging:3.+"
101
+ implementation "com.facebook.react:react-native:+"
40
102
  }
@@ -0,0 +1,5 @@
1
+ ReactNativeMessaging_kotlinVersion=1.7.0
2
+ ReactNativeMessaging_minSdkVersion=21
3
+ ReactNativeMessaging_targetSdkVersion=31
4
+ ReactNativeMessaging_compileSdkVersion=31
5
+ ReactNativeMessaging_ndkversion=21.4.7075529
@@ -1,6 +1,4 @@
1
1
 
2
2
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
3
  package="com.adobe.marketing.mobile.reactnative.messaging">
4
-
5
4
  </manifest>
6
-
@@ -0,0 +1,2 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.adobe.marketing.mobile.reactnative.messaging">
2
+ </manifest>