react-native-netmera 1.3.2 → 1.3.6

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 (141) hide show
  1. package/.idea/misc.xml +2 -1
  2. package/.idea/modules.xml +1 -1
  3. package/.idea/{netmera.iml → netmera-sdk-react-native.iml} +1 -1
  4. package/README.md +475 -17
  5. package/RNNetmera.podspec +4 -5
  6. package/android/.gradle/4.10.1/fileHashes/fileHashes.bin +0 -0
  7. package/android/.gradle/4.10.1/fileHashes/fileHashes.lock +0 -0
  8. package/android/.idea/gradle.xml +2 -0
  9. package/android/.idea/misc.xml +1 -1
  10. package/android/{android.iml → .idea/modules/android.iml} +5 -3
  11. package/android/.idea/modules.xml +1 -1
  12. package/android/.idea/vcs.xml +6 -0
  13. package/android/build/.transforms/07da1e78aa5e2a23e865850e1fa31195/classes/classes.dex +0 -0
  14. package/android/build/.transforms/07da1e78aa5e2a23e865850e1fa31195.bin +1 -0
  15. package/android/build/.transforms/1cc655d17744898d5287444bc3b54ccd/classes/classes.dex +0 -0
  16. package/android/build/.transforms/1cc655d17744898d5287444bc3b54ccd.bin +1 -0
  17. package/android/build/.transforms/1d7e2a596c5a01e1599ed8d99d8fed25/classes/classes.dex +0 -0
  18. package/android/build/.transforms/1d7e2a596c5a01e1599ed8d99d8fed25.bin +1 -0
  19. package/android/build/.transforms/61070ab087fd3e8aaad4987d1cd9aeb2/classes/classes.dex +0 -0
  20. package/android/build/.transforms/61070ab087fd3e8aaad4987d1cd9aeb2.bin +1 -0
  21. package/android/build/.transforms/6bd284ae922673d08694a1221c01809c/classes/classes.dex +0 -0
  22. package/android/build/.transforms/6bd284ae922673d08694a1221c01809c.bin +1 -0
  23. package/android/build/.transforms/a8f21d984467d686c5d11cdc3f508ab2/classes/classes.dex +0 -0
  24. package/android/build/.transforms/a8f21d984467d686c5d11cdc3f508ab2.bin +1 -0
  25. package/android/build/.transforms/ae3b3ad311ea4fe5b0c3652f1d5b8a07/classes/classes.dex +0 -0
  26. package/android/build/.transforms/ae3b3ad311ea4fe5b0c3652f1d5b8a07.bin +1 -0
  27. package/android/build/.transforms/cc45f1af54894b49e3ec8f6b5a05a8d7/classes/classes.dex +0 -0
  28. package/android/build/.transforms/cc45f1af54894b49e3ec8f6b5a05a8d7.bin +1 -0
  29. package/android/build/.transforms/f58e3ec11746c18253c1a7a566c2609f/classes/classes.dex +0 -0
  30. package/android/build/.transforms/f58e3ec11746c18253c1a7a566c2609f.bin +1 -0
  31. package/android/build/generated/source/buildConfig/debug/com/{reactlibrary → netmera/reactnativesdk}/BuildConfig.java +2 -3
  32. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +15 -0
  33. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output.json +27 -0
  34. package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
  35. package/android/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/R.jar +0 -0
  36. package/android/build/intermediates/compile_symbol_list/debug/R.txt +3524 -0
  37. package/android/build/intermediates/incremental/{debug-mergeJniLibs → debug-mergeNativeLibs}/merge-state +0 -0
  38. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +1 -1
  39. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +1 -1
  40. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +1 -1
  41. package/android/build/intermediates/incremental/packageDebugResources/compile-file-map.properties +1 -1
  42. package/android/build/intermediates/incremental/packageDebugResources/merger.xml +1 -1
  43. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/BuildConfig.class +0 -0
  44. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmera.class +0 -0
  45. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmeraCategoryObject.class +0 -0
  46. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmeraConfiguration$1.class +0 -0
  47. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmeraConfiguration$Builder.class +0 -0
  48. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmeraConfiguration.class +0 -0
  49. package/android/build/intermediates/javac/debug/{compileDebugJavaWithJavac/classes/com/reactlibrary → classes/com/netmera/reactnativesdk}/RNNetmeraEvent.class +0 -0
  50. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmeraModule$1.class +0 -0
  51. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmeraModule$2.class +0 -0
  52. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmeraModule$3.class +0 -0
  53. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmeraModule$4.class +0 -0
  54. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmeraModule$5.class +0 -0
  55. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmeraModule$6.class +0 -0
  56. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmeraModule$7.class +0 -0
  57. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmeraModule.class +0 -0
  58. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmeraPackage.class +0 -0
  59. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmeraPushBroadcastReceiver.class +0 -0
  60. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmeraPushHeadlessService.class +0 -0
  61. package/android/build/intermediates/javac/debug/{compileDebugJavaWithJavac/classes/com/reactlibrary → classes/com/netmera/reactnativesdk}/RNNetmeraUser.class +0 -0
  62. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmeraUtil$1.class +0 -0
  63. package/android/build/intermediates/javac/debug/classes/com/netmera/reactnativesdk/RNNetmeraUtil.class +0 -0
  64. package/android/build/intermediates/library_manifest/debug/AndroidManifest.xml +6 -2
  65. package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +2 -0
  66. package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +20 -0
  67. package/android/build/intermediates/merged_manifests/debug/output.json +27 -1
  68. package/android/build/intermediates/navigation_json/debug/navigation.json +1 -0
  69. package/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar +0 -0
  70. package/android/build/intermediates/{res/symbol-table-with-package → symbol_list_with_package_name}/debug/package-aware-r.txt +756 -32
  71. package/android/build/outputs/logs/manifest-merger-debug-report.txt +34 -28
  72. package/android/build.gradle +4 -4
  73. package/android/local.properties +2 -2
  74. package/android/src/main/AndroidManifest.xml +1 -1
  75. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmera.java +26 -0
  76. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraCategoryObject.java +56 -0
  77. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraConfiguration.java +128 -0
  78. package/android/src/main/java/com/{reactlibrary → netmera/reactnativesdk}/RNNetmeraEvent.java +1 -1
  79. package/android/src/main/java/com/{reactlibrary → netmera/reactnativesdk}/RNNetmeraModule.java +168 -31
  80. package/android/src/main/java/com/{reactlibrary → netmera/reactnativesdk}/RNNetmeraPackage.java +1 -1
  81. package/android/src/main/java/com/{reactlibrary → netmera/reactnativesdk}/RNNetmeraPushBroadcastReceiver.java +19 -41
  82. package/android/src/main/java/com/{reactlibrary → netmera/reactnativesdk}/RNNetmeraPushHeadlessService.java +1 -1
  83. package/android/src/main/java/com/{reactlibrary → netmera/reactnativesdk}/RNNetmeraUser.java +1 -1
  84. package/android/src/main/java/com/{reactlibrary → netmera/reactnativesdk}/RNNetmeraUtil.java +69 -69
  85. package/index.js +127 -36
  86. package/ios/RNNetmera.h +6 -0
  87. package/ios/RNNetmera.m +220 -92
  88. package/ios/RNNetmera.xcodeproj/project.pbxproj +35 -3
  89. package/ios/RNNetmera.xcodeproj/xcshareddata/xcschemes/RNNetmera.xcscheme +67 -0
  90. package/ios/RNNetmera.xcodeproj/xcuserdata/{huseyin.xcuserdatad → ensarbayhan.xcuserdatad}/xcschemes/xcschememanagement.plist +1 -1
  91. package/ios/RNNetmeraCategoryObject.h +16 -0
  92. package/ios/RNNetmeraCategoryObject.m +59 -0
  93. package/ios/RNNetmeraEvent.h +1 -1
  94. package/ios/RNNetmeraEvent.m +5 -1
  95. package/ios/RNNetmeraRCTEventEmitter.h +4 -3
  96. package/ios/RNNetmeraRCTEventEmitter.m +9 -5
  97. package/ios/RNNetmeraUser.h +1 -1
  98. package/ios/RNNetmeraUtils.h +1 -1
  99. package/ios/RNNetmeraUtils.m +45 -14
  100. package/package.json +1 -1
  101. package/.idea/encodings.xml +0 -4
  102. package/.idea/workspace.xml +0 -188
  103. package/android/.gradle/5.0/fileChanges/last-build.bin +0 -0
  104. package/android/.gradle/5.0/fileHashes/fileHashes.bin +0 -0
  105. package/android/.gradle/5.0/fileHashes/fileHashes.lock +0 -0
  106. package/android/.gradle/5.0/gc.properties +0 -0
  107. package/android/.idea/codeStyles/Project.xml +0 -29
  108. package/android/.idea/runConfigurations.xml +0 -12
  109. package/android/.idea/workspace.xml +0 -221
  110. package/android/build/generated/source/buildConfig/androidTest/debug/com/reactlibrary/test/BuildConfig.java +0 -13
  111. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +0 -11
  112. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output.json +0 -1
  113. package/android/build/intermediates/aapt_fr/304/261endly_merged_man/304/261fests/debug/aapt/AndroidManifest.xml +0 -11
  114. package/android/build/intermediates/aapt_fr/304/261endly_merged_man/304/261fests/debug/aapt/output.json +0 -1
  115. package/android/build/intermediates/annotat/304/261on_processor_l/304/261st/debug/annotationProcessors.json +0 -1
  116. package/android/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  117. package/android/build/intermediates/comp/304/261le_l/304/261brary_classes/debug/classes.jar +0 -0
  118. package/android/build/intermediates/comp/304/261le_only_not_namespaced_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  119. package/android/build/intermediates/intermediate-jars/debug/classes.jar +0 -0
  120. package/android/build/intermediates/intermediate-jars/debug/res.jar +0 -0
  121. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/BuildConfig.class +0 -0
  122. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNNetmeraModule$1.class +0 -0
  123. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNNetmeraModule$2.class +0 -0
  124. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNNetmeraModule$3.class +0 -0
  125. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNNetmeraModule.class +0 -0
  126. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNNetmeraPackage.class +0 -0
  127. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNNetmeraPushBroadcastReceiver.class +0 -0
  128. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNNetmeraUtil$1.class +0 -0
  129. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNNetmeraUtil.class +0 -0
  130. package/android/build/intermediates/l/304/261brary_java_res/debug/res.jar +0 -0
  131. package/android/build/intermediates/l/304/261brary_man/304/261fest/debug/AndroidManifest.xml +0 -11
  132. package/android/build/intermediates/merged_manifests/debugAndroidTest/AndroidManifest.xml +0 -225
  133. package/android/build/intermediates/merged_manifests/debugAndroidTest/output.json +0 -1
  134. package/android/build/intermediates/merged_man/304/261fests/debug/output.json +0 -1
  135. package/android/build/intermediates/runt/304/261me_l/304/261brary_classes/debug/classes.jar +0 -0
  136. package/android/build/intermediates/symbols/debug/R.txt +0 -1943
  137. package/android/build/intermediates/transforms/mergeJniLibs/debug/__content__.json +0 -1
  138. package/android/react-native-netmera.iml +0 -277
  139. package/ios/RNNetmera.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  140. package/ios/RNNetmera.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  141. package/ios/RNNetmera.xcodeproj/project.xcworkspace/xcuserdata/huseyin.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
package/.idea/misc.xml CHANGED
@@ -1,6 +1,7 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <project version="4">
3
3
  <component name="JavaScriptSettings">
4
- <option name="languageLevel" value="JSX" />
4
+ <option name="languageLevel" value="FLOW" />
5
5
  </component>
6
+ <component name="ReactNativePackager" nodePath="project" reactNativePackagePath="/usr/local/lib/node_modules/react-native-cli" workingDirectory="$PROJECT_DIR$/example" />
6
7
  </project>
package/.idea/modules.xml CHANGED
@@ -2,7 +2,7 @@
2
2
  <project version="4">
3
3
  <component name="ProjectModuleManager">
4
4
  <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/netmera.iml" filepath="$PROJECT_DIR$/.idea/netmera.iml" />
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/netmera-sdk-react-native.iml" filepath="$PROJECT_DIR$/.idea/netmera-sdk-react-native.iml" />
6
6
  </modules>
7
7
  </component>
8
8
  </project>
@@ -2,8 +2,8 @@
2
2
  <module type="WEB_MODULE" version="4">
3
3
  <component name="NewModuleRootManager">
4
4
  <content url="file://$MODULE_DIR$">
5
- <excludeFolder url="file://$MODULE_DIR$/.tmp" />
6
5
  <excludeFolder url="file://$MODULE_DIR$/temp" />
6
+ <excludeFolder url="file://$MODULE_DIR$/.tmp" />
7
7
  <excludeFolder url="file://$MODULE_DIR$/tmp" />
8
8
  </content>
9
9
  <orderEntry type="inheritedJdk" />
package/README.md CHANGED
@@ -1,7 +1,10 @@
1
+ # Netmera React Native SDK
2
+
3
+ NETMERA is a Mobile Application Engagement Platform. We offer a series of development tools and app communication features to help your mobile business ignite and soar.
4
+
5
+ ## Installation
1
6
 
2
- # react-native-netmera
3
7
 
4
- ## Getting started
5
8
 
6
9
  `$ npm install react-native-netmera --save`
7
10
 
@@ -17,28 +20,483 @@
17
20
  1. In XCode, in the project navigator, right click `Libraries` ➜ `Add Files to [your project's name]`
18
21
  2. Go to `node_modules` ➜ `react-native-netmera` and add `RNNetmera.xcodeproj`
19
22
  3. In XCode, in the project navigator, select your project. Add `libRNNetmera.a` to your project's `Build Phases` ➜ `Link Binary With Libraries`
20
- 4. Run your project (`Cmd+R`)<
23
+ 4. Run your project (`Cmd+R`)
21
24
 
22
25
  #### Android
23
26
 
24
27
  1. Open up `android/app/src/main/java/[...]/MainActivity.java`
25
- - Add `import com.reactlibrary.RNNetmeraPackage;` to the imports at the top of the file
26
- - Add `new RNNetmeraPackage()` to the list returned by the `getPackages()` method
28
+ - Add `import com.netmera.reactnativesdk.RNNetmeraPackage;` to the imports at the top of the file
29
+ - Add `new RNNetmeraPackage()` to the list returned by the `getPackages()` method
27
30
  2. Append the following lines to `android/settings.gradle`:
28
- ```
29
- include ':react-native-netmera'
30
- project(':react-native-netmera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-netmera/android')
31
- ```
31
+ ```
32
+ include ':react-native-netmera'
33
+ project(':react-native-netmera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-netmera/android')
34
+ ```
32
35
  3. Insert the following lines inside the dependencies block in `android/app/build.gradle`:
33
- ```
34
- compile project(':react-native-netmera')
35
- ```
36
+ ```
37
+ compile project(':react-native-netmera')
38
+ ```
39
+
40
+ For both native sides(Android & iOS) you don't have to include extra Netmera SDK libraries.
41
+
42
+ ### Setup - Android Part
43
+
44
+ 1) Create and register your app in [Firebase console](https://firebase.google.com/).
45
+
46
+ 2) Download `google-services.json` file and place it into android/app/ folder.
47
+
48
+ 3) In your project's build gradle file, add the following dependency.
49
+
50
+ ```
51
+ buildscript {
52
+ repositories {
53
+ google()
54
+ jcenter()
55
+ maven {url 'http://developer.huawei.com/repo/'}
56
+ }
57
+
58
+ dependencies {
59
+ classpath 'com.android.tools.build:gradle:4.1.3'
60
+ classpath 'com.google.gms:google-services:4.3.5'
61
+ classpath 'com.huawei.agconnect:agcp:1.4.2.300'
62
+ }
63
+ }
64
+
65
+ allprojects {
66
+ repositories {
67
+ google()
68
+ jcenter()
69
+ maven { url 'https://maven.google.com'}
70
+ maven {url 'http://developer.huawei.com/repo/'}
71
+ }
72
+ }
73
+ ```
74
+
75
+ 4) In your app's build gradle file, add the following dependency.
76
+
77
+ ```
78
+
79
+ dependencies {
80
+
81
+ implementation 'androidx.core:core:1.1.0'
82
+
83
+ }
84
+ ```
85
+
86
+ 5) Add the following into the bottom of app's buid.gradle file
87
+
88
+ ```
89
+ apply plugin: 'com.google.gms.google-services'
90
+ ```
91
+
92
+ 6) Create an application class as shown below.
93
+
94
+ - Initialize Netmera SDK in your Application class.
95
+
96
+ ```
97
+ public class MainApplication extends Application {
98
+
99
+ @Override
100
+ public void onCreate() {
101
+ super.onCreate();
102
+ RNNetmeraConfiguration netmeraConfiguration = new RNNetmeraConfiguration.Builder()
103
+ .firebaseSenderId(<YOUR GCM SENDER ID>)
104
+ .apiKey(<YOUR NETMERA API KEY>) // This is for enabling Netmera logs.
105
+ .logging(true)
106
+ .build(this);
107
+ RNNetmera.initNetmera(netmeraConfiguration);
108
+ }
109
+ }
110
+ ```
111
+
112
+ 7) Create a new `NetmeraPushHeadlessTask.js` inside your React Native project.
36
113
 
37
- ## Usage
38
- ```javascript
39
- import {Netmera} from 'react-native-netmera';
114
+ ```
115
+ export const onPushRegister = async (message) => {
116
+ console.log("onPushRegister: ", message);
117
+ };
118
+
119
+ export const onPushReceive = async (message) => {
120
+ console.log("onPushReceive: ", message);
121
+ };
122
+
123
+ export const onPushOpen = async (message) => {
124
+ console.log("onPushOpen: ", message);
125
+ };
126
+
127
+ export const onPushDismiss = async (message) => {
128
+ console.log("onPushDismiss: ", message);
129
+ };
130
+
131
+ export const onPushButtonClicked = async (message) => {
132
+ console.log("onPushButtonClicked: ", message);
133
+ };
134
+ ```
135
+
136
+ 8) Init `NetmeraBroadcastReceiver` inside your `index.js` file.
137
+
138
+ ```
139
+ import { onPushButtonClicked,
140
+ onPushDismiss,
141
+ onPushOpen,
142
+ onPushReceive,
143
+ onPushRegister
144
+ } from "./NetmeraPushHeadlessTask";
145
+
146
+ Netmera.initBroadcastReceiver(
147
+ onPushRegister,
148
+ onPushReceive,
149
+ onPushOpen,
150
+ onPushDismiss,
151
+ onPushButtonClicked
152
+ )
153
+
154
+ // This should be called after Netmera.initBroadcastReceiver method.
155
+ AppRegistry.registerComponent(appName, () => App);
156
+ ```
157
+
158
+ ### Setup - iOS Part
159
+
160
+ 1) Navigate to ios folder in your terminal and run the following command.
40
161
 
41
- // TODO: What to do with the module?
42
- Netmera;
43
162
  ```
163
+ $ pod install
164
+ ```
165
+
166
+ 2) If you want to use Android alike message sending from iOS to react native please consider shaping your AppDelegate class as following.
167
+
168
+ ```
169
+ #import "AppDelegate.h"
170
+
171
+ #import <React/RCTBridge.h>
172
+ #import <React/RCTBundleURLProvider.h>
173
+ #import <React/RCTRootView.h>
174
+ #import <RNNetmera/RNNetmeraRCTEventEmitter.h>
175
+ #import <RNNetmera/RNNetmeraUtils.h>
176
+ #import <RNNetmera/RNNetmera.h>
177
+
178
+ @implementation AppDelegate
179
+
180
+ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
181
+ {
182
+
183
+ [UNUserNotificationCenter currentNotificationCenter].delegate = self;
184
+
185
+ RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
186
+ RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
187
+ moduleName:@"example"
188
+ initialProperties:nil];
189
+
190
+ rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
191
+
192
+ self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
193
+ UIViewController *rootViewController = [UIViewController new];
194
+ rootViewController.view = rootView;
195
+ self.window.rootViewController = rootViewController;
196
+ [self.window makeKeyAndVisible];
197
+
198
+ [RNNetmera logging: YES];
199
+ [RNNetmera initNetmera:@"<apiKey>"];
200
+ [RNNetmera requestPushNotificationAuthorization];
201
+ [RNNetmera setPushDelegate:self];
202
+ return YES;
203
+ }
204
+
205
+ - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
206
+ {
207
+ #if DEBUG
208
+ return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
209
+ #else
210
+ return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
211
+ #endif
212
+ }
213
+
214
+ // MARK: Push Delegate Methods
215
+
216
+ // Take push payload for Push clicked:
217
+ -(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler
218
+ {
219
+ if ([response.actionIdentifier isEqual:UNNotificationDismissActionIdentifier]) {
220
+ [RNNetmeraRCTEventEmitter onPushDismiss: @{@"userInfo" : response.notification.request.content.userInfo}];
221
+ } else if ([response.actionIdentifier isEqual:UNNotificationDefaultActionIdentifier]) {
222
+ [RNNetmeraRCTEventEmitter onPushOpen: @{@"userInfo" : response.notification.request.content.userInfo}];
223
+ }
224
+ completionHandler();
225
+ }
226
+
227
+ // Take push payload for push Received on application foreground:
228
+ -(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
229
+ {
230
+ completionHandler(UNNotificationPresentationOptionAlert);
231
+ [RNNetmeraRCTEventEmitter onPushReceive: @{@"userInfo" : notification.request.content.userInfo}];
232
+ }
233
+
234
+ - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
235
+ {
236
+ if(deviceToken == nil) {
237
+ return;
238
+ }
239
+ [RNNetmeraRCTEventEmitter onPushRegister: @{@"pushToken" : deviceToken}];
240
+ }
241
+
242
+ @end
243
+
244
+ ```
245
+ For example if you trigger `[RNNetmeraRCTEventEmitter onPushReceive: @{@"userInfo" : notification.request.content.userInfo}]` from AppDelegate, in the react native part the following method will be triggered.
246
+ ```
247
+ export const onPushReceive = async (message) => {
248
+ console.log("onPushReceive: ", message);
249
+ };
250
+ ```
251
+ Please take a look at `Setup-Android part 7`
252
+
253
+
254
+ ### Calling React Native methods
255
+
256
+ ##### Update User Example
257
+
258
+ ```
259
+ updateUser() {
260
+ const user = new NetmeraUser();
261
+ user.userId = <userId>;
262
+ user.name = <name>;
263
+ user.surname = <surname>;
264
+ user.msisdn = <msisdn>;
265
+ user.gender = <gender>;
266
+ Netmera.updateUser(user)
267
+ }
268
+ ```
269
+
270
+ ##### Sending Event Examples
271
+
272
+ ```
273
+ void sendLoginEvent() {
274
+ const loginEvent = new LoginEvent();
275
+ loginEvent.setUserId(<userId>);
276
+ Netmera.sendEvent(loginEvent)
277
+ }
278
+
279
+ void sendRegisterEvent() {
280
+ const registerEvent = new RegisterEvent();
281
+ Netmera.sendEvent(registerEvent)
282
+ }
283
+
284
+ void sendViewCartEvent() {
285
+ const viewCartEvent = new ViewCartEvent();
286
+ viewCartEvent.subTotal = <subTotal>;
287
+ viewCartEvent.itemCount = <itemCount>;
288
+ Netmera.sendEvent(viewCartEvent)
289
+ }
290
+
291
+ void purchaseEvent() {
292
+ const netmeraLineItem = new NetmeraLineItem();
293
+ netmeraLineItem.setBrandId(<brandId>);
294
+ netmeraLineItem.setBrandName(<brandName>);
295
+ netmeraLineItem.setCampaignId(<campaignId>);
296
+ netmeraLineItem.setCategoryIds(<categoryIds>);
297
+ netmeraLineItem.setCategoryNames(<categoryNames>);
298
+ netmeraLineItem.setKeywords(<keywords>);
299
+ netmeraLineItem.setCount(<count>);
300
+ netmeraLineItem.setId(<id>);
301
+ netmeraLineItem.setPrice(<price>);
302
+
303
+ const purchaseEvent = new CustomPurchaseEvent();
304
+ purchaseEvent.coupon = <coupon>;
305
+ purchaseEvent.discount = <discount>;
306
+ purchaseEvent.grandTotal = <grandTotal>;
307
+ purchaseEvent.itemCount = <itemCount>;
308
+ purchaseEvent.paymentMethod = <paymentMethod>;
309
+ purchaseEvent.subTotal = <subTotal>;
310
+ purchaseEvent.shippingCost = <shippingCost>;
311
+ purchaseEvent.purchaseLineItemEvent = [netmeraLineItem, netmeraLineItem];
312
+ purchaseEvent.userName = <userName>;
313
+ Netmera.sendEvent(purchaseEvent)
314
+ }
315
+ ```
316
+ ##### Netmera Inbox Examples
317
+
318
+ ```
319
+ constructor() {
320
+ super();
321
+ this.state = {
322
+ inbox: [],
323
+ inboxState: Netmera.PUSH_OBJECT_STATUS_ALL,
324
+ countForStatus: 0
325
+ }
326
+ }
327
+
328
+ fetchInbox = async () => {
329
+ try {
330
+ const netmeraInboxFilter = new NetmeraInboxFilter();
331
+ netmeraInboxFilter.status = this.state.inboxState;
332
+ netmeraInboxFilter.pageSize = 2;
333
+ const inbox = await Netmera.fetchInbox(netmeraInboxFilter);
334
+ console.log("inbox", inbox);
335
+ this.setState({inbox: inbox});
336
+ } catch (e) {
337
+ console.log("error", e)
338
+ }
339
+ };
340
+
341
+ fetchNextPage = async () => {
342
+ try {
343
+ const inbox = await Netmera.fetchNextPage();
344
+ this.setState({inbox: inbox});
345
+ console.log("inbox", inbox)
346
+ } catch (e) {
347
+ console.log("error", e)
348
+ }
349
+ };
350
+
351
+ updateAll = async () => {
352
+ if (!this.state.inbox !== undefined) {
353
+ let updateStatus = this.state.inboxState;
354
+ if (updateStatus === Netmera.PUSH_OBJECT_STATUS_ALL) {
355
+ Alert.alert("Error", "Please select different status than all!!")
356
+ console.log("Please select different status than all!!");
357
+ return;
358
+ }
359
+
360
+ try {
361
+ Netmera.updateAll(this.state.inboxState).then(() => {
362
+ this.fetchInbox();
363
+ }).catch((error) => {
364
+ console.log("error: " + error)
365
+ })
366
+ } catch (error) {
367
+ console.log("error: " + error)
368
+ }
369
+ }
370
+ };
371
+
372
+ handlePushObject = async () => {
373
+ if (this.state.inbox !== undefined && this.state.inbox.length > 0) {
374
+ Netmera.handlePushObject(this.state.inbox[0].pushId)
375
+ }
376
+ };
377
+
378
+ handleInteractiveAction = async () => {
379
+ if (this.state.inbox !== undefined && this.state.inbox.length > 0) {
380
+ for (let i = 0; i < this.state.inbox.length; i++) {
381
+ const element = this.state.inbox[i];
382
+ if (element.interactiveActions !== undefined && element.interactiveActions.length > 0) {
383
+ const action = JSON.parse(element.interactiveActions)[0]
384
+ Netmera.handleInteractiveAction(action.id);
385
+ return;
386
+ }
387
+ }
388
+ }
389
+ };
390
+
391
+ countForStatus = async () => {
392
+ try {
393
+ const count = await Netmera.countForStatus(this.state.inboxState);
394
+ this.setState({countForStatus: count})
395
+ } catch (error) {
396
+ console.log("error: " + error)
397
+ }
398
+ };
399
+
400
+ inboxUpdateStatus = async () => {
401
+ if (this.state.inboxState === Netmera.PUSH_OBJECT_STATUS_ALL) {
402
+ Alert.alert("Error", "Please select different status than all!!")
403
+ console.log("Please select different status than all!!");
404
+ return;
405
+ }
406
+ if (this.state.inbox === undefined || this.state.inbox < 2) {
407
+ Alert.alert("Error", "Push objects count is less then 2!")
408
+ console.log("Push objects count is less then 2!");
409
+ return;
410
+ }
411
+ Netmera.inboxUpdateStatus(0, 2, this.state.inboxState).then(() => {
412
+ console.log("2 push object status was changed successfully.")
413
+ }).catch((error) => {
414
+ console.log("error: " + error)
415
+ });
416
+ };
417
+
418
+ updateInboxState = (value) => {
419
+ this.setState({inboxState: value})
420
+ };
421
+
422
+ ```
423
+
424
+ ##### Netmera Inbox Category Examples
425
+
426
+ ```
427
+ constructor() {
428
+ super();
429
+ this.state = {
430
+ categories: [],
431
+ categoryState: Netmera.PUSH_OBJECT_STATUS_ALL,
432
+ }
433
+ }
434
+
435
+ fetchCategory = async () => {
436
+ try {
437
+ const netmeraCategoryFilter = new NetmeraCategoryFilter();
438
+ netmeraCategoryFilter.status = this.state.categoryState;
439
+ netmeraCategoryFilter.pageSize = 1;
440
+ const categories = await Netmera.fetchCategory(netmeraCategoryFilter);
441
+ console.log("categories", categories);
442
+ this.setState({categories: categories});
443
+ } catch (e) {
444
+ console.log("error", e)
445
+ }
446
+ };
447
+
448
+ fetchNextCategoryPage = async () => {
449
+ try {
450
+ const categories = await Netmera.fetchNextCategoryPage();
451
+ this.setState({categories: categories});
452
+ console.log("categories", categories)
453
+ } catch (e) {
454
+ console.log("error", e)
455
+ }
456
+ };
457
+
458
+ handlePushObject = async () => {
459
+ if (this.state.categories !== undefined && this.state.categories.length > 0) {
460
+ Netmera.handleLastMessage(this.state.categories[0].categoryName)
461
+ }
462
+ };
463
+
464
+ updateStatusCategories = async () => {
465
+ if (this.state.categoryState === Netmera.PUSH_OBJECT_STATUS_ALL) {
466
+ Alert.alert("Error", "Please select different status than all!!")
467
+ console.log("Please select different status than all!!");
468
+ return;
469
+ }
470
+ if (this.state.categories === undefined || this.state.categories < 1) {
471
+ Alert.alert("Error", "Category object not found!")
472
+ console.log("Category object not found!");
473
+ return;
474
+ }
475
+
476
+ const count = this.state.categories.length < 3 ? this.state.categories.length : 2;
477
+
478
+ Netmera.updateStatusByCategories(0, count, this.state.categoryState).then(() => {
479
+ console.log("Category object status was changed successfully.")
480
+ }).catch((error) => {
481
+ console.log("error: " + error)
482
+ });
483
+ };
484
+
485
+ updateCategoryState = (value) => {
486
+ this.setState({categoryState: value})
487
+ };
488
+ ```
489
+
490
+ ##### Netmera Getting ExternalId (if exists before)
491
+
492
+ ```
493
+ Netmera.currentExternalId()
494
+ ```
495
+
496
+
497
+ For detailed information please explore example folder in the Netmera sdk library.
498
+
499
+
500
+
501
+
44
502
 
package/RNNetmera.podspec CHANGED
@@ -8,16 +8,15 @@ Pod::Spec.new do |s|
8
8
  DESC
9
9
  s.homepage = "https://github.com/author/RNNetmera.git"
10
10
  s.license = "MIT"
11
- # s.license = { :type => "MIT", :file => "FILE_LICENSE" }
12
- s.author = { "author" => "author@domain.cn" }
11
+ # s.license = { :type => "MIT", :file => "FILE_LICENSE" }
12
+ s.author = { "author" => "author@domain.cn" }
13
13
  s.platform = :ios, "8.0"
14
14
  s.source = { :git => "https://github.com/author/RNNetmera.git", :tag => "master" }
15
- s.source_files = "ios/*.{h,m}"
15
+ s.source_files = "ios/*.{h,m}"
16
16
  s.requires_arc = true
17
17
 
18
18
  s.dependency 'React'
19
- s.dependency 'Netmera'
20
-
19
+ s.dependency 'Netmera','3.14.1'
21
20
  end
22
21
 
23
22
 
@@ -1,8 +1,10 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <project version="4">
3
+ <component name="GradleMigrationSettings" migrationVersion="1" />
3
4
  <component name="GradleSettings">
4
5
  <option name="linkedExternalProjectsSettings">
5
6
  <GradleProjectSettings>
7
+ <option name="testRunner" value="GRADLE" />
6
8
  <option name="distributionType" value="DEFAULT_WRAPPED" />
7
9
  <option name="externalProjectPath" value="$PROJECT_DIR$" />
8
10
  <option name="resolveModulePerSourceSet" value="false" />
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <project version="4">
3
- <component name="ProjectRootManager">
3
+ <component name="ProjectRootManager" version="2" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
4
4
  <output url="file://$PROJECT_DIR$/build/classes" />
5
5
  </component>
6
6
  <component name="ProjectType">
@@ -1,16 +1,18 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <module external.system.id="GRADLE" type="JAVA_MODULE" version="4">
2
+ <module external.linked.project.id=":" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
3
3
  <component name="FacetManager">
4
4
  <facet type="android-gradle" name="Android-Gradle">
5
5
  <configuration>
6
6
  <option name="GRADLE_PROJECT_PATH" value=":" />
7
+ <option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" />
8
+ <option name="LAST_KNOWN_AGP_VERSION" />
7
9
  </configuration>
8
10
  </facet>
9
11
  </component>
10
12
  <component name="NewModuleRootManager" inherit-compiler-output="true">
11
13
  <exclude-output />
12
- <content url="file://$MODULE_DIR$" />
13
- <orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
14
+ <content url="file://$MODULE_DIR$/../.." />
15
+ <orderEntry type="inheritedJdk" />
14
16
  <orderEntry type="sourceFolder" forTests="false" />
15
17
  </component>
16
18
  </module>
@@ -2,7 +2,7 @@
2
2
  <project version="4">
3
3
  <component name="ProjectModuleManager">
4
4
  <modules>
5
- <module fileurl="file://$PROJECT_DIR$/android.iml" filepath="$PROJECT_DIR$/android.iml" />
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/modules/android.iml" filepath="$PROJECT_DIR$/.idea/modules/android.iml" />
6
6
  </modules>
7
7
  </component>
8
8
  </project>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
5
+ </component>
6
+ </project>