react-native-idosdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/IdoSdkRN.podspec +27 -0
  2. package/README.md +96 -0
  3. package/android/build.gradle +57 -0
  4. package/android/libs/getui-3.3.11.0.jar +0 -0
  5. package/android/libs/gtc-3.2.18.0.jar +0 -0
  6. package/android/proguard.txt +37 -0
  7. package/android/src/main/AndroidManifest.xml +100 -0
  8. package/android/src/main/java/com/getui/reactnativegetui/DemoPushService.java +7 -0
  9. package/android/src/main/java/com/getui/reactnativegetui/GetuiLogger.java +26 -0
  10. package/android/src/main/java/com/getui/reactnativegetui/GetuiModule.java +346 -0
  11. package/android/src/main/java/com/getui/reactnativegetui/GetuiPackage.java +42 -0
  12. package/android/src/main/java/com/getui/reactnativegetui/PushIntentService.java +110 -0
  13. package/document/android.md +112 -0
  14. package/document/iOS.md +299 -0
  15. package/document/img/ios_1.jpeg +0 -0
  16. package/gradlew +160 -0
  17. package/gradlew.bat +90 -0
  18. package/index.d.ts +32 -0
  19. package/index.js +120 -0
  20. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/Info.plist +55 -0
  21. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/_CodeSignature/CodeDirectory +0 -0
  22. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/_CodeSignature/CodeRequirements +0 -0
  23. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/_CodeSignature/CodeRequirements-1 +0 -0
  24. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/_CodeSignature/CodeResources +548 -0
  25. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/_CodeSignature/CodeSignature +0 -0
  26. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/GTCountSDK +0 -0
  27. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/Headers/GTCountSDK.h +145 -0
  28. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/Info.plist +0 -0
  29. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/Modules/module.modulemap +5 -0
  30. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/PrivacyInfo.xcprivacy +44 -0
  31. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/_CodeSignature/CodeDirectory +0 -0
  32. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/_CodeSignature/CodeRequirements +0 -0
  33. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/_CodeSignature/CodeRequirements-1 +0 -0
  34. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/_CodeSignature/CodeResources +147 -0
  35. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/_CodeSignature/CodeSignature +0 -0
  36. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/GTCountSDK +0 -0
  37. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/Headers/GTCountSDK.h +145 -0
  38. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/Info.plist +52 -0
  39. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/Modules/module.modulemap +5 -0
  40. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/PrivacyInfo.xcprivacy +44 -0
  41. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/_CodeSignature/CodeDirectory +0 -0
  42. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/_CodeSignature/CodeRequirements +0 -0
  43. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/_CodeSignature/CodeRequirements-1 +0 -0
  44. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/_CodeSignature/CodeResources +147 -0
  45. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/_CodeSignature/CodeSignature +0 -0
  46. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/GTCountSDK +0 -0
  47. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/Headers/GTCountSDK.h +145 -0
  48. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/Info.plist +0 -0
  49. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/Modules/module.modulemap +5 -0
  50. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/PrivacyInfo.xcprivacy +44 -0
  51. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/_CodeSignature/CodeDirectory +0 -0
  52. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/_CodeSignature/CodeRequirements +0 -0
  53. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/_CodeSignature/CodeRequirements-1 +0 -0
  54. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/_CodeSignature/CodeResources +147 -0
  55. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/_CodeSignature/CodeSignature +0 -0
  56. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/RCTGetuiIdoModule.h +23 -0
  57. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/RCTGetuiIdoModule.m +279 -0
  58. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule.xcodeproj/project.pbxproj +288 -0
  59. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  60. package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  61. package/package.json +55 -0
  62. package/postInstall.js +79 -0
@@ -0,0 +1,27 @@
1
+ require 'json'
2
+ pjson = JSON.parse(File.read('package.json'))
3
+
4
+ Pod::Spec.new do |s|
5
+
6
+ s.name = "IdoSdkRN"
7
+ s.version = pjson["version"]
8
+ s.homepage = "https://github.com/GetuiLaboratory/react-native-idosdk"
9
+ s.summary = pjson["description"]
10
+ s.license = pjson["license"]
11
+ s.author = { "ak" => "343342719@qq.com" }
12
+
13
+ s.ios.deployment_target = '12.0'
14
+
15
+ s.source = { :git => "https://github.com/GetuiLaboratory/react-native-idosdk.git" }
16
+ s.source_files = 'ios/RCTGetuiIdoModule/RCTGetuiIdoModule/*.{h,m}'
17
+ s.preserve_paths = "*.js"
18
+ s.frameworks = 'SystemConfiguration', 'CFNetwork','CoreTelephony','CoreLocation','AVFoundation','Security','AdSupport'
19
+ s.weak_frameworks = 'UserNotifications','AppTrackingTransparency','Network'
20
+ s.libraries = 'z','sqlite3.0','c++','resolv'
21
+ s.requires_arc = true
22
+ s.swift_versions = ['5']
23
+
24
+ s.dependency 'React'
25
+ s.dependency 'GCIDOSDK'
26
+
27
+ end
package/README.md ADDED
@@ -0,0 +1,96 @@
1
+
2
+
3
+ # react-native-idosdk
4
+ * idosdk 是个推官方开发的 IDOSDK React Native 插件,使用该插件可以方便快速地集成推送功能。
5
+
6
+
7
+
8
+ # 环境
9
+
10
+ 1. React Native Version
11
+ "react": "18.3.1"
12
+ "react-native": "0.75.4"
13
+ 2. 当前react-native-idosdk版本 1.0.0
14
+
15
+
16
+ 注意:
17
+
18
+
19
+
20
+ # 1.安装
21
+
22
+ ### 1.1 使用 npm 自动安装
23
+
24
+ 在您的项目根目录下执行
25
+
26
+ ````js
27
+ step1:添加npm包依赖
28
+ npm install react-native-idosdk@latest --save
29
+
30
+
31
+ step2:iOS, pod项目, 链接iOS原生代码
32
+ npx pod-install
33
+
34
+
35
+ step2: 链接 (非Autolinking项目, 和iOS非pod项目)
36
+ react-native link
37
+
38
+
39
+
40
+
41
+ # 2. 配置
42
+
43
+ * yourAppId yourAppKey yourAppSecret 需要去 [个推官网](https://dev.getui.com) 注册后,在后台配置获取。
44
+
45
+
46
+
47
+ ## 2.1 Android
48
+
49
+
50
+
51
+
52
+ ## 2.2 IOS
53
+
54
+
55
+
56
+ ### 2.2.2 使用CocoaPods安装
57
+
58
+ 如果是原生应用集成react-native
59
+
60
+ 如果你的 React Native 是通过 Cocoapods 来集成的则使用下面两个步骤来集成
61
+
62
+ 1. 在Podfile中添加如下代码(需要写在对应的 target 里):
63
+
64
+ ````
65
+ pod 'IdoSdkRN', :path => '../node_modules/react-native-idosdk'
66
+ ````
67
+
68
+ 2. 终端执行如下命令:
69
+
70
+ ````
71
+ pod install
72
+ ````
73
+
74
+ **注意:**
75
+
76
+ * 使用 pod 就不要使用 react-native link 了,不然会有冲突。
77
+
78
+ * 在 iOS 工程中如果找不到头文件可能要在 TARGETS-> BUILD SETTINGS -> Search Paths -> Header Search Paths 添加如下如路径
79
+
80
+ ```
81
+ $(SRCROOT)/../node_modules/react-native-getui/ios/RCTGetuiModule
82
+ ```
83
+
84
+
85
+
86
+
87
+ ### 2.4 API调用与订阅消息
88
+
89
+ 查看示例
90
+
91
+ android 与 ios 有部分API不同, 查看插件的index.js 或 index.d.ts中API的注释
92
+
93
+
94
+ ## 3.iOS注意事项
95
+
96
+
@@ -0,0 +1,57 @@
1
+ apply plugin: 'com.android.library'
2
+
3
+ def safeExtGet(prop, fallback) {
4
+ rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
5
+ }
6
+
7
+ android {
8
+ compileSdkVersion safeExtGet('compileSdkVersion', 34)
9
+
10
+ namespace 'com.getui.reactnativegetui'
11
+
12
+ defaultConfig {
13
+ minSdkVersion safeExtGet('minSdkVersion', 23)
14
+ targetSdkVersion safeExtGet('targetSdkVersion', 34)
15
+ versionCode 1
16
+ versionName "1.0"
17
+ }
18
+ }
19
+
20
+ repositories {
21
+ maven {
22
+ url "https://mvn.getui.com/nexus/content/repositories/releases/"
23
+ }
24
+ maven { url 'https://maven.aliyun.com/repository/google' }
25
+ maven { url 'https://maven.aliyun.com/repository/public' }
26
+ mavenLocal()
27
+ maven {
28
+ url("$rootDir/../node_modules/jsc-android/dist")
29
+ }
30
+ maven {
31
+ url "https://www.jitpack.io"
32
+ }
33
+ maven {
34
+ url "$rootDir/../node_modules/react-native/android"
35
+ }
36
+ maven {
37
+ url 'https://maven.google.com/'
38
+ name 'Google'
39
+ }
40
+
41
+ maven {url 'https://developer.huawei.com/repo/'}
42
+ }
43
+
44
+ dependencies {
45
+ implementation fileTree(dir: "libs", include: ["*.jar"])
46
+ implementation "com.facebook.react:react-native:+" // From node_modules
47
+
48
+
49
+ // implementation 'com.getui.opt:hwp:3.1.2' // 华为
50
+ // implementation 'com.getui.opt:xmp:3.3.3' // 小米
51
+ // implementation 'com.assist-v3:oppo:3.5.0' // oppo
52
+ // implementation 'com.assist-v3:vivo:3.2.0' // vivo
53
+ // implementation 'com.getui.opt:mzp:3.2.4' // 魅族
54
+ // implementation 'com.getui.opt:ups:3.0.3' // ups,ups目前支持坚果,索尼,海信手机
55
+ // implementation 'com.getui.opt:honor:3.6.0' // 荣耀
56
+
57
+ }
Binary file
Binary file
@@ -0,0 +1,37 @@
1
+
2
+ #个推
3
+ -dontwarn com.igexin.**
4
+ -dontwarn com.huawei.hms.**
5
+ -dontwarn com.meizu.**
6
+ -dontwarn com.xiaomi.push.**
7
+
8
+ -keep class com.igexin.** { *; }
9
+ -keep class org.json.** { *; }
10
+ -keep class com.huawei.hms.** { *; }
11
+ -keep class com.meizu.** { *; }
12
+ -keep class com.xiaomi.** { *; }
13
+ -keep class org.apache.thrift.** { *; }
14
+
15
+ -keep class com.getui.gtc.** {*;}
16
+
17
+ -keepattributes Signature, InnerClasses, EnclosingMethod, Exceptions, *Annotation*
18
+ -keep class com.getui.gtc.dyc.** {*;}
19
+
20
+ -keepattributes Signature, InnerClasses, EnclosingMethod, Exceptions, *Annotation*
21
+ -keep class com.getui.gtc.dim.** {*;}
22
+
23
+ -keepattributes Signature, InnerClasses, EnclosingMethod, Exceptions, *Annotation*
24
+ -keep class com.getui.gtc.base.** {*;}
25
+ -keep class com.igexin.base.** {*;}
26
+
27
+
28
+ -keepattributes Signature, InnerClasses, EnclosingMethod, Exceptions, *Annotation*
29
+ -keep class com.getui.gtc.dyc.** {*;}
30
+
31
+
32
+ -keepattributes Signature, InnerClasses, EnclosingMethod, Exceptions, *Annotation*
33
+ -keep class com.getui.gtc.dim.** {*;}
34
+
35
+ -keepattributes Signature, InnerClasses, EnclosingMethod, Exceptions, *Annotation*
36
+ -keep class com.getui.gtc.base.** {*;}
37
+ -keep class com.igexin.base.** {*;}
@@ -0,0 +1,100 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
+ package="com.getui.reactnativegetui">
3
+
4
+ <!-- 个推SDK权限配置开始 -->
5
+ <uses-permission android:name="android.permission.INTERNET" />
6
+ <uses-permission android:name="android.permission.READ_PHONE_STATE" />
7
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
8
+ <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
9
+ <uses-permission android:name="android.permission.VIBRATE" />
10
+ <uses-permission android:name="android.permission.GET_TASKS" />
11
+ <!-- oppo android12 需要 alarm权限 -->
12
+ <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
13
+ <uses-permission android:name="getui.permission.GetuiService.${applicationId}" />
14
+ <!-- vivo角标 -->
15
+ <uses-permission android:name="com.vivo.notification.permission.BADGE_ICON" />
16
+
17
+ <permission
18
+ android:name="getui.permission.GetuiService.${applicationId}"
19
+ android:protectionLevel="signature" />
20
+
21
+ <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
22
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
23
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
24
+ <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
25
+
26
+
27
+ <application>
28
+
29
+ <!-- 用户自定义服务继承自GTIntentService,作为SDK与APP桥梁服务,用来接收各种消息和命令回复 -->
30
+ <service
31
+ android:name="com.getui.reactnativegetui.PushIntentService"/>
32
+ <!-- 配置SDK核心服务 -->
33
+ <service
34
+ android:name="com.getui.reactnativegetui.DemoPushService"
35
+ android:exported="true"
36
+ android:label="PushService"
37
+ android:process=":pushservice" />
38
+
39
+ <!-- 配置SDK核心服务 -->
40
+ <service
41
+ android:name="com.igexin.sdk.PushService"
42
+ android:exported="false"
43
+ android:label="NotificationCenter"
44
+ android:process=":pushservice" />
45
+ <service
46
+ android:name="com.igexin.sdk.GTIntentService"
47
+ android:exported="true" />
48
+ <service
49
+ android:name="com.igexin.sdk.GService"
50
+ android:exported="true"
51
+ android:process=":pushservice" >
52
+ <intent-filter>
53
+ <action android:name="com.getui.sdk.action" />
54
+ </intent-filter>
55
+ </service>
56
+
57
+ <activity
58
+ android:name="com.igexin.sdk.GetuiActivity"
59
+ android:exported="true"
60
+ android:process=":pushservice"
61
+ android:theme="@android:style/Theme.Translucent.NoTitleBar" >
62
+ <intent-filter>
63
+ <action android:name="com.getui.sdk.action" />
64
+ </intent-filter>
65
+ </activity>
66
+ <activity
67
+ android:name="com.igexin.sdk.PopupActivity"
68
+ android:configChanges="screenSize|orientation"
69
+ android:exported="false"
70
+ android:process=":pushservice"
71
+ android:theme="@android:style/Theme.Translucent.NoTitleBar" />
72
+
73
+ <meta-data
74
+ android:name="GTSDK_VERSION"
75
+ android:value="3.3.11.0" />
76
+ <!-- 个推SDK配置结束 -->
77
+
78
+ <service
79
+ android:name="com.getui.gtc.GtcService"
80
+ android:exported="false" >
81
+ <intent-filter>
82
+ <action android:name="com.getui.gtc.sdk.service.action" />
83
+ </intent-filter>
84
+ </service>
85
+
86
+ <provider
87
+ android:name="com.getui.gtc.base.GtcProvider"
88
+ android:authorities="${applicationId}.getui.gtc.provider"
89
+ android:exported="false" />
90
+
91
+ </application>
92
+
93
+ <!-- 适配android 11及以上,强烈建议加上 -->
94
+ <queries>
95
+ <intent>
96
+ <action android:name="com.getui.sdk.action" />
97
+ </intent>
98
+ </queries>
99
+
100
+ </manifest>
@@ -0,0 +1,7 @@
1
+ package com.getui.reactnativegetui;
2
+
3
+ import com.igexin.sdk.PushService;
4
+
5
+ public class DemoPushService extends PushService {
6
+
7
+ }
@@ -0,0 +1,26 @@
1
+ package com.getui.reactnativegetui;
2
+
3
+ import android.util.Log;
4
+
5
+ /**
6
+ * Created by zhourh on 2017/3/6.
7
+ */
8
+
9
+ public class GetuiLogger {
10
+
11
+ public static boolean ENABLE = true;
12
+
13
+ public static final String TAG = "GetuiLogger";
14
+
15
+ public static void log(String message){
16
+ if (ENABLE){
17
+ Log.d(TAG, message);
18
+ }
19
+ }
20
+ public static void logE(String message){
21
+ if (ENABLE){
22
+ Log.e(TAG, message);
23
+ }
24
+ }
25
+
26
+ }
@@ -0,0 +1,346 @@
1
+ package com.getui.reactnativegetui;
2
+
3
+ import android.content.Context;
4
+ import com.facebook.react.bridge.Arguments;
5
+ import com.facebook.react.bridge.Callback;
6
+ import com.facebook.react.bridge.ReactApplicationContext;
7
+ import com.facebook.react.bridge.ReactContextBaseJavaModule;
8
+ import com.facebook.react.bridge.ReactMethod;
9
+ import com.facebook.react.bridge.ReadableArray;
10
+ import com.facebook.react.bridge.WritableMap;
11
+ import com.facebook.react.modules.core.DeviceEventManagerModule;
12
+ import com.getui.gtc.base.util.CommonUtil;
13
+ import com.igexin.sdk.IUserLoggerInterface;
14
+ import com.igexin.sdk.PushManager;
15
+ import com.igexin.sdk.Tag;
16
+
17
+
18
+ /**
19
+ * Created by zhourh on 2017/3/6.
20
+ */
21
+
22
+ public class GetuiModule extends ReactContextBaseJavaModule {
23
+
24
+
25
+ public static final String EVENT_RECEIVE_REMOTE_NOTIFICATION = "receiveRemoteNotification";
26
+
27
+ public static final String EVENT_TYPE_RECEIVE_CID = "cid";
28
+ public static final String EVENT_TYPE_PAYLOAD = "payload";
29
+ public static final String EVENT_TYPE_CMD = "cmd";
30
+ public static final String EVENT_TYPE_NOTIFICATION_ARRIVED = "notificationArrived";
31
+ public static final String EVENT_TYPE_NOTIFICATION_CLICKED = "notificationClicked";
32
+
33
+ private static ReactApplicationContext mRAC;
34
+
35
+
36
+
37
+
38
+
39
+ public GetuiModule(ReactApplicationContext reactContext) {
40
+ super(reactContext);
41
+ mRAC = reactContext;
42
+ }
43
+
44
+ @Override
45
+ public boolean canOverrideExistingModule() {
46
+ return true;
47
+ }
48
+
49
+ @Override
50
+ public String getName() {
51
+ return "GetuiModule";
52
+ }
53
+
54
+ @Override
55
+ public void initialize() {
56
+ super.initialize();
57
+ }
58
+
59
+ @Override
60
+ public void onCatalystInstanceDestroy() {
61
+ super.onCatalystInstanceDestroy();
62
+ }
63
+
64
+ /**
65
+ * 初始化推送服务
66
+ */
67
+ @ReactMethod
68
+ public void initPush(){
69
+ PushManager.getInstance().setDebugLogger(mRAC, new IUserLoggerInterface() {
70
+ @Override
71
+ public void log(String s) {
72
+ GetuiLogger.logE(s);
73
+ }
74
+ });
75
+ GetuiLogger.log("initPush, mRAC = " + mRAC);
76
+ PushManager.getInstance().initialize(mRAC, DemoPushService.class);
77
+ PushManager.getInstance().registerPushIntentService(mRAC, PushIntentService.class);
78
+ }
79
+ /**
80
+ * Android 不存在 destroy方法,仅停止推送服务
81
+ */
82
+ @ReactMethod
83
+ public void destroy(){
84
+ // PushManager.getInstance().stopService(mRAC);
85
+ }
86
+
87
+ /**
88
+ * 停止SDK服务
89
+ */
90
+ @ReactMethod
91
+ public void stop(){
92
+ // PushManager.getInstance().stopService(mRAC);
93
+ }
94
+
95
+ /**
96
+ * 恢复SDK运行,重新接收推送
97
+ */
98
+ @ReactMethod
99
+ public void resume(){
100
+ PushManager.getInstance().turnOnPush(mRAC);
101
+ }
102
+
103
+ /**
104
+ * 打开SDK的推送.
105
+ */
106
+ @ReactMethod
107
+ public void turnOnPush(){
108
+ PushManager.getInstance().turnOnPush(mRAC);
109
+ }
110
+
111
+ /**
112
+ * 关闭SDK的推送.
113
+ */
114
+ @ReactMethod
115
+ public void turnOffPush(){
116
+ PushManager.getInstance().turnOffPush(mRAC);
117
+ }
118
+
119
+ /**
120
+ * 获取SDK的Cid
121
+ *
122
+ * @return Cid值
123
+ */
124
+ @ReactMethod
125
+ public void clientId(Callback callback){
126
+ String clientId = PushManager.getInstance().getClientid(mRAC);
127
+ GetuiLogger.log("clientId = " + clientId);
128
+ callback.invoke(clientId);
129
+ }
130
+
131
+ /**
132
+ * 获取SDK运行状态,
133
+ *
134
+ * @return 运行状态 1为已开启推送,2为已停止推送
135
+ */
136
+ @ReactMethod
137
+ public void status(Callback callback){
138
+ boolean isPushTurnOn = PushManager.getInstance().isPushTurnedOn(mRAC);
139
+ GetuiLogger.log("isPushTurnOn = " + isPushTurnOn);
140
+ callback.invoke(isPushTurnOn ? "1" : "2" );
141
+ }
142
+
143
+ /**
144
+ * 获取SDK版本号
145
+ *
146
+ * @return 版本号
147
+ */
148
+ @ReactMethod
149
+ public void version(Callback callback){
150
+ String version = PushManager.getInstance().getVersion(mRAC);
151
+ GetuiLogger.log("version = " + version);
152
+ callback.invoke(version);
153
+ }
154
+
155
+
156
+ /**
157
+ * 是否允许SDK 后台运行(默认为true)
158
+ * 该方法在Android中无效,仅在iOS有效
159
+ * @param isEnable
160
+ */
161
+ @ReactMethod
162
+ public void runBackgroundEnable(boolean isEnable){
163
+ // Empty
164
+ }
165
+
166
+
167
+ /**
168
+ * 地理围栏功能,设置地理围栏是否运行
169
+ * 该方法在Android中无效,仅在iOS有效,在AndroidManifest.xml开启相应地权限
170
+ * <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
171
+ * <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
172
+ * @param isEnable 设置地理围栏功能是否运行(默认值:NO)
173
+ * @param isVerify 设置是否SDK主动弹出用户定位请求(默认值:NO)
174
+ */
175
+ @ReactMethod
176
+ public void lbsLocationEnable(boolean isEnable, boolean isVerify){
177
+ // Empty
178
+ }
179
+
180
+
181
+ /**
182
+ * 设置渠道
183
+ * 该方法在Android中无效,仅在iOS有效Ø
184
+ * @param channelId 渠道值,可以为空值
185
+ */
186
+ @ReactMethod
187
+ public void setChannelId(String channelId){
188
+ // Empty
189
+ }
190
+
191
+
192
+ /**
193
+ * 向个推服务器注册DeviceToken
194
+ * 该方法在Android中无效,仅在iOS有效
195
+ * @param deviceToken
196
+ */
197
+ @ReactMethod
198
+ public void registerDeviceToken(String deviceToken){
199
+ // Empty
200
+
201
+ }
202
+
203
+ /**
204
+ * 绑定别名功能:后台可以根据别名进行推送
205
+ *
206
+ * @param alias 别名字符串
207
+ * @param aSn 绑定序列码, Android中无效,仅在iOS有效
208
+ */
209
+ @ReactMethod
210
+ public void bindAlias(String alias, String aSn){
211
+ PushManager.getInstance().bindAlias(mRAC, alias);
212
+ }
213
+
214
+ /**
215
+ * 取消绑定别名功能
216
+ *
217
+ * @param alias 别名字符串
218
+ * @param aSn 绑定序列码, Android中无效,仅在iOS有效
219
+ */
220
+ @ReactMethod
221
+ public void unbindAlias(String alias, String aSn){
222
+ PushManager.getInstance().unBindAlias(mRAC, alias, false);
223
+ }
224
+
225
+ /**
226
+ * 给用户打标签 , 后台可以根据标签进行推送
227
+ *
228
+ * @param tags 别名数组
229
+ */
230
+ @ReactMethod
231
+ public void setTag(ReadableArray tags){
232
+ if (tags == null || tags.size() == 0){
233
+ return;
234
+ }
235
+
236
+ Tag[] tagArray = new Tag[tags.size()];
237
+ for (int i = 0; i < tags.size(); i++ ){
238
+ Tag tag = new Tag();
239
+ tag.setName(tags.getString(i));
240
+ tagArray[i] = tag;
241
+ }
242
+
243
+ PushManager.getInstance().setTag(mRAC, tagArray, "setTag");
244
+ }
245
+
246
+ /**
247
+ * 设置关闭推送模式
248
+ * Android中无效,仅在iOS有效
249
+ *
250
+ * @param isValue
251
+ */
252
+ @ReactMethod
253
+ public void setPushModeForOff(boolean isValue){
254
+ // Empty
255
+ }
256
+
257
+ /**
258
+ * 同步角标值到个推服务器
259
+ * Android中无效,仅在iOS有效
260
+ * @param value
261
+ */
262
+ @ReactMethod
263
+ public void setBadge(int value){
264
+ PushManager.getInstance().setBadgeNum(mRAC,value);
265
+ }
266
+
267
+ /**
268
+ * 重置角标值到个推服务器
269
+ * Android中无效,仅在iOS有效
270
+ * @param badge
271
+ */
272
+ @ReactMethod
273
+ public void resetBadge(int badge){
274
+ PushManager.getInstance().setBadgeNum(mRAC,badge);
275
+ }
276
+
277
+
278
+ /**
279
+ * SDK发送上行消息结果
280
+ * Android中无效,仅在iOS有效
281
+ * @param body 需要发送的消息数据
282
+ * @param error 如果发送成功返回messageid
283
+ *
284
+ */
285
+ @ReactMethod
286
+ public void sendMessage(String body, String error){
287
+ // Empty
288
+
289
+ }
290
+
291
+ /**
292
+ * 上行第三方自定义回执actionid
293
+ * @param actionId 用户自定义的actionid,int类型,取值90001-90999。
294
+ * @param taskId 下发任务的任务ID
295
+ * @param msgId 下发任务的消息ID
296
+ *
297
+ * @return 上行成功或失败,若上行失败,可能上行失败;taskid为空或者 messageid 为空 或者 actionid 不在取值范围以内
298
+ */
299
+ @ReactMethod
300
+ public void sendFeedbackMessage(int actionId, String taskId, String msgId, Callback callback){
301
+ callback.invoke(PushManager.getInstance().sendFeedbackMessage(mRAC, taskId, msgId, actionId));
302
+ }
303
+
304
+ /**
305
+ * 设置静默时间
306
+ *
307
+ * @param beginHour 开始时间,设置范围在0-23小时之间,单位 h
308
+ * @param duration 持续时间,设置范围在0-23小时之间。持续时间为0则不静默,单位 h
309
+ */
310
+ @ReactMethod
311
+ public void sendSilentTime(int beginHour, int duration, Callback callback){
312
+ callback.invoke(PushManager.getInstance().setSilentTime(mRAC, beginHour, duration));
313
+ }
314
+
315
+
316
+ /**
317
+ * 设置Socket超时时间
318
+ * @param times 超时时间
319
+ */
320
+ @ReactMethod
321
+ public void setSocketTimeout(int times){
322
+ PushManager.getInstance().setSocketTimeout(mRAC, times);
323
+ }
324
+
325
+ /**
326
+ * 往JavaScript发送事件通知
327
+ * @param eventName
328
+ * @param type
329
+ * @param value
330
+ */
331
+ public static void sendEvent(String eventName, String type, String key, String value){
332
+ WritableMap param = Arguments.createMap();
333
+ param.putString("type", type);
334
+ param.putString(key, value);
335
+ sendEvent(eventName, param);
336
+ }
337
+ /**
338
+ * 往JavaScript发送事件通知
339
+ * @param eventName
340
+ * @param params
341
+ */
342
+ public static void sendEvent(String eventName, WritableMap params){
343
+ mRAC.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
344
+ .emit(eventName, params);
345
+ }
346
+ }