@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.
- package/LICENSE +21 -0
- package/README.md +39 -2
- package/ReactNativeJpush.podspec +66 -0
- package/android/CMakeLists.txt +24 -0
- package/android/build.gradle +143 -0
- package/android/fcm/build.gradle +29 -0
- package/android/fcm/consumer-rules.pro +2 -0
- package/android/fcm/src/main/AndroidManifest.xml +16 -0
- package/android/fcm/src/main/java/com/onekey/jpush/fcm/FcmMessagingService.java +72 -0
- package/android/fcm/src/main/java/com/onekey/jpush/fcm/FcmPushManager.java +69 -0
- package/android/gradle.properties +4 -0
- package/android/src/main/AndroidManifest.xml +143 -0
- package/android/src/main/cpp/cpp-adapter.cpp +6 -0
- package/android/src/main/java/cn/android/service/JTransitActivity.java +19 -0
- package/android/src/main/java/cn/jiguang/android/BuildConfig.java +10 -0
- package/android/src/main/java/cn/jiguang/android/IDataShare.java +190 -0
- package/android/src/main/java/cn/jiguang/api/BaseLogger.java +82 -0
- package/android/src/main/java/cn/jiguang/api/JAction.java +22 -0
- package/android/src/main/java/cn/jiguang/api/JActionExtra.java +21 -0
- package/android/src/main/java/cn/jiguang/api/JAnalyticsAction.java +11 -0
- package/android/src/main/java/cn/jiguang/api/JCoreInterface.java +228 -0
- package/android/src/main/java/cn/jiguang/api/JCoreManager.java +156 -0
- package/android/src/main/java/cn/jiguang/api/JDispatchAction.java +66 -0
- package/android/src/main/java/cn/jiguang/api/MultiSpHelper.java +114 -0
- package/android/src/main/java/cn/jiguang/api/ReportCallBack.java +9 -0
- package/android/src/main/java/cn/jiguang/api/SdkType.java +13 -0
- package/android/src/main/java/cn/jiguang/api/utils/JCollectionAuth.java +23 -0
- package/android/src/main/java/cn/jiguang/core/JCoreCrypto.java +545 -0
- package/android/src/main/java/cn/jiguang/core/JCoreStorage.java +737 -0
- package/android/src/main/java/cn/jiguang/core/JCoreTcpEngine.java +1395 -0
- package/android/src/main/java/cn/jiguang/core/JCoreWireCodec.java +1716 -0
- package/android/src/main/java/cn/jiguang/internal/ActionManager.java +63 -0
- package/android/src/main/java/cn/jiguang/internal/JConstants.java +61 -0
- package/android/src/main/java/cn/jiguang/internal/JCoreHelperAction.java +12 -0
- package/android/src/main/java/cn/jiguang/internal/JCoreInternalHelper.java +102 -0
- package/android/src/main/java/cn/jiguang/net/DefaultHostVerifier.java +40 -0
- package/android/src/main/java/cn/jiguang/net/HttpRequest.java +78 -0
- package/android/src/main/java/cn/jiguang/net/HttpResponse.java +48 -0
- package/android/src/main/java/cn/jiguang/net/HttpUtils.java +106 -0
- package/android/src/main/java/cn/jiguang/plugins/core/JCoreModule.java +91 -0
- package/android/src/main/java/cn/jiguang/plugins/core/JCorePackage.java +27 -0
- package/android/src/main/java/cn/jiguang/plugins/push/JPushModule.java +773 -0
- package/android/src/main/java/cn/jiguang/plugins/push/JPushPackage.java +25 -0
- package/android/src/main/java/cn/jiguang/plugins/push/common/JConstants.java +88 -0
- package/android/src/main/java/cn/jiguang/plugins/push/common/JLogger.java +122 -0
- package/android/src/main/java/cn/jiguang/plugins/push/helper/JPushHelper.java +710 -0
- package/android/src/main/java/cn/jiguang/plugins/push/receiver/JPushBroadcastReceiver.java +37 -0
- package/android/src/main/java/cn/jiguang/plugins/push/receiver/JPushModuleReceiver.java +264 -0
- package/android/src/main/java/cn/jiguang/plugins/service/JCoreModuleService.java +7 -0
- package/android/src/main/java/cn/jpush/android/api/BasicPushNotificationBuilder.java +83 -0
- package/android/src/main/java/cn/jpush/android/api/CallBackParams.java +50 -0
- package/android/src/main/java/cn/jpush/android/api/CmdMessage.java +33 -0
- package/android/src/main/java/cn/jpush/android/api/CustomMessage.java +28 -0
- package/android/src/main/java/cn/jpush/android/api/CustomPushNotificationBuilder.java +81 -0
- package/android/src/main/java/cn/jpush/android/api/DefaultPushNotificationBuilder.java +90 -0
- package/android/src/main/java/cn/jpush/android/api/InAppSlotParams.java +65 -0
- package/android/src/main/java/cn/jpush/android/api/InstrumentedActivity.java +17 -0
- package/android/src/main/java/cn/jpush/android/api/InstrumentedListActivity.java +17 -0
- package/android/src/main/java/cn/jpush/android/api/JPushInterface.java +490 -0
- package/android/src/main/java/cn/jpush/android/api/JPushMessage.java +121 -0
- package/android/src/main/java/cn/jpush/android/api/JThirdPlatFormInterface.java +247 -0
- package/android/src/main/java/cn/jpush/android/api/MultiActionsNotificationBuilder.java +72 -0
- package/android/src/main/java/cn/jpush/android/api/NotificationCustomButton.java +50 -0
- package/android/src/main/java/cn/jpush/android/api/NotificationMessage.java +67 -0
- package/android/src/main/java/cn/jpush/android/api/PushNotificationBuilder.java +13 -0
- package/android/src/main/java/cn/jpush/android/api/TagAliasCallback.java +8 -0
- package/android/src/main/java/cn/jpush/android/data/JPushCollectControl.java +96 -0
- package/android/src/main/java/cn/jpush/android/data/JPushConfig.java +79 -0
- package/android/src/main/java/cn/jpush/android/data/JPushConfigEx.java +41 -0
- package/android/src/main/java/cn/jpush/android/data/JPushLocalNotification.java +155 -0
- package/android/src/main/java/cn/jpush/android/helper/JCoreHelper.java +70 -0
- package/android/src/main/java/cn/jpush/android/helper/Logger.java +82 -0
- package/android/src/main/java/cn/jpush/android/local/ActionHelper.java +1277 -0
- package/android/src/main/java/cn/jpush/android/local/ActivityLifeCallBack.java +47 -0
- package/android/src/main/java/cn/jpush/android/local/JPushAction.java +67 -0
- package/android/src/main/java/cn/jpush/android/local/JPushConstants.java +34 -0
- package/android/src/main/java/cn/jpush/android/local/JPushResponse.java +26 -0
- package/android/src/main/java/cn/jpush/android/local/ProxyActivityAction.java +34 -0
- package/android/src/main/java/cn/jpush/android/service/AlarmReceiver.java +15 -0
- package/android/src/main/java/cn/jpush/android/service/BActivity.java +19 -0
- package/android/src/main/java/cn/jpush/android/service/DActivity.java +19 -0
- package/android/src/main/java/cn/jpush/android/service/DaemonService.java +17 -0
- package/android/src/main/java/cn/jpush/android/service/DataProvider.java +136 -0
- package/android/src/main/java/cn/jpush/android/service/DataShare.java +129 -0
- package/android/src/main/java/cn/jpush/android/service/DownloadProvider.java +139 -0
- package/android/src/main/java/cn/jpush/android/service/InitProvider.java +48 -0
- package/android/src/main/java/cn/jpush/android/service/JCommonService.java +79 -0
- package/android/src/main/java/cn/jpush/android/service/JNotifyActivity.java +28 -0
- package/android/src/main/java/cn/jpush/android/service/JPushMessageReceiver.java +94 -0
- package/android/src/main/java/cn/jpush/android/service/PushReceiver.java +26 -0
- package/android/src/main/java/cn/jpush/android/service/PushService.java +28 -0
- package/android/src/main/java/cn/jpush/android/service/SchedulerReceiver.java +17 -0
- package/android/src/main/java/cn/jpush/android/service/TagAliasReceiver.java +11 -0
- package/android/src/main/java/cn/jpush/android/service/WakedResultReceiver.java +24 -0
- package/android/src/main/java/cn/jpush/android/ui/FullScreenView.java +11 -0
- package/android/src/main/java/cn/jpush/android/ui/PopWinActivity.java +16 -0
- package/android/src/main/java/cn/jpush/android/ui/PushActivity.java +27 -0
- package/android/src/main/java/cn/jpush/android/ui/RoundedImageView.java +63 -0
- package/android/src/main/java/cn/jpush/android/ui/ShadowViewCard.java +56 -0
- package/android/src/main/java/cn/jpush/android/ups/ICallbackResult.java +5 -0
- package/android/src/main/java/cn/jpush/android/ups/JPushUPSManager.java +37 -0
- package/android/src/main/java/cn/jpush/android/ups/TokenResult.java +47 -0
- package/android/src/main/java/cn/jpush/android/ups/UPSRegisterCallBack.java +4 -0
- package/android/src/main/java/cn/jpush/android/ups/UPSTurnCallBack.java +4 -0
- package/android/src/main/java/cn/jpush/android/ups/UPSUnRegisterCallBack.java +4 -0
- package/android/src/main/java/com/margelo/nitro/reactnativejpush/ReactNativeJpush.kt +455 -0
- package/android/src/main/java/com/margelo/nitro/reactnativejpush/ReactNativeJpushPackage.kt +50 -0
- package/android/src/main/res/values/jpush_string.xml +7 -0
- package/android/src/main/res/values/jpush_style.xml +22 -0
- package/android/src/test/java/com/margelo/nitro/reactnativejpush/ReactNativeJpushProtocolTest.java +1016 -0
- package/ios/ReactNativeJpush.swift +522 -0
- package/ios/bridge/RCTJCoreModule.h +5 -0
- package/ios/bridge/RCTJCoreModule.m +31 -0
- package/ios/bridge/RCTJPushEventQueue.h +14 -0
- package/ios/bridge/RCTJPushEventQueue.m +23 -0
- package/ios/bridge/RCTJPushModule.h +37 -0
- package/ios/bridge/RCTJPushModule.m +1165 -0
- package/ios/include/JCOREService.h +3 -0
- package/ios/include/JGCOREAPI.h +14 -0
- package/ios/include/JGInforCollectionAuth.h +17 -0
- package/ios/include/JGInforCollectionAuthItems.h +2 -0
- package/ios/include/JGPushNotificationTrigger.h +2 -0
- package/ios/include/JPUSHService.h +359 -0
- package/ios/jcore/JCOREConfiguration.h +141 -0
- package/ios/jcore/JCOREConfiguration.m +703 -0
- package/ios/jcore/JCORECrypto.h +73 -0
- package/ios/jcore/JCORECrypto.m +649 -0
- package/ios/jcore/JCORESisResolver.h +56 -0
- package/ios/jcore/JCORESisResolver.m +525 -0
- package/ios/jcore/JCORETcpSession.h +42 -0
- package/ios/jcore/JCORETcpSession.m +956 -0
- package/ios/jcore/JCOREWireProtocol.h +274 -0
- package/ios/jcore/JCOREWireProtocol.m +1453 -0
- package/ios/jpush/JPUSHModels.m +214 -0
- package/ios/jpush/JPUSHNotificationManager.h +34 -0
- package/ios/jpush/JPUSHNotificationManager.m +360 -0
- package/ios/jpush/JPUSHService.m +794 -0
- package/ios/tests/ReactNativeJpushTests.m +148 -0
- package/lib/module/ReactNativeJpush.nitro.js +4 -0
- package/lib/module/ReactNativeJpush.nitro.js.map +1 -0
- package/lib/module/index.js +801 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/ReactNativeJpush.nitro.d.ts +60 -0
- package/lib/typescript/src/ReactNativeJpush.nitro.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +235 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/nitro.json +23 -0
- package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__string_std__string.hpp +76 -0
- package/nitrogen/generated/android/c++/JHybridReactNativeJpushSpec.cpp +310 -0
- package/nitrogen/generated/android/c++/JHybridReactNativeJpushSpec.hpp +115 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativejpush/Func_void_bool.kt +78 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativejpush/Func_void_std__string_std__string.kt +78 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativejpush/HybridReactNativeJpushSpec.kt +274 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativejpush/reactnativejpushOnLoad.kt +35 -0
- package/nitrogen/generated/android/reactnativejpush+autolinking.cmake +81 -0
- package/nitrogen/generated/android/reactnativejpush+autolinking.gradle +27 -0
- package/nitrogen/generated/android/reactnativejpushOnLoad.cpp +58 -0
- package/nitrogen/generated/android/reactnativejpushOnLoad.hpp +34 -0
- package/nitrogen/generated/ios/ReactNativeJpush+autolinking.rb +62 -0
- package/nitrogen/generated/ios/ReactNativeJpush-Swift-Cxx-Bridge.cpp +49 -0
- package/nitrogen/generated/ios/ReactNativeJpush-Swift-Cxx-Bridge.hpp +147 -0
- package/nitrogen/generated/ios/ReactNativeJpush-Swift-Cxx-Umbrella.hpp +46 -0
- package/nitrogen/generated/ios/ReactNativeJpushAutolinking.mm +33 -0
- package/nitrogen/generated/ios/ReactNativeJpushAutolinking.swift +26 -0
- package/nitrogen/generated/ios/c++/HybridReactNativeJpushSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridReactNativeJpushSpecSwift.hpp +402 -0
- package/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string_std__string.swift +46 -0
- package/nitrogen/generated/ios/swift/HybridReactNativeJpushSpec.swift +107 -0
- package/nitrogen/generated/ios/swift/HybridReactNativeJpushSpec_cxx.swift +723 -0
- package/nitrogen/generated/shared/c++/HybridReactNativeJpushSpec.cpp +73 -0
- package/nitrogen/generated/shared/c++/HybridReactNativeJpushSpec.hpp +116 -0
- package/package.json +174 -4
- package/src/ReactNativeJpush.nitro.ts +93 -0
- 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
|