以下是完整的代码
public class MyReceive extends BroadcastReceiver {
private static final String TAG = "JPush"
@Override
public void onReceive(Context context, Intent intent) {
//bundle接收intenet中的数据
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...
} else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
Log.d(TAG, "[MyReceiver] 接收到推送下来的自定义消息: " + bundle.getString(JPushInterface.EXTRA_MESSAGE))
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)
//把数据解析出来然后用EventBus传递过去,我这里只是推送一些文本。
String title = bundle.getString(JPushInterface.EXTRA_NOTIFICATION_TITLE)
String content = bundle.getString(JPushInterface.EXTRA_ALERT)
EventBus.getDefault().post(new MessageNotify(title,content))
} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
Log.d(TAG, "[MyReceiver] 用户点击打开了通知")
//用户点击了通知栏,打开自定义的Activity
Intent i = new Intent(context, MainActivity.class)
Toast.makeText(context, "用户点击了通知...", Toast.LENGTH_SHORT).show()
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))
} 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())
}
}
// 打印所有的 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 {
sb.append("\nkey:" + key + ", value:" + bundle.getString(key))
}
}
return sb.toString()
}
//send msg to ChatUIActivity 收到的是自定义消息
private void processCustomMessage(Context context, Bundle bundle) {
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 (!ExampleUtil.isEmpty(extras)) {
try {
JSONObject extraJson = new JSONObject(extras)
if (null != extraJson && extraJson.length() > 0) {
msgIntent.putExtra(MainActivity.KEY_EXTRAS, extras)
}
} catch (JSONException e) {
}
}
context.sendBroadcast(msgIntent)
}
}
}
只是进行一些简单的解析。 |