11package cn .jiguang .plugins .push .receiver ;
22
33import android .content .Context ;
4- import android .text .TextUtils ;
54
65import com .facebook .react .bridge .Arguments ;
7- import com .facebook .react .bridge .WritableArray ;
86import com .facebook .react .bridge .WritableMap ;
9- import com .facebook .react .modules .core .DeviceEventManagerModule ;
10-
11- import org .json .JSONObject ;
12-
13- import java .util .Iterator ;
14- import java .util .Set ;
157
168import cn .jiguang .plugins .push .JPushModule ;
179import cn .jiguang .plugins .push .common .JPushConstans ;
1810import cn .jiguang .plugins .push .common .JPushLogger ;
11+ import cn .jiguang .plugins .push .helper .JPushHelper ;
1912import cn .jpush .android .api .CmdMessage ;
2013import cn .jpush .android .api .CustomMessage ;
2114import cn .jpush .android .api .JPushMessage ;
2417
2518public class JPushModuleReceiver extends JPushMessageReceiver {
2619
27- public void sendEvent (String eventName , WritableMap params ) {
28- JPushModule .reactContext .getJSModule (DeviceEventManagerModule .RCTDeviceEventEmitter .class ).emit (eventName , params );
29- }
30-
3120 @ Override
3221 public void onMessage (Context context , CustomMessage customMessage ) {
3322 JPushLogger .d ("onMessage:" + customMessage .toString ());
34- WritableMap writableMap = convertCustomMessage (customMessage );
35- sendEvent (JPushConstans .CUSTOM_MESSAGE_EVENT , writableMap );
36- super .onMessage (context , customMessage );
23+ WritableMap writableMap = JPushHelper .convertCustomMessage (customMessage );
24+ JPushHelper .sendEvent (JPushConstans .CUSTOM_MESSAGE_EVENT , writableMap );
3725 }
3826
3927 @ Override
4028 public void onNotifyMessageArrived (Context context , NotificationMessage notificationMessage ) {
4129 JPushLogger .d ("onNotifyMessageArrived:" + notificationMessage .toString ());
42- WritableMap writableMap = convertNotificationToMap (JPushConstans .NOTIFICATION_ARRIVED , notificationMessage );
43- sendEvent (JPushConstans .NOTIFICATION_EVENT , writableMap );
44- super .onNotifyMessageArrived (context , notificationMessage );
30+ WritableMap writableMap = JPushHelper .convertNotificationToMap (JPushConstans .NOTIFICATION_ARRIVED , notificationMessage );
31+ JPushHelper .sendEvent (JPushConstans .NOTIFICATION_EVENT , writableMap );
4532 }
4633
4734 @ Override
4835 public void onNotifyMessageOpened (Context context , NotificationMessage notificationMessage ) {
4936 JPushLogger .d ("onNotifyMessageOpened:" + notificationMessage .toString ());
50- WritableMap writableMap = convertNotificationToMap (JPushConstans .NOTIFICATION_OPENED , notificationMessage );
51- sendEvent (JPushConstans .NOTIFICATION_EVENT , writableMap );
52- super .onNotifyMessageOpened (context , notificationMessage );
37+ if (JPushModule .reactContext != null ) {
38+ WritableMap writableMap = JPushHelper .convertNotificationToMap (JPushConstans .NOTIFICATION_OPENED , notificationMessage );
39+ JPushHelper .sendEvent (JPushConstans .NOTIFICATION_EVENT , writableMap );
40+ } else {
41+ super .onNotifyMessageOpened (context , notificationMessage );
42+ }
5343 }
5444
5545 @ Override
5646 public void onNotifyMessageDismiss (Context context , NotificationMessage notificationMessage ) {
5747 JPushLogger .d ("onNotifyMessageDismiss:" + notificationMessage .toString ());
58- WritableMap writableMap = convertNotificationToMap (JPushConstans .NOTIFICATION_DISMISSED , notificationMessage );
59- sendEvent (JPushConstans .NOTIFICATION_EVENT , writableMap );
60- super .onNotifyMessageDismiss (context , notificationMessage );
48+ WritableMap writableMap = JPushHelper .convertNotificationToMap (JPushConstans .NOTIFICATION_DISMISSED , notificationMessage );
49+ JPushHelper .sendEvent (JPushConstans .NOTIFICATION_EVENT , writableMap );
6150 }
6251
6352 @ Override
6453 public void onRegister (Context context , String registrationId ) {
6554 JPushLogger .d ("onRegister:" + registrationId );
66- super .onRegister (context , registrationId );
6755 }
6856
6957 @ Override
7058 public void onConnected (Context context , boolean state ) {
7159 JPushLogger .d ("onConnected state:" + state );
7260 WritableMap writableMap = Arguments .createMap ();
7361 writableMap .putBoolean (JPushConstans .CONNECT_ENABLE , state );
74- sendEvent (JPushConstans .CONNECT_EVENT , writableMap );
75- super .onConnected (context , state );
62+ JPushHelper .sendEvent (JPushConstans .CONNECT_EVENT , writableMap );
7663 }
7764
7865 @ Override
@@ -83,32 +70,28 @@ public void onCommandResult(Context context, CmdMessage message) {
8370 writableMap .putString (JPushConstans .COMMAND_EXTRA , message .extra .toString ());
8471 writableMap .putString (JPushConstans .COMMAND_MESSAGE , message .msg );
8572 writableMap .putInt (JPushConstans .COMMAND_RESULT , message .errorCode );
86- sendEvent (JPushConstans .COMMAND_EVENT , writableMap );
87- super .onCommandResult (context , message );
73+ JPushHelper .sendEvent (JPushConstans .COMMAND_EVENT , writableMap );
8874 }
8975
9076 @ Override
9177 public void onTagOperatorResult (Context context , JPushMessage jPushMessage ) {
9278 JPushLogger .d ("onTagOperatorResult:" + jPushMessage .toString ());
93- WritableMap writableMap = convertJPushMessageToMap (1 , jPushMessage );
94- sendEvent (JPushConstans .TAG_ALIAS_EVENT , writableMap );
95- super .onTagOperatorResult (context , jPushMessage );
79+ WritableMap writableMap = JPushHelper .convertJPushMessageToMap (1 , jPushMessage );
80+ JPushHelper .sendEvent (JPushConstans .TAG_ALIAS_EVENT , writableMap );
9681 }
9782
9883 @ Override
9984 public void onCheckTagOperatorResult (Context context , JPushMessage jPushMessage ) {
10085 JPushLogger .d ("onCheckTagOperatorResult:" + jPushMessage .toString ());
101- WritableMap writableMap = convertJPushMessageToMap (2 , jPushMessage );
102- sendEvent (JPushConstans .TAG_ALIAS_EVENT , writableMap );
103- super .onCheckTagOperatorResult (context , jPushMessage );
86+ WritableMap writableMap = JPushHelper .convertJPushMessageToMap (2 , jPushMessage );
87+ JPushHelper .sendEvent (JPushConstans .TAG_ALIAS_EVENT , writableMap );
10488 }
10589
10690 @ Override
10791 public void onAliasOperatorResult (Context context , JPushMessage jPushMessage ) {
10892 JPushLogger .d ("onAliasOperatorResult:" + jPushMessage .toString ());
109- WritableMap writableMap = convertJPushMessageToMap (3 , jPushMessage );
110- sendEvent (JPushConstans .TAG_ALIAS_EVENT , writableMap );
111- super .onAliasOperatorResult (context , jPushMessage );
93+ WritableMap writableMap = JPushHelper .convertJPushMessageToMap (3 , jPushMessage );
94+ JPushHelper .sendEvent (JPushConstans .TAG_ALIAS_EVENT , writableMap );
11295 }
11396
11497 @ Override
@@ -117,67 +100,7 @@ public void onMobileNumberOperatorResult(Context context, JPushMessage jPushMess
117100 WritableMap writableMap = Arguments .createMap ();
118101 writableMap .putInt (JPushConstans .CODE , jPushMessage .getErrorCode ());
119102 writableMap .putInt (JPushConstans .SEQUENCE , jPushMessage .getSequence ());
120- sendEvent (JPushConstans .MOBILE_NUMBER_EVENT , writableMap );
121- super .onMobileNumberOperatorResult (context , jPushMessage );
122- }
123-
124- private WritableMap convertNotificationToMap (String eventType , NotificationMessage message ) {
125- WritableMap writableMap = Arguments .createMap ();
126- writableMap .putString (JPushConstans .NOTIFICATION_EVENT_TYPE , eventType );
127- writableMap .putString (JPushConstans .MESSAGE_ID , message .msgId );
128- writableMap .putString (JPushConstans .TITLE , message .notificationTitle );
129- writableMap .putString (JPushConstans .CONTENT , message .notificationContent );
130- convertExtras (message .notificationExtras , writableMap );
131- return writableMap ;
132- }
133-
134- private WritableMap convertCustomMessage (CustomMessage customMessage ) {
135- WritableMap writableMap = Arguments .createMap ();
136- writableMap .putString (JPushConstans .MESSAGE_ID , customMessage .messageId );
137- writableMap .putString (JPushConstans .CONTENT , customMessage .message );
138- convertExtras (customMessage .extra , writableMap );
139- return writableMap ;
140- }
141-
142- private WritableMap convertJPushMessageToMap (int type , JPushMessage message ) {
143- WritableMap writableMap = Arguments .createMap ();
144- Set <String > tags = message .getTags ();
145- WritableArray tagsArray = Arguments .createArray ();
146- for (String tag : tags ) {
147- tagsArray .pushString (tag );
148- }
149- writableMap .putInt (JPushConstans .CODE , message .getErrorCode ());
150- writableMap .putInt (JPushConstans .SEQUENCE , message .getSequence ());
151- switch (type ) {
152- case 1 :
153- writableMap .putArray (JPushConstans .TAGS , tagsArray );
154- break ;
155- case 2 :
156- writableMap .putBoolean (JPushConstans .TAG_ENABLE , message .getTagCheckStateResult ());
157- writableMap .putString (JPushConstans .TAG , message .getCheckTag ());
158- break ;
159- case 3 :
160- writableMap .putString (JPushConstans .ALIAS , message .getAlias ());
161- break ;
162- }
163- return writableMap ;
164- }
165-
166- private void convertExtras (String extras , WritableMap writableMap ) {
167- if (TextUtils .isEmpty (extras ) || extras .equals ("{}" )) return ;
168- try {
169- WritableMap extrasMap = Arguments .createMap ();
170- JSONObject jsonObject = new JSONObject (extras );
171- Iterator <String > it = jsonObject .keys ();
172- while (it .hasNext ()) {
173- String key = it .next ();
174- String value = jsonObject .getString (key );
175- extrasMap .putString (key , value );
176- }
177- writableMap .putMap (JPushConstans .EXTRAS , extrasMap );
178- } catch (Throwable throwable ) {
179- JPushLogger .w ("convertExtras error:" + throwable .getMessage ());
180- }
103+ JPushHelper .sendEvent (JPushConstans .MOBILE_NUMBER_EVENT , writableMap );
181104 }
182105
183106}
0 commit comments