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.
- package/IdoSdkRN.podspec +27 -0
- package/README.md +96 -0
- package/android/build.gradle +57 -0
- package/android/libs/getui-3.3.11.0.jar +0 -0
- package/android/libs/gtc-3.2.18.0.jar +0 -0
- package/android/proguard.txt +37 -0
- package/android/src/main/AndroidManifest.xml +100 -0
- package/android/src/main/java/com/getui/reactnativegetui/DemoPushService.java +7 -0
- package/android/src/main/java/com/getui/reactnativegetui/GetuiLogger.java +26 -0
- package/android/src/main/java/com/getui/reactnativegetui/GetuiModule.java +346 -0
- package/android/src/main/java/com/getui/reactnativegetui/GetuiPackage.java +42 -0
- package/android/src/main/java/com/getui/reactnativegetui/PushIntentService.java +110 -0
- package/document/android.md +112 -0
- package/document/iOS.md +299 -0
- package/document/img/ios_1.jpeg +0 -0
- package/gradlew +160 -0
- package/gradlew.bat +90 -0
- package/index.d.ts +32 -0
- package/index.js +120 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/Info.plist +55 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/_CodeSignature/CodeDirectory +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/_CodeSignature/CodeRequirements +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/_CodeSignature/CodeRequirements-1 +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/_CodeSignature/CodeResources +548 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/_CodeSignature/CodeSignature +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/GTCountSDK +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/Headers/GTCountSDK.h +145 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/Info.plist +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/Modules/module.modulemap +5 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/PrivacyInfo.xcprivacy +44 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/_CodeSignature/CodeDirectory +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/_CodeSignature/CodeRequirements +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/_CodeSignature/CodeRequirements-1 +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/_CodeSignature/CodeResources +147 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64/GTCountSDK.framework/_CodeSignature/CodeSignature +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/GTCountSDK +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/Headers/GTCountSDK.h +145 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/Info.plist +52 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/Modules/module.modulemap +5 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/PrivacyInfo.xcprivacy +44 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/_CodeSignature/CodeDirectory +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/_CodeSignature/CodeRequirements +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/_CodeSignature/CodeRequirements-1 +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/_CodeSignature/CodeResources +147 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCountSDK.framework/_CodeSignature/CodeSignature +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/GTCountSDK +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/Headers/GTCountSDK.h +145 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/Info.plist +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/Modules/module.modulemap +5 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/PrivacyInfo.xcprivacy +44 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/_CodeSignature/CodeDirectory +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/_CodeSignature/CodeRequirements +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/_CodeSignature/CodeRequirements-1 +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/_CodeSignature/CodeResources +147 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/GTCountSDK.xcframework/ios-arm64_x86_64-simulator/GTCountSDK.framework/_CodeSignature/CodeSignature +0 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/RCTGetuiIdoModule.h +23 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule/RCTGetuiIdoModule.m +279 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule.xcodeproj/project.pbxproj +288 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/ios/RCTGetuiIdoModule/RCTGetuiIdoModule.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/package.json +55 -0
- package/postInstall.js +79 -0
package/IdoSdkRN.podspec
ADDED
|
@@ -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,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
|
+
}
|