| package com.secondworld.univeralsdk; | 
|   | 
| import android.content.BroadcastReceiver; | 
| import android.content.Context; | 
| import android.content.Intent; | 
| import android.os.Bundle; | 
| import android.support.v4.content.LocalBroadcastManager; | 
| import android.util.Log; | 
|   | 
| import org.json.JSONException; | 
| import org.json.JSONObject; | 
|   | 
| import java.util.HashMap; | 
| import java.util.Map; | 
|   | 
| import cn.jpush.android.api.JPushInterface; | 
|   | 
| /** | 
|  * Created by Administrator on 2018/6/16 0016. | 
|  */ | 
| public class JPushReceiver extends BroadcastReceiver | 
| { | 
|     private static final String TAG = "JPushReceiver"; | 
|   | 
|     @Override | 
|     public void onReceive(Context context, Intent intent) | 
|     { | 
|         try | 
|         { | 
|             Bundle bundle = intent.getExtras(); | 
|             Log.d(TAG, | 
|                   "[MyReceiver] onReceive - " + intent.getAction() + ", extras: " + printBundle( | 
|                           bundle)); | 
|   | 
|             if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) | 
|             { | 
|                 String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID); | 
|                 Log.d(TAG, "[MyReceiver] 接收Registration Id : " + regId); | 
|                 //send the Registration Id to your server... | 
|                 Map<String, Object> _msgStruct = new HashMap<>(); | 
|                 _msgStruct.put("code", CodeA2U.PushClientID); | 
|                 _msgStruct.put("clientID", regId); | 
|                 UniversalUtil.sendMessageToUnity(_msgStruct); | 
|             } | 
|             else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) | 
|             { | 
|                 processCustomMessage(context, bundle); | 
|             } | 
|             else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) | 
|             { | 
|                 Log.d(TAG, "[MyReceiver] 接收到推送下来的通知"); | 
|                 int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID); | 
|                 Log.d(TAG, "[MyReceiver] 接收到推送下来的通知的ID: " + notifactionId); | 
|             } | 
|             else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) | 
|             { | 
|                 Log.d(TAG, "[MyReceiver] 用户点击打开了通知"); | 
|                 //打开自定义的Activity | 
|                 Intent i = new Intent(context, MainActivity.class); | 
|                 i.putExtras(bundle); | 
|                 i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); | 
|                 context.startActivity(i); | 
|             } | 
|             else if (JPushInterface.ACTION_RICHPUSH_CALLBACK.equals(intent.getAction())) | 
|             { | 
|                 Log.d(TAG, "[MyReceiver] 用户收到到RICH PUSH CALLBACK: " + bundle.getString( | 
|                         JPushInterface.EXTRA_EXTRA)); | 
|                 //在这里根据 JPushInterface.EXTRA_EXTRA 的内容处理代码,比如打开新的Activity, 打开一个网页等.. | 
|             } | 
|             else if (JPushInterface.ACTION_CONNECTION_CHANGE.equals(intent.getAction())) | 
|             { | 
|                 boolean connected = intent.getBooleanExtra(JPushInterface.EXTRA_CONNECTION_CHANGE, | 
|                                                            false); | 
|                 Log.w(TAG, | 
|                       "[MyReceiver]" + intent.getAction() + " connected state change to " + connected); | 
|             } | 
|             else | 
|             { | 
|                 Log.d(TAG, "[MyReceiver] Unhandled intent - " + intent.getAction()); | 
|             } | 
|         } catch (Exception e) | 
|         { | 
|   | 
|         } | 
|   | 
|     } | 
|   | 
|     // 打印所有的 intent extra 数据 | 
|     private static String printBundle(Bundle bundle) | 
|     { | 
|         StringBuilder sb = new StringBuilder(); | 
| //        for (String key : bundle.keySet()) { | 
| //            if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) { | 
| //                sb.append("\nkey:" + key + ", value:" + bundle.getInt(key)); | 
| //            }else if(key.equals(JPushInterface.EXTRA_CONNECTION_CHANGE)){ | 
| //                sb.append("\nkey:" + key + ", value:" + bundle.getBoolean(key)); | 
| //            } else if (key.equals(JPushInterface.EXTRA_EXTRA)) { | 
| //                if (TextUtils.isEmpty(bundle.getString(JPushInterface.EXTRA_EXTRA))) { | 
| //                    Logger.i(TAG, "This message has no Extra data"); | 
| //                    continue; | 
| //                } | 
| // | 
| //                try { | 
| //                    JSONObject json = new JSONObject(bundle.getString(JPushInterface.EXTRA_EXTRA)); | 
| //                    Iterator<String> it =  json.keys(); | 
| // | 
| //                    while (it.hasNext()) { | 
| //                        String myKey = it.next(); | 
| //                        sb.append("\nkey:" + key + ", value: [" + | 
| //                                          myKey + " - " +json.optString(myKey) + "]"); | 
| //                    } | 
| //                } catch (JSONException e) { | 
| //                    Logger.e(TAG, "Get message extra JSON error!"); | 
| //                } | 
| // | 
| //            } else { | 
| //                sb.append("\nkey:" + key + ", value:" + bundle.get(key)); | 
| //            } | 
| //        } | 
|         return sb.toString(); | 
|     } | 
|   | 
| //    public static final String KEY_TITLE = "title"; | 
| //    public static final String KEY_MESSAGE = "message"; | 
| //    public static final String KEY_EXTRAS = "extras"; | 
|   | 
|     //send msg to MainActivity | 
|     private void processCustomMessage(Context context, Bundle bundle) | 
|     { | 
|         Log.d(TAG, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!![MyReceiver] 接收到推送下来的自定义消息: " + bundle.getString( | 
|                 JPushInterface.EXTRA_MESSAGE)); | 
| //        if (MainActivity.isForeground) { | 
| //            String message = bundle.getString(JPushInterface.EXTRA_MESSAGE); | 
| //            String extras = bundle.getString(JPushInterface.EXTRA_EXTRA); | 
| //            Intent msgIntent = new Intent(MainActivity.MESSAGE_RECEIVED_ACTION); | 
| //            msgIntent.putExtra(MainActivity.KEY_MESSAGE, message); | 
| //            if (!UniversalUtil.isEmpty(extras)) { | 
| //                try { | 
| //                    JSONObject extraJson = new JSONObject(extras); | 
| //                    if (extraJson.length() > 0) { | 
| //                        msgIntent.putExtra(MainActivity.KEY_EXTRAS, extras); | 
| //                    } | 
| //                } catch (JSONException e) { | 
| // | 
| //                } | 
| // | 
| //            } | 
| //            LocalBroadcastManager.getInstance(context).sendBroadcast(msgIntent); | 
| //        } | 
|     } | 
| } |