@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,794 @@
1
+ #if __has_include("JPUSHService.h")
2
+ #import "JPUSHService.h"
3
+ #else
4
+ #import "../include/JPUSHService.h"
5
+ #endif
6
+ #if __has_include("JCOREConfiguration.h")
7
+ #import "JCOREConfiguration.h"
8
+ #import "JCORETcpSession.h"
9
+ #import "JCOREWireProtocol.h"
10
+ #else
11
+ #import "../jcore/JCOREConfiguration.h"
12
+ #import "../jcore/JCORETcpSession.h"
13
+ #import "../jcore/JCOREWireProtocol.h"
14
+ #endif
15
+ #import "JPUSHNotificationManager.h"
16
+ #import <UserNotifications/UserNotifications.h>
17
+
18
+ static NSString *JPushHexFromData(NSData *data) {
19
+ if (data.length == 0) {
20
+ return @"";
21
+ }
22
+ const unsigned char *bytes = data.bytes;
23
+ NSMutableString *hex = [NSMutableString stringWithCapacity:data.length * 2];
24
+ for (NSUInteger i = 0; i < data.length; i++) {
25
+ [hex appendFormat:@"%02x", bytes[i]];
26
+ }
27
+ return hex;
28
+ }
29
+
30
+ @implementation JPUSHService
31
+
32
+ + (void)setupWithOption:(NSDictionary *)launchingOption
33
+ appKey:(NSString *)appKey
34
+ channel:(NSString *)channel
35
+ apsForProduction:(BOOL)isProduction {
36
+ [self setupWithOption:launchingOption
37
+ appKey:appKey
38
+ channel:channel
39
+ apsForProduction:isProduction
40
+ advertisingIdentifier:nil];
41
+ }
42
+
43
+ + (void)setupWithOption:(NSDictionary *)launchingOption
44
+ appKey:(NSString *)appKey
45
+ channel:(NSString *)channel
46
+ apsForProduction:(BOOL)isProduction
47
+ advertisingIdentifier:(NSString *)advertisingId {
48
+ JCOREConfiguration *config = [JCOREConfiguration shared];
49
+ [config configureWithAppKey:appKey ?: @""
50
+ channel:channel
51
+ isProduction:isProduction
52
+ advertisingIdentifier:advertisingId];
53
+
54
+ Class rctModuleClass = NSClassFromString(@"RCTJPushModule");
55
+ SEL ensureSelector = NSSelectorFromString(@"ensureSharedNativeObservers");
56
+ if (rctModuleClass != Nil && [rctModuleClass respondsToSelector:ensureSelector]) {
57
+ #pragma clang diagnostic push
58
+ #pragma clang diagnostic ignored "-Warc-performSelector-leaks"
59
+ [rctModuleClass performSelector:ensureSelector];
60
+ #pragma clang diagnostic pop
61
+ }
62
+
63
+ NSDictionary *remoteNotification = nil;
64
+ #if __has_include(<UIKit/UIKit.h>)
65
+ if ([launchingOption isKindOfClass:[NSDictionary class]]) {
66
+ remoteNotification = launchingOption[UIApplicationLaunchOptionsRemoteNotificationKey];
67
+ }
68
+ #endif
69
+ if (remoteNotification == nil && [launchingOption isKindOfClass:[NSDictionary class]]) {
70
+ remoteNotification = launchingOption[@"UIApplicationLaunchOptionsRemoteNotificationKey"];
71
+ }
72
+ if ([remoteNotification isKindOfClass:[NSDictionary class]]) {
73
+ [self handleRemoteNotification:remoteNotification];
74
+ [[NSNotificationCenter defaultCenter] postNotificationName:@"J_APNS_NOTIFICATION_OPENED_EVENT"
75
+ object:remoteNotification
76
+ userInfo:remoteNotification];
77
+ }
78
+
79
+ [[JCORETcpSession shared] startIfNeeded];
80
+ }
81
+
82
+ + (void)registerForRemoteNotificationTypes:(NSUInteger)types
83
+ categories:(NSSet *)categories {
84
+ [[JPUSHNotificationManager shared] registerTypes:types categories:categories];
85
+ }
86
+
87
+ + (void)registerForRemoteNotificationConfig:(JPUSHRegisterEntity *)config
88
+ delegate:(id<JPUSHRegisterDelegate>)delegate {
89
+ [[JPUSHNotificationManager shared] registerWithConfig:config delegate:delegate];
90
+ }
91
+
92
+ + (void)registerDeviceToken:(NSData *)deviceToken {
93
+ NSString *tokenHex = JPushHexFromData(deviceToken);
94
+ [JCOREConfiguration shared].deviceTokenHex = tokenHex;
95
+ [[JCORETcpSession shared] reportDeviceTokenIfNeeded];
96
+ }
97
+
98
+ + (void)registerVoipToken:(NSData *)voipToken {
99
+ NSString *voipHex = JPushHexFromData(voipToken);
100
+ [JCOREConfiguration shared].voipTokenHex = voipHex;
101
+ [[JCORETcpSession shared] reportVoipTokenIfNeeded];
102
+ }
103
+
104
+ + (void)registerLiveActivity:(NSString *)activityAttributes
105
+ pushToStartToken:(NSData *)pushToStartToken
106
+ completion:(JPUSHLiveActivityTokenCompletion)completion
107
+ seq:(NSInteger)seq {
108
+ NSString *tokenHex = JPushHexFromData(pushToStartToken);
109
+ NSData *body = [JCOREWireProtocol buildLiveActivityPayloadWithTokenHex:tokenHex
110
+ aliasOrAttributesType:activityAttributes ?: @""
111
+ isPushToken:NO];
112
+ [[JCORETcpSession shared] sendCommand:JCOREWireCommandLiveActivity
113
+ version:1
114
+ bodyData:body
115
+ completion:^(JCOREWireFrame *responseFrame, NSError *error) {
116
+ if (completion != nil) {
117
+ JCORELiveActivityResponse *parsed = [JCOREWireProtocol parseLiveActivityResponse:responseFrame];
118
+ NSInteger resCode = error != nil
119
+ ? error.code
120
+ : (parsed != nil ? parsed.mappedErrorCode : (NSInteger)responseFrame.statusCode);
121
+ dispatch_async(dispatch_get_main_queue(), ^{
122
+ completion(resCode, activityAttributes, pushToStartToken, seq);
123
+ });
124
+ }
125
+ }];
126
+ }
127
+
128
+ + (void)registerLiveActivity:(NSString *)liveActivityType
129
+ pushToken:(NSData *)pushToken
130
+ completion:(JPUSHLiveActivityTokenCompletion)completion
131
+ seq:(NSInteger)seq {
132
+ [self registerLiveActivityId:liveActivityType
133
+ pushToken:pushToken
134
+ completion:completion
135
+ seq:seq];
136
+ }
137
+
138
+ + (void)registerLiveActivityId:(NSString *)liveActivityId
139
+ pushToken:(NSData *)pushToken
140
+ completion:(JPUSHLiveActivityTokenCompletion)completion
141
+ seq:(NSInteger)seq {
142
+ NSString *tokenHex = JPushHexFromData(pushToken);
143
+ NSData *body = [JCOREWireProtocol buildLiveActivityPayloadWithTokenHex:tokenHex
144
+ aliasOrAttributesType:liveActivityId ?: @""
145
+ isPushToken:YES];
146
+ [[JCORETcpSession shared] sendCommand:JCOREWireCommandLiveActivity
147
+ version:1
148
+ bodyData:body
149
+ completion:^(JCOREWireFrame *responseFrame, NSError *error) {
150
+ if (completion != nil) {
151
+ JCORELiveActivityResponse *parsed = [JCOREWireProtocol parseLiveActivityResponse:responseFrame];
152
+ NSInteger resCode = error != nil
153
+ ? error.code
154
+ : (parsed != nil ? parsed.mappedErrorCode : (NSInteger)responseFrame.statusCode);
155
+ dispatch_async(dispatch_get_main_queue(), ^{
156
+ completion(resCode, liveActivityId, pushToken, seq);
157
+ });
158
+ }
159
+ }];
160
+ }
161
+
162
+ + (void)handleRemoteNotification:(NSDictionary *)remoteInfo {
163
+ if (![remoteInfo isKindOfClass:[NSDictionary class]]) {
164
+ return;
165
+ }
166
+ id msgIdObj = remoteInfo[@"_j_msgid"];
167
+ if ([msgIdObj respondsToSelector:@selector(unsignedLongLongValue)]) {
168
+ uint64_t msgId = [msgIdObj unsignedLongLongValue];
169
+ [[JCORETcpSession shared] sendReceiptForMessageType:4 messageId:msgId];
170
+ }
171
+ }
172
+
173
+ + (void)handleVoipNotification:(NSDictionary *)remoteInfo {
174
+ [self handleRemoteNotification:remoteInfo];
175
+ }
176
+
177
+ + (void)setNotiInMessageDelegate:(id<JPUSHNotiInMessageDelegate>)notiInMessageDelegate {
178
+ [JPUSHNotificationManager shared].notiInMessageDelegate = notiInMessageDelegate;
179
+ }
180
+
181
+ + (void)setInAppMessageDelegate:(id<JPUSHInAppMessageDelegate>)inAppMessageDelegate {
182
+ [JPUSHNotificationManager shared].inAppMessageDelegate = inAppMessageDelegate;
183
+ }
184
+
185
+ + (void)registerLbsGeofenceDelegate:(id<JPUSHGeofenceDelegate>)delegate
186
+ withLaunchOptions:(NSDictionary *)launchOptions {
187
+ (void)launchOptions;
188
+ [JPUSHNotificationManager shared].geofenceDelegate = delegate;
189
+ }
190
+
191
+ + (void)setGeofenceMaxCount:(NSInteger)count {
192
+ (void)count;
193
+ }
194
+
195
+ + (void)setGeofeneceMaxCount:(NSInteger)count {
196
+ (void)count;
197
+ }
198
+
199
+ + (void)setGeofenecePeriodForInside:(NSInteger)seconds {
200
+ (void)seconds;
201
+ }
202
+
203
+ + (void)removeGeofenceWithIdentifier:(NSString *)geofenceId {
204
+ (void)geofenceId;
205
+ }
206
+
207
+ + (void)setLocationEanable:(BOOL)isEanble {
208
+ (void)isEanble;
209
+ }
210
+
211
+ + (void)setLatitude:(double)latitude longitude:(double)longitude {
212
+ (void)latitude;
213
+ (void)longitude;
214
+ }
215
+
216
+ + (void)setLocation:(id)location {
217
+ (void)location;
218
+ }
219
+
220
+ + (void)pullInAppMessageWithPage:(NSString *)pageName
221
+ completion:(void (^)(NSInteger iResCode))completion {
222
+ (void)pageName;
223
+ if (completion != nil) {
224
+ dispatch_async(dispatch_get_main_queue(), ^{
225
+ completion(0);
226
+ });
227
+ }
228
+ }
229
+
230
+ + (void)addNotification:(JPushNotificationRequest *)request {
231
+ [[JPUSHNotificationManager shared] addNotification:request];
232
+ }
233
+
234
+ + (void)removeNotification:(JPushNotificationIdentifier *)identifier {
235
+ [[JPUSHNotificationManager shared] removeNotification:identifier];
236
+ }
237
+
238
+ + (void)findNotification:(JPushNotificationIdentifier *)identifier {
239
+ [[JPUSHNotificationManager shared] findNotification:identifier];
240
+ }
241
+
242
+ + (UILocalNotification *)setLocalNotification:(NSDate *)fireDate
243
+ alertBody:(NSString *)alertBody
244
+ badge:(int)badge
245
+ alertAction:(NSString *)alertAction
246
+ identifierKey:(NSString *)notificationKey
247
+ userInfo:(NSDictionary *)userInfo
248
+ soundName:(NSString *)soundName {
249
+ return [self setLocalNotification:fireDate
250
+ alertBody:alertBody
251
+ badge:badge
252
+ alertAction:alertAction
253
+ identifierKey:notificationKey
254
+ userInfo:userInfo
255
+ soundName:soundName
256
+ region:nil
257
+ regionTriggersOnce:YES
258
+ category:nil];
259
+ }
260
+
261
+ + (UILocalNotification *)setLocalNotification:(NSDate *)fireDate
262
+ alertBody:(NSString *)alertBody
263
+ badge:(int)badge
264
+ alertAction:(NSString *)alertAction
265
+ identifierKey:(NSString *)notificationKey
266
+ userInfo:(NSDictionary *)userInfo
267
+ soundName:(NSString *)soundName
268
+ region:(CLRegion *)region
269
+ regionTriggersOnce:(BOOL)regionTriggersOnce
270
+ category:(NSString *)category {
271
+ JPushNotificationRequest *request = [[JPushNotificationRequest alloc] init];
272
+ request.requestIdentifier = notificationKey.length > 0 ? notificationKey : [NSUUID UUID].UUIDString;
273
+
274
+ JPushNotificationContent *content = [[JPushNotificationContent alloc] init];
275
+ content.body = alertBody;
276
+ content.action = alertAction;
277
+ content.userInfo = userInfo;
278
+ content.sound = soundName;
279
+ content.categoryIdentifier = category;
280
+ if (badge >= 0) {
281
+ content.badge = @(badge);
282
+ }
283
+ request.content = content;
284
+
285
+ JPushNotificationTrigger *trigger = [[JPushNotificationTrigger alloc] init];
286
+ trigger.fireDate = fireDate;
287
+ trigger.region = region;
288
+ trigger.repeat = !regionTriggersOnce;
289
+ request.trigger = trigger;
290
+
291
+ [self addNotification:request];
292
+ return nil;
293
+ }
294
+
295
+ + (void)showLocalNotificationAtFront:(UILocalNotification *)notification
296
+ identifierKey:(NSString *)notificationKey {
297
+ (void)notification;
298
+ (void)notificationKey;
299
+ }
300
+
301
+ + (void)deleteLocalNotificationWithIdentifierKey:(NSString *)notificationKey {
302
+ if (notificationKey.length == 0) {
303
+ return;
304
+ }
305
+ JPushNotificationIdentifier *identifier = [[JPushNotificationIdentifier alloc] init];
306
+ identifier.identifiers = @[ notificationKey ];
307
+ [self removeNotification:identifier];
308
+ }
309
+
310
+ + (void)deleteLocalNotification:(UILocalNotification *)localNotification {
311
+ (void)localNotification;
312
+ }
313
+
314
+ + (NSArray *)findLocalNotificationWithIdentifier:(NSString *)notificationKey {
315
+ (void)notificationKey;
316
+ return @[];
317
+ }
318
+
319
+ + (void)clearAllLocalNotifications {
320
+ [self removeNotification:nil];
321
+ }
322
+
323
+ + (BOOL)setBadge:(NSInteger)value {
324
+ NSInteger clamped = MAX((NSInteger)0, value);
325
+ dispatch_async(dispatch_get_main_queue(), ^{
326
+ #if __has_include(<UIKit/UIKit.h>)
327
+ if ([NSBundle mainBundle].bundleIdentifier.length > 0) {
328
+ [UIApplication sharedApplication].applicationIconBadgeNumber = clamped;
329
+ }
330
+ #else
331
+ (void)clamped;
332
+ #endif
333
+ });
334
+ [[JCOREHttpReporter shared] reportBadgeValue:clamped completion:nil];
335
+ return YES;
336
+ }
337
+
338
+ + (void)resetBadge {
339
+ [self setBadge:0];
340
+ }
341
+
342
+ + (NSString *)registrationID {
343
+ JCOREConfiguration *config = [JCOREConfiguration shared];
344
+ return config.registrationID.length > 0 ? config.registrationID : @"";
345
+ }
346
+
347
+ + (void)registrationIDCompletionHandler:(void (^)(int resCode, NSString *registrationID))completionHandler {
348
+ if (completionHandler == nil) {
349
+ return;
350
+ }
351
+ JCOREConfiguration *config = [JCOREConfiguration shared];
352
+ NSString *regId = config.registrationID.length > 0 ? config.registrationID : @"";
353
+ int code = regId.length > 0 ? 0 : 1011;
354
+ dispatch_async(dispatch_get_main_queue(), ^{
355
+ completionHandler(code, regId);
356
+ });
357
+ }
358
+
359
+ + (void)setDebugMode {
360
+ [JCOREConfiguration shared].debugEnabled = YES;
361
+ [JCOREConfiguration shared].logOff = NO;
362
+ }
363
+
364
+ + (void)setLogOFF {
365
+ [JCOREConfiguration shared].logOff = YES;
366
+ [JCOREConfiguration shared].debugEnabled = NO;
367
+ }
368
+
369
+ + (void)crashLogON {
370
+ }
371
+
372
+ + (void)setCollectControl:(JPushCollectControl *)control {
373
+ (void)control;
374
+ }
375
+
376
+ + (void)setUserid:(NSString *)userId {
377
+ (void)userId;
378
+ }
379
+
380
+ + (void)setTimedaley:(NSInteger)time {
381
+ (void)time;
382
+ }
383
+
384
+ #pragma mark - Tags & Alias
385
+
386
+ + (NSSet *)filterValidTags:(NSSet *)tags {
387
+ if (![tags isKindOfClass:[NSSet class]]) {
388
+ return [NSSet set];
389
+ }
390
+ NSMutableSet<NSString *> *filtered = [NSMutableSet set];
391
+ for (id item in tags) {
392
+ if ([item isKindOfClass:[NSString class]] && [(NSString *)item length] > 0 && [(NSString *)item length] <= 40) {
393
+ [filtered addObject:item];
394
+ }
395
+ }
396
+ return filtered;
397
+ }
398
+
399
+ + (void)performTagOperationWithOperator:(NSString *)opString
400
+ tags:(NSSet<NSString *> *)tags
401
+ seq:(NSInteger)seq
402
+ completion:(JPUSHTagsOperationCompletion)completion {
403
+ JCOREConfiguration *config = [JCOREConfiguration shared];
404
+ NSSet<NSString *> *validInput = [self filterValidTags:tags];
405
+ NSMutableSet<NSString *> *updated = [NSMutableSet setWithSet:[config storedTags]];
406
+
407
+ if ([opString isEqualToString:@"add"]) {
408
+ [updated unionSet:validInput];
409
+ [config saveStoredTags:updated];
410
+ } else if ([opString isEqualToString:@"set"]) {
411
+ updated = [NSMutableSet setWithSet:validInput];
412
+ [config saveStoredTags:updated];
413
+ } else if ([opString isEqualToString:@"del"]) {
414
+ [updated minusSet:validInput];
415
+ [config saveStoredTags:updated];
416
+ } else if ([opString isEqualToString:@"clean"]) {
417
+ [updated removeAllObjects];
418
+ [config saveStoredTags:updated];
419
+ }
420
+
421
+ NSData *body = [JCOREWireProtocol buildTagOperationPayloadWithOperator:opString
422
+ tags:validInput.allObjects
423
+ currPage:1];
424
+ [[JCORETcpSession shared] sendCommand:JCOREWireCommandTagOperation
425
+ version:1
426
+ bodyData:body
427
+ completion:^(JCOREWireFrame *responseFrame, NSError *error) {
428
+ if (completion != nil) {
429
+ NSDictionary *respJson = [JCOREWireProtocol parseJsonBodyFromFrame:responseFrame];
430
+ NSInteger resCode = error != nil
431
+ ? error.code
432
+ : (respJson[@"code"] != nil ? [respJson[@"code"] integerValue] : (NSInteger)responseFrame.statusCode);
433
+ NSSet<NSString *> *resultTags = [opString isEqualToString:@"get"] ? [updated copy] : [validInput copy];
434
+ if ([opString isEqualToString:@"get"] && [respJson[@"tags"] isKindOfClass:[NSArray class]]) {
435
+ resultTags = [NSSet setWithArray:respJson[@"tags"]];
436
+ [config saveStoredTags:resultTags];
437
+ }
438
+ dispatch_async(dispatch_get_main_queue(), ^{
439
+ completion(resCode, resultTags, seq);
440
+ });
441
+ }
442
+ }];
443
+ }
444
+
445
+ + (void)setTags:(NSSet<NSString *> *)tags
446
+ completion:(JPUSHTagsOperationCompletion)completion
447
+ seq:(NSInteger)seq {
448
+ [self performTagOperationWithOperator:@"set" tags:tags seq:seq completion:completion];
449
+ }
450
+
451
+ + (void)addTags:(NSSet<NSString *> *)tags
452
+ completion:(JPUSHTagsOperationCompletion)completion
453
+ seq:(NSInteger)seq {
454
+ [self performTagOperationWithOperator:@"add" tags:tags seq:seq completion:completion];
455
+ }
456
+
457
+ + (void)deleteTags:(NSSet<NSString *> *)tags
458
+ completion:(JPUSHTagsOperationCompletion)completion
459
+ seq:(NSInteger)seq {
460
+ [self performTagOperationWithOperator:@"del" tags:tags seq:seq completion:completion];
461
+ }
462
+
463
+ + (void)cleanTags:(JPUSHTagsOperationCompletion)completion
464
+ seq:(NSInteger)seq {
465
+ [self performTagOperationWithOperator:@"clean" tags:[NSSet set] seq:seq completion:completion];
466
+ }
467
+
468
+ + (void)getAllTags:(JPUSHTagsOperationCompletion)completion
469
+ seq:(NSInteger)seq {
470
+ [self performTagOperationWithOperator:@"get" tags:[NSSet set] seq:seq completion:completion];
471
+ }
472
+
473
+ + (void)validTag:(NSString *)tag
474
+ completion:(JPUSHTagValidOperationCompletion)completion
475
+ seq:(NSInteger)seq {
476
+ NSSet<NSString *> *stored = [[JCOREConfiguration shared] storedTags];
477
+ BOOL localBind = tag.length > 0 && [stored containsObject:tag];
478
+ NSSet<NSString *> *tagSet = tag.length > 0 ? [NSSet setWithObject:tag] : [NSSet set];
479
+ NSData *body = [JCOREWireProtocol buildTagOperationPayloadWithOperator:@"valid"
480
+ tags:(tag.length > 0 ? @[ tag ] : @[])
481
+ currPage:1];
482
+ [[JCORETcpSession shared] sendCommand:JCOREWireCommandTagOperation
483
+ version:1
484
+ bodyData:body
485
+ completion:^(JCOREWireFrame *responseFrame, NSError *error) {
486
+ if (completion != nil) {
487
+ NSDictionary *respJson = [JCOREWireProtocol parseJsonBodyFromFrame:responseFrame];
488
+ NSInteger resCode = error != nil
489
+ ? error.code
490
+ : (respJson[@"code"] != nil ? [respJson[@"code"] integerValue] : (NSInteger)responseFrame.statusCode);
491
+ BOOL isBind = respJson[@"bind"] != nil ? [respJson[@"bind"] boolValue] : localBind;
492
+ dispatch_async(dispatch_get_main_queue(), ^{
493
+ completion(resCode, tagSet, seq, isBind);
494
+ });
495
+ }
496
+ }];
497
+ }
498
+
499
+ + (void)performAliasOperationWithOperator:(NSString *)opString
500
+ alias:(NSString *)alias
501
+ seq:(NSInteger)seq
502
+ completion:(JPUSHAliasOperationCompletion)completion {
503
+ JCOREConfiguration *config = [JCOREConfiguration shared];
504
+ NSString *resultAlias = alias ?: @"";
505
+ if ([opString isEqualToString:@"set"]) {
506
+ [config saveStoredAlias:resultAlias];
507
+ } else if ([opString isEqualToString:@"del"]) {
508
+ [config saveStoredAlias:nil];
509
+ resultAlias = @"";
510
+ } else if ([opString isEqualToString:@"get"]) {
511
+ resultAlias = [config storedAlias] ?: @"";
512
+ }
513
+
514
+ NSData *body = [JCOREWireProtocol buildAliasOperationPayloadWithOperator:opString
515
+ alias:resultAlias];
516
+ [[JCORETcpSession shared] sendCommand:JCOREWireCommandAliasOperation
517
+ version:1
518
+ bodyData:body
519
+ completion:^(JCOREWireFrame *responseFrame, NSError *error) {
520
+ if (completion != nil) {
521
+ NSDictionary *respJson = [JCOREWireProtocol parseJsonBodyFromFrame:responseFrame];
522
+ NSInteger resCode = error != nil
523
+ ? error.code
524
+ : (respJson[@"code"] != nil ? [respJson[@"code"] integerValue] : (NSInteger)responseFrame.statusCode);
525
+ NSString *finalAlias = resultAlias;
526
+ if ([opString isEqualToString:@"get"] && [respJson[@"alias"] isKindOfClass:[NSString class]]) {
527
+ finalAlias = respJson[@"alias"];
528
+ [config saveStoredAlias:finalAlias];
529
+ }
530
+ dispatch_async(dispatch_get_main_queue(), ^{
531
+ completion(resCode, finalAlias, seq);
532
+ });
533
+ }
534
+ }];
535
+ }
536
+
537
+ + (void)setAlias:(NSString *)alias
538
+ completion:(JPUSHAliasOperationCompletion)completion
539
+ seq:(NSInteger)seq {
540
+ [self performAliasOperationWithOperator:@"set" alias:alias seq:seq completion:completion];
541
+ }
542
+
543
+ + (void)deleteAlias:(JPUSHAliasOperationCompletion)completion
544
+ seq:(NSInteger)seq {
545
+ [self performAliasOperationWithOperator:@"del" alias:@"" seq:seq completion:completion];
546
+ }
547
+
548
+ + (void)getAlias:(JPUSHAliasOperationCompletion)completion
549
+ seq:(NSInteger)seq {
550
+ [self performAliasOperationWithOperator:@"get" alias:@"" seq:seq completion:completion];
551
+ }
552
+
553
+ + (void)setTags:(NSSet *)tags
554
+ alias:(NSString *)alias
555
+ callbackSelector:(SEL)cbSelector
556
+ target:(id)theTarget {
557
+ (void)cbSelector;
558
+ (void)theTarget;
559
+ if (tags != nil) {
560
+ [self setTags:tags completion:nil seq:0];
561
+ }
562
+ if (alias != nil) {
563
+ [self setAlias:alias completion:nil seq:0];
564
+ }
565
+ }
566
+
567
+ + (void)setTags:(NSSet *)tags
568
+ alias:(NSString *)alias
569
+ callbackSelector:(SEL)cbSelector
570
+ object:(id)theTarget {
571
+ [self setTags:tags alias:alias callbackSelector:cbSelector target:theTarget];
572
+ }
573
+
574
+ + (void)setTags:(NSSet *)tags
575
+ callbackSelector:(SEL)cbSelector
576
+ object:(id)theTarget {
577
+ [self setTags:tags alias:nil callbackSelector:cbSelector target:theTarget];
578
+ }
579
+
580
+ + (void)setTags:(NSSet *)tags
581
+ alias:(NSString *)alias
582
+ fetchCompletionHandle:(void (^)(int iResCode, NSSet *iTags, NSString *iAlias))completionHandler {
583
+ if (tags != nil) {
584
+ [self setTags:tags completion:nil seq:0];
585
+ }
586
+ if (alias != nil) {
587
+ [self setAlias:alias completion:nil seq:0];
588
+ }
589
+ if (completionHandler != nil) {
590
+ dispatch_async(dispatch_get_main_queue(), ^{
591
+ completionHandler(0, tags, alias);
592
+ });
593
+ }
594
+ }
595
+
596
+ + (void)setTags:(NSSet *)tags
597
+ aliasInbackground:(NSString *)alias {
598
+ [self setTags:tags alias:alias fetchCompletionHandle:nil];
599
+ }
600
+
601
+ + (void)setAlias:(NSString *)alias
602
+ callbackSelector:(SEL)cbSelector
603
+ object:(id)theTarget {
604
+ [self setTags:nil alias:alias callbackSelector:cbSelector target:theTarget];
605
+ }
606
+
607
+ #pragma mark - Properties & Mobile Number
608
+
609
+ + (void)setProperties:(NSDictionary *)properties
610
+ completion:(JPUSHPropertiesOperationCompletion)completion
611
+ seq:(NSInteger)seq {
612
+ JCOREConfiguration *config = [JCOREConfiguration shared];
613
+ NSMutableDictionary *merged = [NSMutableDictionary dictionaryWithDictionary:[config storedProperties]];
614
+ if ([properties isKindOfClass:[NSDictionary class]]) {
615
+ [merged addEntriesFromDictionary:properties];
616
+ }
617
+ [config saveStoredProperties:merged];
618
+
619
+ NSData *body = [JCOREWireProtocol buildUserPropertiesPayloadWithOperator:@"set"
620
+ properties:(properties ?: @{})];
621
+ [[JCORETcpSession shared] sendCommand:JCOREWireCommandPropertyOperation
622
+ version:1
623
+ bodyData:body
624
+ completion:^(JCOREWireFrame *responseFrame, NSError *error) {
625
+ if (completion != nil) {
626
+ NSDictionary *respJson = [JCOREWireProtocol parseJsonBodyFromFrame:responseFrame];
627
+ NSInteger resCode = error != nil
628
+ ? error.code
629
+ : (respJson[@"code"] != nil ? [respJson[@"code"] integerValue] : (NSInteger)responseFrame.statusCode);
630
+ dispatch_async(dispatch_get_main_queue(), ^{
631
+ completion(resCode, properties ?: @{}, seq);
632
+ });
633
+ }
634
+ }];
635
+ }
636
+
637
+ + (void)deleteProperties:(NSSet<NSString *> *)keys
638
+ completion:(JPUSHPropertiesOperationCompletion)completion
639
+ seq:(NSInteger)seq {
640
+ JCOREConfiguration *config = [JCOREConfiguration shared];
641
+ NSMutableDictionary *merged = [NSMutableDictionary dictionaryWithDictionary:[config storedProperties]];
642
+ NSMutableDictionary *delDict = [NSMutableDictionary dictionary];
643
+ for (NSString *key in keys) {
644
+ if ([key isKindOfClass:[NSString class]]) {
645
+ [merged removeObjectForKey:key];
646
+ delDict[key] = @"";
647
+ }
648
+ }
649
+ [config saveStoredProperties:merged];
650
+
651
+ NSData *body = [JCOREWireProtocol buildUserPropertiesPayloadWithOperator:@"del"
652
+ properties:delDict];
653
+ [[JCORETcpSession shared] sendCommand:JCOREWireCommandPropertyOperation
654
+ version:1
655
+ bodyData:body
656
+ completion:^(JCOREWireFrame *responseFrame, NSError *error) {
657
+ if (completion != nil) {
658
+ NSDictionary *respJson = [JCOREWireProtocol parseJsonBodyFromFrame:responseFrame];
659
+ NSInteger resCode = error != nil
660
+ ? error.code
661
+ : (respJson[@"code"] != nil ? [respJson[@"code"] integerValue] : (NSInteger)responseFrame.statusCode);
662
+ dispatch_async(dispatch_get_main_queue(), ^{
663
+ completion(resCode, [merged copy], seq);
664
+ });
665
+ }
666
+ }];
667
+ }
668
+
669
+ + (void)cleanProperties:(JPUSHPropertiesOperationCompletion)completion
670
+ seq:(NSInteger)seq {
671
+ [[JCOREConfiguration shared] saveStoredProperties:@{}];
672
+ NSData *body = [JCOREWireProtocol buildUserPropertiesPayloadWithOperator:@"clean"
673
+ properties:@{}];
674
+ [[JCORETcpSession shared] sendCommand:JCOREWireCommandPropertyOperation
675
+ version:1
676
+ bodyData:body
677
+ completion:^(JCOREWireFrame *responseFrame, NSError *error) {
678
+ if (completion != nil) {
679
+ NSDictionary *respJson = [JCOREWireProtocol parseJsonBodyFromFrame:responseFrame];
680
+ NSInteger resCode = error != nil
681
+ ? error.code
682
+ : (respJson[@"code"] != nil ? [respJson[@"code"] integerValue] : (NSInteger)responseFrame.statusCode);
683
+ dispatch_async(dispatch_get_main_queue(), ^{
684
+ completion(resCode, @{}, seq);
685
+ });
686
+ }
687
+ }];
688
+ }
689
+
690
+ + (void)setMobileNumber:(NSString *)mobileNumber
691
+ completion:(void (^)(NSError *error))completion {
692
+ [[JCOREConfiguration shared] saveStoredMobileNumber:mobileNumber];
693
+ NSData *body = [JCOREWireProtocol buildMobileNumberPayload:mobileNumber ?: @""];
694
+ [[JCORETcpSession shared] sendCommand:JCOREWireCommandMobileNumber
695
+ version:0
696
+ bodyData:body
697
+ completion:^(JCOREWireFrame *responseFrame, NSError *error) {
698
+ if (completion != nil) {
699
+ NSError *finalError = error;
700
+ if (finalError == nil && responseFrame != nil && responseFrame.statusCode != 0) {
701
+ finalError = [NSError errorWithDomain:@"cn.jiguang.jpush"
702
+ code:responseFrame.statusCode
703
+ userInfo:nil];
704
+ }
705
+ dispatch_async(dispatch_get_main_queue(), ^{
706
+ completion(finalError);
707
+ });
708
+ }
709
+ }];
710
+ }
711
+
712
+ #pragma mark - Page Analytics & Push Switch
713
+
714
+ + (void)startLogPageView:(NSString *)pageName {
715
+ (void)pageName;
716
+ }
717
+
718
+ + (void)stopLogPageView:(NSString *)pageName {
719
+ (void)pageName;
720
+ }
721
+
722
+ + (void)beginLogPageView:(NSString *)pageName duration:(int)seconds {
723
+ (void)pageName;
724
+ (void)seconds;
725
+ }
726
+
727
+ + (void)pageEnterTo:(NSString *)pageName {
728
+ (void)pageName;
729
+ }
730
+
731
+ + (void)pageLeave:(NSString *)pageName {
732
+ (void)pageName;
733
+ }
734
+
735
+ + (void)requestNotificationAuthorization:(void (^)(JPAuthorizationStatus status))completion {
736
+ [[JPUSHNotificationManager shared] requestAuthorization:completion];
737
+ }
738
+
739
+ + (void)openSettingsForNotification:(void (^)(BOOL success))completionHandler {
740
+ [[JPUSHNotificationManager shared] openNotificationSettings:completionHandler];
741
+ }
742
+
743
+ + (void)setHeartBeatTimeInterval:(NSInteger)interval {
744
+ NSInteger clamped = MIN(MAX(interval, (NSInteger)30), (NSInteger)290);
745
+ [JCOREConfiguration shared].heartbeatInterval = (NSTimeInterval)clamped;
746
+ }
747
+
748
+ + (void)setPushEnable:(BOOL)isEnable completion:(void (^)(NSInteger iResCode))completion {
749
+ if (isEnable) {
750
+ [self turnOnPush];
751
+ } else {
752
+ [self turnOFFPush];
753
+ }
754
+ if (completion != nil) {
755
+ dispatch_async(dispatch_get_main_queue(), ^{
756
+ completion(0);
757
+ });
758
+ }
759
+ }
760
+
761
+ + (void)setBackgroundEnable:(BOOL)isEnable {
762
+ (void)isEnable;
763
+ }
764
+
765
+ + (void)setSmartPushEnable:(BOOL)isEnable {
766
+ (void)isEnable;
767
+ }
768
+
769
+ + (void)setDataInsightsEnable:(BOOL)isEnable {
770
+ (void)isEnable;
771
+ }
772
+
773
+ + (void)turnONPush {
774
+ [JCOREConfiguration shared].pushStopped = NO;
775
+ [[JCORETcpSession shared] startIfNeeded];
776
+ NSData *body = [JCOREWireProtocol buildPushControlPayloadWithStopped:NO];
777
+ [[JCORETcpSession shared] sendCommand:JCOREWireCommandPushCtrl version:1 bodyData:body completion:nil];
778
+ }
779
+
780
+ + (void)turnOnPush {
781
+ [self turnONPush];
782
+ }
783
+
784
+ + (void)turnOFFPush {
785
+ [JCOREConfiguration shared].pushStopped = YES;
786
+ if ([[JCORETcpSession shared] isConnected] && [[JCORETcpSession shared] isLoggedIn]) {
787
+ NSData *body = [JCOREWireProtocol buildPushControlPayloadWithStopped:YES];
788
+ [[JCORETcpSession shared] sendCommand:JCOREWireCommandPushCtrl version:1 bodyData:body completion:nil];
789
+ } else {
790
+ [[JCORETcpSession shared] disconnect];
791
+ }
792
+ }
793
+
794
+ @end