@onekeyfe/react-native-jpush 0.0.0-stage → 6.7.0-alpha.436

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 (178) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +39 -2
  3. package/ReactNativeJpush.podspec +66 -0
  4. package/android/CMakeLists.txt +24 -0
  5. package/android/build.gradle +143 -0
  6. package/android/fcm/build.gradle +29 -0
  7. package/android/fcm/consumer-rules.pro +2 -0
  8. package/android/fcm/src/main/AndroidManifest.xml +16 -0
  9. package/android/fcm/src/main/java/com/onekey/jpush/fcm/FcmMessagingService.java +72 -0
  10. package/android/fcm/src/main/java/com/onekey/jpush/fcm/FcmPushManager.java +69 -0
  11. package/android/gradle.properties +4 -0
  12. package/android/src/main/AndroidManifest.xml +143 -0
  13. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  14. package/android/src/main/java/cn/android/service/JTransitActivity.java +19 -0
  15. package/android/src/main/java/cn/jiguang/android/BuildConfig.java +10 -0
  16. package/android/src/main/java/cn/jiguang/android/IDataShare.java +190 -0
  17. package/android/src/main/java/cn/jiguang/api/BaseLogger.java +82 -0
  18. package/android/src/main/java/cn/jiguang/api/JAction.java +22 -0
  19. package/android/src/main/java/cn/jiguang/api/JActionExtra.java +21 -0
  20. package/android/src/main/java/cn/jiguang/api/JAnalyticsAction.java +11 -0
  21. package/android/src/main/java/cn/jiguang/api/JCoreInterface.java +228 -0
  22. package/android/src/main/java/cn/jiguang/api/JCoreManager.java +156 -0
  23. package/android/src/main/java/cn/jiguang/api/JDispatchAction.java +66 -0
  24. package/android/src/main/java/cn/jiguang/api/MultiSpHelper.java +114 -0
  25. package/android/src/main/java/cn/jiguang/api/ReportCallBack.java +9 -0
  26. package/android/src/main/java/cn/jiguang/api/SdkType.java +13 -0
  27. package/android/src/main/java/cn/jiguang/api/utils/JCollectionAuth.java +23 -0
  28. package/android/src/main/java/cn/jiguang/core/JCoreCrypto.java +545 -0
  29. package/android/src/main/java/cn/jiguang/core/JCoreStorage.java +737 -0
  30. package/android/src/main/java/cn/jiguang/core/JCoreTcpEngine.java +1395 -0
  31. package/android/src/main/java/cn/jiguang/core/JCoreWireCodec.java +1716 -0
  32. package/android/src/main/java/cn/jiguang/internal/ActionManager.java +63 -0
  33. package/android/src/main/java/cn/jiguang/internal/JConstants.java +61 -0
  34. package/android/src/main/java/cn/jiguang/internal/JCoreHelperAction.java +12 -0
  35. package/android/src/main/java/cn/jiguang/internal/JCoreInternalHelper.java +102 -0
  36. package/android/src/main/java/cn/jiguang/net/DefaultHostVerifier.java +40 -0
  37. package/android/src/main/java/cn/jiguang/net/HttpRequest.java +78 -0
  38. package/android/src/main/java/cn/jiguang/net/HttpResponse.java +48 -0
  39. package/android/src/main/java/cn/jiguang/net/HttpUtils.java +106 -0
  40. package/android/src/main/java/cn/jiguang/plugins/core/JCoreModule.java +91 -0
  41. package/android/src/main/java/cn/jiguang/plugins/core/JCorePackage.java +27 -0
  42. package/android/src/main/java/cn/jiguang/plugins/push/JPushModule.java +773 -0
  43. package/android/src/main/java/cn/jiguang/plugins/push/JPushPackage.java +25 -0
  44. package/android/src/main/java/cn/jiguang/plugins/push/common/JConstants.java +88 -0
  45. package/android/src/main/java/cn/jiguang/plugins/push/common/JLogger.java +122 -0
  46. package/android/src/main/java/cn/jiguang/plugins/push/helper/JPushHelper.java +710 -0
  47. package/android/src/main/java/cn/jiguang/plugins/push/receiver/JPushBroadcastReceiver.java +37 -0
  48. package/android/src/main/java/cn/jiguang/plugins/push/receiver/JPushModuleReceiver.java +264 -0
  49. package/android/src/main/java/cn/jiguang/plugins/service/JCoreModuleService.java +7 -0
  50. package/android/src/main/java/cn/jpush/android/api/BasicPushNotificationBuilder.java +83 -0
  51. package/android/src/main/java/cn/jpush/android/api/CallBackParams.java +50 -0
  52. package/android/src/main/java/cn/jpush/android/api/CmdMessage.java +33 -0
  53. package/android/src/main/java/cn/jpush/android/api/CustomMessage.java +28 -0
  54. package/android/src/main/java/cn/jpush/android/api/CustomPushNotificationBuilder.java +81 -0
  55. package/android/src/main/java/cn/jpush/android/api/DefaultPushNotificationBuilder.java +90 -0
  56. package/android/src/main/java/cn/jpush/android/api/InAppSlotParams.java +65 -0
  57. package/android/src/main/java/cn/jpush/android/api/InstrumentedActivity.java +17 -0
  58. package/android/src/main/java/cn/jpush/android/api/InstrumentedListActivity.java +17 -0
  59. package/android/src/main/java/cn/jpush/android/api/JPushInterface.java +490 -0
  60. package/android/src/main/java/cn/jpush/android/api/JPushMessage.java +121 -0
  61. package/android/src/main/java/cn/jpush/android/api/JThirdPlatFormInterface.java +247 -0
  62. package/android/src/main/java/cn/jpush/android/api/MultiActionsNotificationBuilder.java +72 -0
  63. package/android/src/main/java/cn/jpush/android/api/NotificationCustomButton.java +50 -0
  64. package/android/src/main/java/cn/jpush/android/api/NotificationMessage.java +67 -0
  65. package/android/src/main/java/cn/jpush/android/api/PushNotificationBuilder.java +13 -0
  66. package/android/src/main/java/cn/jpush/android/api/TagAliasCallback.java +8 -0
  67. package/android/src/main/java/cn/jpush/android/data/JPushCollectControl.java +96 -0
  68. package/android/src/main/java/cn/jpush/android/data/JPushConfig.java +79 -0
  69. package/android/src/main/java/cn/jpush/android/data/JPushConfigEx.java +41 -0
  70. package/android/src/main/java/cn/jpush/android/data/JPushLocalNotification.java +155 -0
  71. package/android/src/main/java/cn/jpush/android/helper/JCoreHelper.java +70 -0
  72. package/android/src/main/java/cn/jpush/android/helper/Logger.java +82 -0
  73. package/android/src/main/java/cn/jpush/android/local/ActionHelper.java +1277 -0
  74. package/android/src/main/java/cn/jpush/android/local/ActivityLifeCallBack.java +47 -0
  75. package/android/src/main/java/cn/jpush/android/local/JPushAction.java +67 -0
  76. package/android/src/main/java/cn/jpush/android/local/JPushConstants.java +34 -0
  77. package/android/src/main/java/cn/jpush/android/local/JPushResponse.java +26 -0
  78. package/android/src/main/java/cn/jpush/android/local/ProxyActivityAction.java +34 -0
  79. package/android/src/main/java/cn/jpush/android/service/AlarmReceiver.java +15 -0
  80. package/android/src/main/java/cn/jpush/android/service/BActivity.java +19 -0
  81. package/android/src/main/java/cn/jpush/android/service/DActivity.java +19 -0
  82. package/android/src/main/java/cn/jpush/android/service/DaemonService.java +17 -0
  83. package/android/src/main/java/cn/jpush/android/service/DataProvider.java +136 -0
  84. package/android/src/main/java/cn/jpush/android/service/DataShare.java +129 -0
  85. package/android/src/main/java/cn/jpush/android/service/DownloadProvider.java +139 -0
  86. package/android/src/main/java/cn/jpush/android/service/InitProvider.java +48 -0
  87. package/android/src/main/java/cn/jpush/android/service/JCommonService.java +79 -0
  88. package/android/src/main/java/cn/jpush/android/service/JNotifyActivity.java +28 -0
  89. package/android/src/main/java/cn/jpush/android/service/JPushMessageReceiver.java +94 -0
  90. package/android/src/main/java/cn/jpush/android/service/PushReceiver.java +26 -0
  91. package/android/src/main/java/cn/jpush/android/service/PushService.java +28 -0
  92. package/android/src/main/java/cn/jpush/android/service/SchedulerReceiver.java +17 -0
  93. package/android/src/main/java/cn/jpush/android/service/TagAliasReceiver.java +11 -0
  94. package/android/src/main/java/cn/jpush/android/service/WakedResultReceiver.java +24 -0
  95. package/android/src/main/java/cn/jpush/android/ui/FullScreenView.java +11 -0
  96. package/android/src/main/java/cn/jpush/android/ui/PopWinActivity.java +16 -0
  97. package/android/src/main/java/cn/jpush/android/ui/PushActivity.java +27 -0
  98. package/android/src/main/java/cn/jpush/android/ui/RoundedImageView.java +63 -0
  99. package/android/src/main/java/cn/jpush/android/ui/ShadowViewCard.java +56 -0
  100. package/android/src/main/java/cn/jpush/android/ups/ICallbackResult.java +5 -0
  101. package/android/src/main/java/cn/jpush/android/ups/JPushUPSManager.java +37 -0
  102. package/android/src/main/java/cn/jpush/android/ups/TokenResult.java +47 -0
  103. package/android/src/main/java/cn/jpush/android/ups/UPSRegisterCallBack.java +4 -0
  104. package/android/src/main/java/cn/jpush/android/ups/UPSTurnCallBack.java +4 -0
  105. package/android/src/main/java/cn/jpush/android/ups/UPSUnRegisterCallBack.java +4 -0
  106. package/android/src/main/java/com/margelo/nitro/reactnativejpush/ReactNativeJpush.kt +455 -0
  107. package/android/src/main/java/com/margelo/nitro/reactnativejpush/ReactNativeJpushPackage.kt +50 -0
  108. package/android/src/main/res/values/jpush_string.xml +7 -0
  109. package/android/src/main/res/values/jpush_style.xml +22 -0
  110. package/android/src/test/java/com/margelo/nitro/reactnativejpush/ReactNativeJpushProtocolTest.java +1016 -0
  111. package/ios/ReactNativeJpush.swift +522 -0
  112. package/ios/bridge/RCTJCoreModule.h +5 -0
  113. package/ios/bridge/RCTJCoreModule.m +31 -0
  114. package/ios/bridge/RCTJPushEventQueue.h +14 -0
  115. package/ios/bridge/RCTJPushEventQueue.m +23 -0
  116. package/ios/bridge/RCTJPushModule.h +37 -0
  117. package/ios/bridge/RCTJPushModule.m +1165 -0
  118. package/ios/include/JCOREService.h +3 -0
  119. package/ios/include/JGCOREAPI.h +14 -0
  120. package/ios/include/JGInforCollectionAuth.h +17 -0
  121. package/ios/include/JGInforCollectionAuthItems.h +2 -0
  122. package/ios/include/JGPushNotificationTrigger.h +2 -0
  123. package/ios/include/JPUSHService.h +359 -0
  124. package/ios/jcore/JCOREConfiguration.h +141 -0
  125. package/ios/jcore/JCOREConfiguration.m +703 -0
  126. package/ios/jcore/JCORECrypto.h +73 -0
  127. package/ios/jcore/JCORECrypto.m +649 -0
  128. package/ios/jcore/JCORESisResolver.h +56 -0
  129. package/ios/jcore/JCORESisResolver.m +525 -0
  130. package/ios/jcore/JCORETcpSession.h +42 -0
  131. package/ios/jcore/JCORETcpSession.m +956 -0
  132. package/ios/jcore/JCOREWireProtocol.h +274 -0
  133. package/ios/jcore/JCOREWireProtocol.m +1453 -0
  134. package/ios/jpush/JPUSHModels.m +214 -0
  135. package/ios/jpush/JPUSHNotificationManager.h +34 -0
  136. package/ios/jpush/JPUSHNotificationManager.m +360 -0
  137. package/ios/jpush/JPUSHService.m +794 -0
  138. package/ios/tests/ReactNativeJpushTests.m +148 -0
  139. package/lib/module/ReactNativeJpush.nitro.js +4 -0
  140. package/lib/module/ReactNativeJpush.nitro.js.map +1 -0
  141. package/lib/module/index.js +801 -0
  142. package/lib/module/index.js.map +1 -0
  143. package/lib/module/package.json +1 -0
  144. package/lib/typescript/package.json +1 -0
  145. package/lib/typescript/src/ReactNativeJpush.nitro.d.ts +60 -0
  146. package/lib/typescript/src/ReactNativeJpush.nitro.d.ts.map +1 -0
  147. package/lib/typescript/src/index.d.ts +235 -0
  148. package/lib/typescript/src/index.d.ts.map +1 -0
  149. package/nitro.json +23 -0
  150. package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +75 -0
  151. package/nitrogen/generated/android/c++/JFunc_void_std__string_std__string.hpp +76 -0
  152. package/nitrogen/generated/android/c++/JHybridReactNativeJpushSpec.cpp +310 -0
  153. package/nitrogen/generated/android/c++/JHybridReactNativeJpushSpec.hpp +115 -0
  154. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativejpush/Func_void_bool.kt +78 -0
  155. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativejpush/Func_void_std__string_std__string.kt +78 -0
  156. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativejpush/HybridReactNativeJpushSpec.kt +274 -0
  157. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativejpush/reactnativejpushOnLoad.kt +35 -0
  158. package/nitrogen/generated/android/reactnativejpush+autolinking.cmake +81 -0
  159. package/nitrogen/generated/android/reactnativejpush+autolinking.gradle +27 -0
  160. package/nitrogen/generated/android/reactnativejpushOnLoad.cpp +58 -0
  161. package/nitrogen/generated/android/reactnativejpushOnLoad.hpp +34 -0
  162. package/nitrogen/generated/ios/ReactNativeJpush+autolinking.rb +62 -0
  163. package/nitrogen/generated/ios/ReactNativeJpush-Swift-Cxx-Bridge.cpp +49 -0
  164. package/nitrogen/generated/ios/ReactNativeJpush-Swift-Cxx-Bridge.hpp +147 -0
  165. package/nitrogen/generated/ios/ReactNativeJpush-Swift-Cxx-Umbrella.hpp +46 -0
  166. package/nitrogen/generated/ios/ReactNativeJpushAutolinking.mm +33 -0
  167. package/nitrogen/generated/ios/ReactNativeJpushAutolinking.swift +26 -0
  168. package/nitrogen/generated/ios/c++/HybridReactNativeJpushSpecSwift.cpp +11 -0
  169. package/nitrogen/generated/ios/c++/HybridReactNativeJpushSpecSwift.hpp +402 -0
  170. package/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
  171. package/nitrogen/generated/ios/swift/Func_void_std__string_std__string.swift +46 -0
  172. package/nitrogen/generated/ios/swift/HybridReactNativeJpushSpec.swift +107 -0
  173. package/nitrogen/generated/ios/swift/HybridReactNativeJpushSpec_cxx.swift +723 -0
  174. package/nitrogen/generated/shared/c++/HybridReactNativeJpushSpec.cpp +73 -0
  175. package/nitrogen/generated/shared/c++/HybridReactNativeJpushSpec.hpp +116 -0
  176. package/package.json +174 -4
  177. package/src/ReactNativeJpush.nitro.ts +93 -0
  178. package/src/index.tsx +1090 -0
@@ -0,0 +1,455 @@
1
+ package com.margelo.nitro.reactnativejpush
2
+
3
+ import android.app.NotificationChannel
4
+ import android.app.NotificationManager
5
+ import android.content.Context
6
+ import android.net.Uri
7
+ import android.os.Build
8
+ import com.facebook.proguard.annotations.DoNotStrip
9
+ import com.facebook.react.bridge.ReactApplicationContext
10
+ import com.margelo.nitro.NitroModules
11
+ import com.margelo.nitro.nativelogger.OneKeyLog
12
+ import cn.jiguang.api.JCoreInterface
13
+ import cn.jiguang.api.utils.JCollectionAuth
14
+ import cn.jiguang.core.JCoreStorage
15
+ import cn.jiguang.plugins.core.JCoreModule
16
+ import cn.jiguang.plugins.push.JPushModule
17
+ import cn.jiguang.plugins.push.common.JConstants
18
+ import cn.jiguang.plugins.push.common.JLogger
19
+ import cn.jiguang.plugins.push.helper.JPushHelper
20
+ import cn.jiguang.plugins.push.receiver.JPushBroadcastReceiver
21
+ import cn.jpush.android.api.JPushInterface
22
+ import cn.jpush.android.data.JPushCollectControl
23
+ import cn.jpush.android.data.JPushLocalNotification
24
+ import org.json.JSONObject
25
+
26
+ @DoNotStrip
27
+ class ReactNativeJpush : HybridReactNativeJpushSpec() {
28
+ init {
29
+ getReactContext()
30
+ }
31
+
32
+ private fun getReactContext(): ReactApplicationContext? {
33
+ val nitroCtx = NitroModules.applicationContext
34
+ if (nitroCtx != null) {
35
+ JPushModule.registerReactContext(nitroCtx)
36
+ }
37
+ val ctx = JPushModule.reactContext ?: nitroCtx ?: JCoreModule.reactContext
38
+ if (ctx != null) {
39
+ JPushModule.registerReactContext(ctx)
40
+ if (JPushModule.reactContext == null) {
41
+ JPushModule.reactContext = ctx
42
+ }
43
+ if (JCoreModule.reactContext == null) {
44
+ JCoreModule.reactContext = ctx
45
+ }
46
+ }
47
+ return ctx
48
+ }
49
+
50
+ private fun getAppContext(): Context? {
51
+ return getReactContext()
52
+ ?: JCoreStorage.getAppContext(null)
53
+ ?: cn.jiguang.internal.JConstants.getAppContext(null)
54
+ ?: cn.jpush.android.local.JPushConstants.getAppContext(null)
55
+ }
56
+
57
+ private fun flushQueuedNotificationBundle() {
58
+ val bundle = JPushBroadcastReceiver.NOTIFICATION_BUNDLE ?: return
59
+ val map = JPushHelper.convertNotificationBundleToMapObject(JConstants.NOTIFICATION_OPENED, bundle)
60
+ val eventName = if (bundle.getInt(JPushInterface.EXTRA_NOTI_TYPE, 0) == 1) {
61
+ JConstants.LOCAL_NOTIFICATION_EVENT
62
+ } else {
63
+ JConstants.NOTIFICATION_EVENT
64
+ }
65
+ JPushHelper.sendEventMap(eventName, map)
66
+ JPushBroadcastReceiver.NOTIFICATION_BUNDLE = null
67
+ }
68
+
69
+ override fun setDebugMode(enable: Boolean) {
70
+ JPushInterface.setDebugMode(enable)
71
+ JLogger.setLoggerEnable(enable)
72
+ OneKeyLog.info(JLogger.TAG, "setDebugMode enable=$enable")
73
+ }
74
+
75
+ override fun initPush() {
76
+ val ctx = getAppContext()
77
+ OneKeyLog.info(JLogger.TAG, "initPush")
78
+ JPushInterface.init(ctx)
79
+ flushQueuedNotificationBundle()
80
+ JPushInterface.setNotificationCallBackEnable(ctx, true)
81
+ }
82
+
83
+ override fun setupWithConfig(appKey: String, channel: String, production: Boolean) {
84
+ val ctx = getAppContext()
85
+ OneKeyLog.info(JLogger.TAG, "setupWithConfig channel=$channel production=$production")
86
+ if (appKey.isNotEmpty()) {
87
+ JCoreStorage.setAppKey(ctx, appKey)
88
+ }
89
+ if (channel.isNotEmpty()) {
90
+ JPushInterface.setChannel(ctx, channel)
91
+ }
92
+ JPushInterface.init(ctx)
93
+ flushQueuedNotificationBundle()
94
+ JPushInterface.setNotificationCallBackEnable(ctx, true)
95
+ }
96
+
97
+ override fun loadJS() {
98
+ flushQueuedNotificationBundle()
99
+ }
100
+
101
+ override fun stopPush() {
102
+ val ctx = getAppContext()
103
+ OneKeyLog.info(JLogger.TAG, "stopPush")
104
+ JPushInterface.stopPush(ctx)
105
+ }
106
+
107
+ override fun resumePush() {
108
+ val ctx = getAppContext()
109
+ OneKeyLog.info(JLogger.TAG, "resumePush")
110
+ JPushInterface.resumePush(ctx)
111
+ }
112
+
113
+ override fun isPushStopped(): Boolean {
114
+ val ctx = getAppContext()
115
+ return JPushInterface.isPushStopped(ctx)
116
+ }
117
+
118
+ override fun getRegistrationID(): String {
119
+ val ctx = getAppContext()
120
+ return JPushInterface.getRegistrationID(ctx) ?: ""
121
+ }
122
+
123
+ override fun isNotificationEnabled(callback: (enabled: Boolean) -> Unit) {
124
+ val ctx = getAppContext()
125
+ val enabled = if (ctx != null) JPushInterface.isNotificationEnabled(ctx) == 1 else false
126
+ callback(enabled)
127
+ }
128
+
129
+ override fun addTags(sequence: Double, tags: Array<String>) {
130
+ val ctx = getAppContext()
131
+ JPushInterface.addTags(ctx, sequence.toInt(), tags.toSet())
132
+ }
133
+
134
+ override fun setTags(sequence: Double, tags: Array<String>) {
135
+ val ctx = getAppContext()
136
+ JPushInterface.setTags(ctx, sequence.toInt(), tags.toSet())
137
+ }
138
+
139
+ override fun deleteTags(sequence: Double, tags: Array<String>) {
140
+ val ctx = getAppContext()
141
+ JPushInterface.deleteTags(ctx, sequence.toInt(), tags.toSet())
142
+ }
143
+
144
+ override fun cleanTags(sequence: Double) {
145
+ val ctx = getAppContext()
146
+ JPushInterface.cleanTags(ctx, sequence.toInt())
147
+ }
148
+
149
+ override fun getAllTags(sequence: Double) {
150
+ val ctx = getAppContext()
151
+ JPushInterface.getAllTags(ctx, sequence.toInt())
152
+ }
153
+
154
+ override fun checkTagBindState(sequence: Double, tag: String) {
155
+ val ctx = getAppContext()
156
+ JPushInterface.checkTagBindState(ctx, sequence.toInt(), tag)
157
+ }
158
+
159
+ override fun setAlias(sequence: Double, alias: String) {
160
+ val ctx = getAppContext()
161
+ JPushInterface.setAlias(ctx, sequence.toInt(), alias)
162
+ }
163
+
164
+ override fun deleteAlias(sequence: Double) {
165
+ val ctx = getAppContext()
166
+ JPushInterface.deleteAlias(ctx, sequence.toInt())
167
+ }
168
+
169
+ override fun getAlias(sequence: Double) {
170
+ val ctx = getAppContext()
171
+ JPushInterface.getAlias(ctx, sequence.toInt())
172
+ }
173
+
174
+ override fun setProperties(sequence: Double, propertiesJson: String) {
175
+ val ctx = getAppContext()
176
+ val map = HashMap<String, Any>()
177
+ if (propertiesJson.isNotEmpty()) {
178
+ try {
179
+ val json = JSONObject(propertiesJson)
180
+ val keys = json.keys()
181
+ while (keys.hasNext()) {
182
+ val k = keys.next()
183
+ val v = json.opt(k)
184
+ if (v != null && v != JSONObject.NULL) {
185
+ map[k] = v
186
+ }
187
+ }
188
+ } catch (_: Throwable) {
189
+ }
190
+ }
191
+ JPushInterface.setProperties(ctx, sequence.toInt(), map)
192
+ }
193
+
194
+ override fun deleteProperties(sequence: Double, keys: Array<String>) {
195
+ val ctx = getAppContext()
196
+ val map = HashMap<String, Any>()
197
+ for (k in keys) {
198
+ map[k] = ""
199
+ }
200
+ JPushInterface.deleteProperties(ctx, sequence.toInt(), map)
201
+ }
202
+
203
+ override fun cleanProperties(sequence: Double) {
204
+ val ctx = getAppContext()
205
+ JPushInterface.cleanProperties(ctx, sequence.toInt())
206
+ }
207
+
208
+ override fun setBadge(badge: Double, appBadge: Double) {
209
+ val ctx = getAppContext()
210
+ JPushInterface.setBadgeNumber(ctx, badge.toInt())
211
+ }
212
+
213
+ override fun setMobileNumber(sequence: Double, mobileNumber: String) {
214
+ val ctx = getAppContext()
215
+ JPushInterface.setMobileNumber(ctx, sequence.toInt(), mobileNumber)
216
+ }
217
+
218
+ override fun initCrashHandler() {
219
+ val ctx = getAppContext()
220
+ JPushInterface.initCrashHandler(ctx)
221
+ }
222
+
223
+ override fun setPowerSaveMode(enable: Boolean) {
224
+ val ctx = getAppContext()
225
+ JPushInterface.setPowerSaveMode(ctx, enable)
226
+ }
227
+
228
+ private fun resolveNotificationId(messageID: String): Long =
229
+ messageID.toLongOrNull() ?: messageID.hashCode().toLong()
230
+
231
+ override fun addLocalNotification(
232
+ messageID: String,
233
+ title: String,
234
+ content: String,
235
+ broadcastTime: String,
236
+ extrasJson: String
237
+ ) {
238
+ val ctx = getAppContext()
239
+ val defaultPkg = ctx?.packageName ?: ""
240
+ val id = resolveNotificationId(messageID)
241
+ val notification = JPushLocalNotification()
242
+ notification.notificationId = id
243
+ notification.title = title.ifEmpty { defaultPkg }
244
+ notification.content = content.ifEmpty { defaultPkg }
245
+ val timeMs = broadcastTime.toLongOrNull() ?: 0L
246
+ if (timeMs > 0L) {
247
+ notification.setBroadcastTime(timeMs)
248
+ }
249
+ if (extrasJson.isNotEmpty() && extrasJson != "{}") {
250
+ notification.extras = extrasJson
251
+ }
252
+ JPushInterface.addLocalNotification(ctx, notification)
253
+ }
254
+
255
+ override fun removeLocalNotification(messageID: String) {
256
+ val ctx = getAppContext()
257
+ if (messageID.isEmpty()) return
258
+ val id = resolveNotificationId(messageID)
259
+ JPushInterface.removeLocalNotification(ctx, id)
260
+ }
261
+
262
+ override fun clearLocalNotifications() {
263
+ val ctx = getAppContext()
264
+ JPushInterface.clearLocalNotifications(ctx)
265
+ }
266
+
267
+ override fun clearAllNotifications() {
268
+ val ctx = getAppContext()
269
+ JPushInterface.clearAllNotifications(ctx)
270
+ }
271
+
272
+ override fun clearNotificationById(notificationId: Double) {
273
+ val ctx = getAppContext()
274
+ JPushInterface.clearNotificationById(ctx, notificationId.toInt())
275
+ }
276
+
277
+ override fun requestPermission() {
278
+ val reactCtx = getReactContext()
279
+ val target: Context? = reactCtx?.currentActivity ?: getAppContext()
280
+ if (target != null) {
281
+ JPushInterface.requestPermission(target)
282
+ }
283
+ }
284
+
285
+ override fun setPushTime(days: DoubleArray, startHour: Double, endHour: Double) {
286
+ val ctx = getAppContext()
287
+ val daySet = HashSet<Int>()
288
+ for (d in days) {
289
+ val dayInt = d.toInt()
290
+ if (dayInt in 0..6) {
291
+ daySet.add(dayInt)
292
+ }
293
+ }
294
+ JPushInterface.setPushTime(ctx, daySet, startHour.toInt(), endHour.toInt())
295
+ }
296
+
297
+ override fun setSilenceTime(
298
+ startHour: Double,
299
+ startMinute: Double,
300
+ endHour: Double,
301
+ endMinute: Double
302
+ ) {
303
+ val ctx = getAppContext()
304
+ JPushInterface.setSilenceTime(
305
+ ctx,
306
+ startHour.toInt(),
307
+ startMinute.toInt(),
308
+ endHour.toInt(),
309
+ endMinute.toInt()
310
+ )
311
+ }
312
+
313
+ override fun setLatestNotificationNumber(maxNumber: Double) {
314
+ val ctx = getAppContext()
315
+ JPushInterface.setLatestNotificationNumber(ctx, maxNumber.toInt())
316
+ }
317
+
318
+ override fun setChannel(channel: String) {
319
+ val ctx = getAppContext()
320
+ if (channel.isNotEmpty()) {
321
+ JPushInterface.setChannel(ctx, channel)
322
+ }
323
+ }
324
+
325
+ override fun setChannelAndSound(channel: String, channelId: String, sound: String) {
326
+ val ctx = getAppContext()
327
+ if (channel.isEmpty() || channelId.isEmpty()) {
328
+ return
329
+ }
330
+ try {
331
+ if (ctx != null && Build.VERSION.SDK_INT >= 26) {
332
+ val manager = ctx.getSystemService(Context.NOTIFICATION_SERVICE) as? NotificationManager
333
+ val notifChannel = NotificationChannel(
334
+ channelId,
335
+ channel,
336
+ NotificationManager.IMPORTANCE_HIGH
337
+ )
338
+ if (sound.isNotEmpty()) {
339
+ notifChannel.setSound(
340
+ Uri.parse("android.resource://${ctx.packageName}/raw/$sound"),
341
+ null
342
+ )
343
+ }
344
+ manager?.createNotificationChannel(notifChannel)
345
+ }
346
+ JPushInterface.setChannel(ctx, channel)
347
+ } catch (_: Throwable) {
348
+ }
349
+ }
350
+
351
+ override fun setLinkMergeEnable(enable: Boolean) {
352
+ val ctx = getAppContext()
353
+ JPushInterface.setLinkMergeEnable(ctx, enable)
354
+ }
355
+
356
+ override fun setSmartPushEnable(enable: Boolean) {
357
+ val ctx = getAppContext()
358
+ JPushInterface.setSmartPushEnable(ctx, enable)
359
+ }
360
+
361
+ override fun setDataInsightsEnable(enable: Boolean) {
362
+ val ctx = getAppContext()
363
+ JPushInterface.setDataInsightsEnable(ctx, enable)
364
+ }
365
+
366
+ override fun setGeofenceEnable(enable: Boolean) {
367
+ val ctx = getAppContext()
368
+ JPushInterface.setGeofenceEnable(ctx, enable)
369
+ }
370
+
371
+ override fun setBackgroundEnable(enable: Boolean) {
372
+ // iOS-only; no-op on Android
373
+ }
374
+
375
+ override fun setMaxGeofenceNumber(maxNumber: Double) {
376
+ val ctx = getAppContext()
377
+ JPushInterface.setMaxGeofenceNumber(ctx, maxNumber.toInt())
378
+ }
379
+
380
+ override fun deleteGeofence(geoFenceID: String) {
381
+ val ctx = getAppContext()
382
+ JPushInterface.deleteGeofence(ctx, geoFenceID)
383
+ }
384
+
385
+ override fun pageEnterTo(pageName: String) {
386
+ // Handled on iOS; no-op on Android
387
+ }
388
+
389
+ override fun pageLeave(pageName: String) {
390
+ // Handled on iOS; no-op on Android
391
+ }
392
+
393
+ override fun setCollectControl(
394
+ imei: Boolean,
395
+ imsi: Boolean,
396
+ mac: Boolean,
397
+ wifi: Boolean,
398
+ bssid: Boolean,
399
+ ssid: Boolean,
400
+ cell: Boolean,
401
+ gps: Boolean
402
+ ) {
403
+ val ctx = getAppContext()
404
+ val control = JPushCollectControl.Builder()
405
+ .imei(imei)
406
+ .imsi(imsi)
407
+ .mac(mac)
408
+ .wifi(wifi)
409
+ .bssid(bssid)
410
+ .ssid(ssid)
411
+ .cell(cell)
412
+ .build()
413
+ JPushInterface.setCollectControl(ctx, control)
414
+ }
415
+
416
+ override fun setAuth(auth: Boolean) {
417
+ val ctx = getAppContext()
418
+ JCollectionAuth.setAuth(ctx, auth)
419
+ }
420
+
421
+ override fun setCountryCode(code: String) {
422
+ val ctx = getAppContext()
423
+ if (code.isNotEmpty()) {
424
+ JCoreInterface.setCountryCode(ctx, code)
425
+ }
426
+ }
427
+
428
+ override fun enableAutoWakeup(enable: Boolean) {
429
+ val ctx = getAppContext()
430
+ JCollectionAuth.enableAutoWakeup(ctx, enable)
431
+ }
432
+
433
+ override fun enableSDKLocalLog(enable: Boolean, uploadJgToServer: Boolean) {
434
+ val ctx = getAppContext()
435
+ JCoreInterface.enableSDKLocalLog(ctx, enable, uploadJgToServer)
436
+ }
437
+
438
+ override fun readNewLogs(): String {
439
+ val ctx = getAppContext()
440
+ return JCoreInterface.readNewLogs(ctx) ?: ""
441
+ }
442
+
443
+ override fun addEventListener(
444
+ callback: (eventName: String, payloadJson: String) -> Unit
445
+ ): Double {
446
+ val id = JPushHelper.registerNitroListener { eventName, payloadJson ->
447
+ callback(eventName, payloadJson)
448
+ }
449
+ return id.toDouble()
450
+ }
451
+
452
+ override fun removeEventListener(id: Double) {
453
+ JPushHelper.unregisterNitroListener(id.toInt())
454
+ }
455
+ }
@@ -0,0 +1,50 @@
1
+ package com.margelo.nitro.reactnativejpush
2
+
3
+ import com.facebook.react.BaseReactPackage
4
+ import com.facebook.react.bridge.NativeModule
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.module.model.ReactModuleInfo
7
+ import com.facebook.react.module.model.ReactModuleInfoProvider
8
+ import cn.jiguang.plugins.core.JCoreModule
9
+ import cn.jiguang.plugins.push.JPushModule
10
+
11
+ class ReactNativeJpushPackage : BaseReactPackage() {
12
+ override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
13
+ JPushModule.registerReactContext(reactContext)
14
+ JCoreModule.reactContext = reactContext
15
+ return when (name) {
16
+ "JPushModule" -> JPushModule(reactContext)
17
+ "JCoreModule" -> JCoreModule(reactContext)
18
+ else -> null
19
+ }
20
+ }
21
+
22
+ override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
23
+ return ReactModuleInfoProvider {
24
+ val map = HashMap<String, ReactModuleInfo>()
25
+ map["JPushModule"] = ReactModuleInfo(
26
+ "JPushModule",
27
+ JPushModule::class.java.name,
28
+ true,
29
+ true,
30
+ false,
31
+ false
32
+ )
33
+ map["JCoreModule"] = ReactModuleInfo(
34
+ "JCoreModule",
35
+ JCoreModule::class.java.name,
36
+ true,
37
+ true,
38
+ false,
39
+ false
40
+ )
41
+ map
42
+ }
43
+ }
44
+
45
+ companion object {
46
+ init {
47
+ System.loadLibrary("reactnativejpush")
48
+ }
49
+ }
50
+ }
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <resources>
3
+ <string name="jg_channel_name_p_min">LOW</string>
4
+ <string name="jg_channel_name_p_low">LOW</string>
5
+ <string name="jg_channel_name_p_default">NORMAL</string>
6
+ <string name="jg_channel_name_p_high">HIGH</string>
7
+ </resources>
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <resources xmlns:android="http://schemas.android.com/apk/res/android">
3
+ <style name="MyDialogStyle">
4
+ <item name="android:windowBackground">@android:color/transparent</item>
5
+ <item name="android:windowFrame">@null</item>
6
+ <item name="android:windowNoTitle">true</item>
7
+ <item name="android:windowIsFloating">true</item>
8
+ <item name="android:windowIsTranslucent">true</item>
9
+ <item name="android:windowContentOverlay">@null</item>
10
+ <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
11
+ <item name="android:backgroundDimEnabled">true</item>
12
+ </style>
13
+ <style name="JPushTheme">
14
+ <item name="android:windowNoTitle">true</item>
15
+ <item name="android:windowActionBar">false</item>
16
+ <item name="android:windowFullscreen">true</item>
17
+ <item name="android:windowContentOverlay">@null</item>
18
+ <item name="android:textAllCaps">false</item>
19
+ <item name="android:windowIsTranslucent">true</item>
20
+ <item name="android:windowBackground">@android:color/transparent</item>
21
+ </style>
22
+ </resources>