react-native-idosdk 1.0.1 → 1.0.3

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/README.md CHANGED
@@ -1,20 +1,14 @@
1
1
 
2
-
3
2
  # react-native-idosdk
4
3
  * idosdk 是个推官方开发的 IDOSDK React Native 插件,使用该插件可以方便快速地集成推送功能。
5
4
 
6
5
 
7
-
8
6
  # 环境
9
7
 
10
8
  1. React Native Version
11
9
  "react": "18.3.1"
12
10
  "react-native": "0.75.4"
13
- 2. 当前react-native-idosdk版本 1.0.0
14
-
15
-
16
- 注意:
17
-
11
+ 2. 当前react-native-idosdk版本 1.0.2
18
12
 
19
13
 
20
14
  # 1.安装
@@ -34,25 +28,37 @@ npx pod-install
34
28
 
35
29
  step2: 链接 (非Autolinking项目, 和iOS非pod项目)
36
30
  react-native link
37
-
31
+ ````
38
32
 
33
+ ### 1.2 完整代码示例
39
34
 
35
+ *[AndroidDemo](example/AndroidDemo)
36
+ *[iOSDemo](example/iOSDemo)
40
37
 
41
38
  # 2. 配置
42
39
 
43
- * yourAppId yourAppKey yourAppSecret 需要去 [个推官网](https://dev.getui.com) 注册后,在后台配置获取。
44
-
40
+ * appId 需要去 [个推官网](https://dev.getui.com) 注册后,在后台配置获取。
45
41
 
46
42
 
47
43
  ## 2.1 Android
48
-
49
-
44
+ * AndroidManifest.xml中添加配置
45
+ ````xml
46
+ <manifest>
47
+ <application>
48
+ <meta-data android:name="PUSH_APPID" android:value="你的appid"/>
49
+ <meta-data android:name="GT_INSTALL_CHANNEL" android:value=""/>
50
+ </application>
51
+ </manifest>
52
+ ````
53
+ * 如果开启混淆
54
+ ````proguard
55
+ -keep class com.getui.gs.** { *; }
56
+ -keep class com.getui.gtc.** {*;}
57
+ ````
50
58
 
51
-
52
59
  ## 2.2 IOS
53
60
 
54
61
 
55
-
56
62
  ### 2.2.2 使用CocoaPods安装
57
63
 
58
64
  如果是原生应用集成react-native
@@ -63,12 +69,14 @@ react-native link
63
69
 
64
70
  ````
65
71
  pod 'IdoSdkRN', :path => '../node_modules/react-native-idosdk'
72
+
66
73
  ````
67
74
 
68
75
  2. 终端执行如下命令:
69
76
 
70
77
  ````
71
78
  pod install
79
+
72
80
  ````
73
81
 
74
82
  **注意:**
@@ -82,8 +90,6 @@ pod install
82
90
  ```
83
91
 
84
92
 
85
-
86
-
87
93
  ### 2.4 API调用与订阅消息
88
94
 
89
95
  查看示例
@@ -91,6 +97,8 @@ pod install
91
97
  android 与 ios 有部分API不同, 查看插件的index.js 或 index.d.ts中API的注释
92
98
 
93
99
 
100
+
101
+
94
102
  ## 3.iOS注意事项
95
103
 
96
104
 
Binary file
@@ -1,80 +1,14 @@
1
1
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
- package="com.getui.reactnativegetui">
2
+ >
3
3
 
4
- <!-- 个推SDK权限配置开始 -->
4
+ <uses-sdk
5
+ android:minSdkVersion="14"
6
+ android:targetSdkVersion="30" />
5
7
  <uses-permission android:name="android.permission.INTERNET" />
6
- <uses-permission android:name="android.permission.READ_PHONE_STATE" />
7
8
  <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
9
  <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
10
 
27
11
  <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
12
  <service
79
13
  android:name="com.getui.gtc.GtcService"
80
14
  android:exported="false" >
@@ -87,10 +21,10 @@
87
21
  android:name="com.getui.gtc.base.GtcProvider"
88
22
  android:authorities="${applicationId}.getui.gtc.provider"
89
23
  android:exported="false" />
90
-
91
24
  </application>
92
25
 
93
- <!-- 适配android 11及以上,强烈建议加上 -->
26
+
27
+ <!-- 适配android 11及以上,强烈建议加上 -->
94
28
  <queries>
95
29
  <intent>
96
30
  <action android:name="com.getui.sdk.action" />
@@ -0,0 +1,237 @@
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.ReadableMap;
11
+ import com.facebook.react.bridge.ReadableMapKeySetIterator;
12
+ import com.facebook.react.bridge.ReadableType;
13
+ import com.facebook.react.bridge.WritableMap;
14
+ import com.facebook.react.modules.core.DeviceEventManagerModule;
15
+ import com.getui.gs.sdk.GsManager;
16
+ import com.getui.gs.ias.core.GsConfig;
17
+ import org.json.JSONObject;
18
+ import org.json.JSONException;
19
+ import android.text.TextUtils;
20
+ import com.getui.gs.sdk.IGtcIdCallback;
21
+ import android.util.Log;
22
+ import android.os.Handler;
23
+ import android.os.Looper;
24
+ import android.widget.Toast;
25
+
26
+ public class GetuiIdoModule extends ReactContextBaseJavaModule {
27
+
28
+ private Context mContext;
29
+
30
+ private Callback callback;
31
+ private static String TAG = "GetuiIdoModule";
32
+
33
+ public GetuiIdoModule(ReactApplicationContext reactContext) {
34
+ super(reactContext);
35
+ mContext = reactContext;
36
+ }
37
+
38
+ @Override
39
+ public String getName() {
40
+ return "GetuiIdoModule";
41
+ }
42
+
43
+ @ReactMethod
44
+ public void startSdk(String appid, String channel) {
45
+ // 设置AppId
46
+ if (!TextUtils.isEmpty(appid)){
47
+ GsConfig.setAppId(appid);
48
+ }
49
+ // 预初始化
50
+ GsManager.getInstance().preInit(mContext);
51
+ // 初始化并注册gtcid
52
+ GsManager.getInstance().init(mContext);
53
+ Toast.makeText(mContext, "GsManager init ", Toast.LENGTH_SHORT).show();
54
+ }
55
+
56
+ @ReactMethod
57
+ public void gtcid(final Callback callback) {
58
+ String gtCid = GsManager.getInstance().getGtcId();
59
+ if (TextUtils.isEmpty(gtCid)){
60
+ Toast.makeText(mContext, "gtcId: is Empty", Toast.LENGTH_SHORT).show();
61
+ GsManager.getInstance().setGtcIdCallback(new IGtcIdCallback() {
62
+ @Override
63
+ public void onGetGtcId(String gtcId) {
64
+ Log.d(TAG, "onGetGtcId: " + gtcId);
65
+ new Handler(Looper.getMainLooper()).post(() -> {
66
+ Toast.makeText(mContext, "gtcId: "+gtcId, Toast.LENGTH_SHORT).show();
67
+ callback.invoke(gtcId);
68
+ });
69
+ }
70
+ });
71
+ }else {
72
+ // Toast.makeText(mContext, "gtcId: is not Empty", Toast.LENGTH_SHORT).show();
73
+ callback.invoke(gtCid);
74
+ }
75
+ }
76
+
77
+ @ReactMethod
78
+ public void version(Callback callback) {
79
+ callback.invoke(GsManager.getInstance().getVersion());
80
+ }
81
+
82
+ @ReactMethod
83
+ public void setDebugEnable(boolean isEnable) {
84
+ GsConfig.setDebugEnable(isEnable);
85
+ }
86
+
87
+ @ReactMethod
88
+ public void setApplicationGroupIdentifier(String identifier) {
89
+ // Android不需要实现此方法,iOS专用
90
+ }
91
+
92
+ @ReactMethod
93
+ public void setSessionTime(int time) {
94
+ GsConfig.setSessionTimeoutMillis(time ); // 转换为毫秒
95
+ }
96
+
97
+ @ReactMethod
98
+ public void setMinAppActiveDuration(int val) {
99
+ GsConfig.setMinAppActiveDuration(val ); // 转换为毫秒
100
+ }
101
+
102
+ @ReactMethod
103
+ public void setMaxAppActiveDuration(int val) {
104
+ GsConfig.setMaxAppActiveDuration(val); // 转换为毫秒
105
+ }
106
+
107
+ @ReactMethod
108
+ public void setEventUploadInterval(int val) {
109
+ GsConfig.setEventUploadInterval(val);
110
+ }
111
+
112
+ @ReactMethod
113
+ public void setEventForceUploadSize(int val) {
114
+ GsConfig.setEventForceUploadSize(val);
115
+ }
116
+
117
+ @ReactMethod
118
+ public void setProfileUploadInterval(int val) {
119
+ GsConfig.setProfileUploadInterval(val);
120
+ }
121
+
122
+ @ReactMethod
123
+ public void setProfileForceUploadSize(int val) {
124
+ GsConfig.setProfileForceUploadSize(val);
125
+ }
126
+
127
+ @ReactMethod
128
+ public void setUserId(String val) {
129
+ // 设置用户ID,需要根据实际SDK提供的方法实现
130
+ GsManager.getInstance().setUserId(val);
131
+ }
132
+
133
+ @ReactMethod
134
+ public void setSyncGenerateGtcid(boolean val) {
135
+ // 设置同步生成Gtcid,需要根据实际SDK提供的方法实现
136
+ GsManager.getInstance().syncGenerateGtcId(val);
137
+ }
138
+
139
+ @ReactMethod
140
+ public void registerEventProperties(ReadableMap val) {
141
+ try {
142
+ JSONObject properties = convertReadableMapToJson(val);
143
+ GsManager.getInstance().registerEventProperties(properties);
144
+ } catch (Exception e) {
145
+ e.printStackTrace();
146
+ }
147
+ }
148
+
149
+ @ReactMethod
150
+ public void trackCustomKeyValueEventBegin(String eventId) {
151
+ try {
152
+ GsManager.getInstance().onBeginEvent(eventId);
153
+ } catch (Exception e) {
154
+ e.printStackTrace();
155
+ }
156
+ }
157
+
158
+ @ReactMethod
159
+ public void trackCustomKeyValueEventEnd(String eventId, ReadableMap args, String ext) {
160
+ try {
161
+ GsManager.getInstance().onEndEvent(eventId,convertReadableMapToJson(args),ext);
162
+ } catch (Exception e) {
163
+ e.printStackTrace();
164
+ }
165
+ }
166
+
167
+ @ReactMethod
168
+ public void trackCountEvent(String eventId, ReadableMap args, String ext) {
169
+ try {
170
+ // 跟踪计数事件
171
+ GsManager.getInstance().onEvent(eventId, convertReadableMapToJson(args),ext);
172
+ } catch (Exception e) {
173
+ e.printStackTrace();
174
+ }
175
+ }
176
+
177
+ @ReactMethod
178
+ public void setProfile(ReadableMap profiles, String ext) {
179
+ try {
180
+ JSONObject profileData = convertReadableMapToJson(profiles);
181
+ // 设置用户属性
182
+ GsManager.getInstance().setProfile(profileData,ext);
183
+ } catch (Exception e) {
184
+ e.printStackTrace();
185
+ }
186
+ }
187
+
188
+
189
+
190
+
191
+ // 辅助方法:将ReadableMap转换为JSONObject
192
+ private JSONObject convertReadableMapToJson(ReadableMap readableMap) throws Exception {
193
+ JSONObject jsonObject = new JSONObject();
194
+ if (readableMap != null) {
195
+ ReadableMapKeySetIterator iterator = readableMap.keySetIterator();
196
+ while (iterator.hasNextKey()) {
197
+ String key = iterator.nextKey();
198
+ ReadableType type = readableMap.getType(key);
199
+ switch (type) {
200
+ case Null:
201
+ jsonObject.put(key, JSONObject.NULL);
202
+ break;
203
+ case Boolean:
204
+ jsonObject.put(key, readableMap.getBoolean(key));
205
+ break;
206
+ case Number:
207
+ // 尝试获取整数,如果不是整数则获取双精度浮点数
208
+ try {
209
+ jsonObject.put(key, readableMap.getInt(key));
210
+ } catch (Exception e) {
211
+ jsonObject.put(key, readableMap.getDouble(key));
212
+ }
213
+ break;
214
+ case String:
215
+ jsonObject.put(key, readableMap.getString(key));
216
+ break;
217
+ case Map:
218
+ jsonObject.put(key, convertReadableMapToJson(readableMap.getMap(key)));
219
+ break;
220
+ case Array:
221
+ // 数组处理需要额外实现
222
+ jsonObject.put(key, readableMap.getArray(key).toString());
223
+ break;
224
+ }
225
+ }
226
+ }
227
+ return jsonObject;
228
+ }
229
+
230
+ // 发送事件到JS
231
+ private void sendEvent(String eventName, WritableMap params) {
232
+ getReactApplicationContext()
233
+ .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
234
+ .emit(eventName, params);
235
+ }
236
+
237
+ }
@@ -27,7 +27,7 @@ public class GetuiPackage implements ReactPackage {
27
27
  @Override
28
28
  public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
29
29
  return Arrays.asList(new NativeModule[]{
30
- new GetuiModule(reactContext)
30
+ new GetuiIdoModule(reactContext)
31
31
  });
32
32
  }
33
33
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-idosdk",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Getui ido sdk plugin for react-native",
5
5
  "main": "index.js",
6
6
  "scripts": {
Binary file
@@ -1,7 +0,0 @@
1
- package com.getui.reactnativegetui;
2
-
3
- import com.igexin.sdk.PushService;
4
-
5
- public class DemoPushService extends PushService {
6
-
7
- }
@@ -1,346 +0,0 @@
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
- }
@@ -1,110 +0,0 @@
1
- package com.getui.reactnativegetui;
2
-
3
- /**
4
- * Created by zhourh on 2017/3/7.
5
- */
6
-
7
- import android.content.Context;
8
-
9
- import com.facebook.react.bridge.Arguments;
10
- import com.facebook.react.bridge.WritableMap;
11
- import com.igexin.sdk.GTIntentService;
12
- import com.igexin.sdk.message.GTCmdMessage;
13
- import com.igexin.sdk.message.GTNotificationMessage;
14
- import com.igexin.sdk.message.GTTransmitMessage;
15
-
16
- /**
17
- * 继承 GTIntentService 接收来自个推的消息, 所有消息在线程中回调<br>
18
- * onReceiveMessageData 处理透传消息<br>
19
- * onReceiveClientId 接收 cid <br>
20
- * onReceiveOnlineState cid 离线上线通知 <br>
21
- * onReceiveCommandResult 各种事件处理回执 <br>
22
- */
23
- public class PushIntentService extends GTIntentService {
24
-
25
- public PushIntentService() {
26
- }
27
-
28
- @Override
29
- public void onReceiveServicePid(Context context, int pid) {
30
- GetuiLogger.log("onReceiveServicePid = " + pid);
31
-
32
-
33
- }
34
-
35
- @Override
36
- public void onReceiveClientId(Context context, String clientId) {
37
- GetuiLogger.log("onReceiveClientId = " + clientId);
38
- WritableMap param = Arguments.createMap();
39
- param.putString("type", GetuiModule.EVENT_TYPE_RECEIVE_CID);
40
- param.putString("cid", clientId);
41
- GetuiModule.sendEvent(GetuiModule.EVENT_RECEIVE_REMOTE_NOTIFICATION, param);
42
- }
43
-
44
- @Override
45
- public void onReceiveMessageData(Context context, GTTransmitMessage msg) {
46
- String message = new String(msg.getPayload());
47
- GetuiLogger.log("onReceiveMessageData msg = " + message);
48
- WritableMap param = Arguments.createMap();
49
- param.putString("type", GetuiModule.EVENT_TYPE_PAYLOAD);
50
- param.putString("payload", message);
51
- GetuiModule.sendEvent(GetuiModule.EVENT_RECEIVE_REMOTE_NOTIFICATION, param );
52
- }
53
-
54
- @Override
55
- public void onReceiveOnlineState(Context context, boolean online) {
56
- GetuiLogger.log("onReceiveOnlineState online = " + online);
57
- }
58
-
59
- @Override
60
- public void onReceiveCommandResult(Context context, GTCmdMessage cmdMessage) {
61
- GetuiLogger.log("onReceiveCommandResult cmdMessage action = " + cmdMessage.getAction());
62
-
63
- GetuiModule.sendEvent(GetuiModule.EVENT_RECEIVE_REMOTE_NOTIFICATION,
64
- GetuiModule.EVENT_TYPE_CMD, "action", String.valueOf(cmdMessage.getAction()));
65
- }
66
-
67
-
68
- // 通知到达
69
- @Override
70
- public void onNotificationMessageArrived(Context context, GTNotificationMessage message) {
71
- GetuiLogger.log("onNotificationMessageArrived -> " + "appid = " + message.getAppid() + "\ntaskid = " + message.getTaskId() + "\nmessageid = "
72
- + message.getMessageId() + "\npkg = " + message.getPkgName() + "\ncid = " + message.getClientId() + "\ntitle = "
73
- + message.getTitle() + "\ncontent = " + message.getContent());
74
- /*
75
- GetuiModule.sendEvent(GetuiModule.EVENT_RECEIVE_REMOTE_NOTIFICATION,GetuiModule.EVENT_TYPE_CMD,"NotificationArrived",String.valueOf("appid = " + message.getAppid() + "\ntaskid = " + message.getTaskId() + "\nmessageid = "
76
- + message.getMessageId() + "\npkg = " + message.getPkgName() + "\ncid = " + message.getClientId() + "\ntitle = "
77
- + message.getTitle() + "\ncontent = " + message.getContent()));
78
- */
79
- WritableMap param = Arguments.createMap();
80
- param.putString("type",GetuiModule.EVENT_TYPE_NOTIFICATION_ARRIVED);
81
- param.putString("taskId",message.getTaskId());
82
- param.putString("messageId",message.getMessageId());
83
- param.putString("title",message.getTitle());
84
- param.putString("content",message.getContent());
85
- param.putString("payload",message.getPayload());
86
- GetuiModule.sendEvent(GetuiModule.EVENT_RECEIVE_REMOTE_NOTIFICATION,param);
87
- }
88
-
89
- // 点击回调
90
- @Override
91
- public void onNotificationMessageClicked(Context context, GTNotificationMessage message) {
92
- GetuiLogger.log("onNotificationMessageClicked -> " + "appid = " + message.getAppid() + "\ntaskid = " + message.getTaskId() + "\nmessageid = "
93
- + message.getMessageId() + "\npkg = " + message.getPkgName() + "\ncid = " + message.getClientId() + "\ntitle = "
94
- + message.getTitle() + "\ncontent = " + message.getContent());
95
- /*
96
- GetuiModule.sendEvent(GetuiModule.EVENT_RECEIVE_REMOTE_NOTIFICATION,GetuiModule.EVENT_TYPE_CMD,"NotificatioClicked","appid = " + message.getAppid() + "\ntaskid = " + message.getTaskId() + "\nmessageid = "
97
- + message.getMessageId() + "\npkg = " + message.getPkgName() + "\ncid = " + message.getClientId() + "\ntitle = "
98
- + message.getTitle() + "\ncontent = " + message.getContent());
99
- */
100
- WritableMap param = Arguments.createMap();
101
- param.putString("type",GetuiModule.EVENT_TYPE_NOTIFICATION_CLICKED);
102
- param.putString("taskId",message.getTaskId());
103
- param.putString("messageId",message.getMessageId());
104
- param.putString("title",message.getTitle());
105
- param.putString("content",message.getContent());
106
- param.putString("payload",message.getPayload());
107
- GetuiModule.sendEvent(GetuiModule.EVENT_RECEIVE_REMOTE_NOTIFICATION,param);
108
- }
109
-
110
- }
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <Workspace
3
- version = "1.0">
4
- <FileRef
5
- location = "self:../RCTGetuiIdoModule.xcodeproj">
6
- </FileRef>
7
- </Workspace>
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
- <plist version="1.0">
4
- <dict>
5
- <key>IDEDidComputeMac32BitWarning</key>
6
- <true/>
7
- </dict>
8
- </plist>