package com.badoo.chateau.example; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.graphics.BitmapFactory; import android.support.annotation.NonNull; import android.support.v4.app.NotificationCompat; import android.support.v4.app.TaskStackBuilder; import android.util.Log; import com.badoo.chateau.example.R; import com.badoo.chateau.example.ui.chat.ChatActivity; import com.badoo.chateau.example.ui.conversations.list.ConversationListActivity; import com.parse.ParsePushBroadcastReceiver; import org.json.JSONException; import org.json.JSONObject; public class PushReceiver extends ParsePushBroadcastReceiver { private static final String TAG = PushReceiver.class.getSimpleName(); private static final String NEW_MESSAGE_IN_CHAT_PUSH = "newMessageInChat"; public PushReceiver() { } @Override public void onReceive(@NonNull Context context, @NonNull Intent intent) { final String payload = intent.getStringExtra(KEY_PUSH_DATA); Log.d(TAG, "Push payload: " + payload); try { JSONObject json = new JSONObject(payload); String type = json.getString("type"); JSONObject data = json.getJSONObject("data"); handlePush(context, type, data); } catch (JSONException e) { Log.e(TAG, "Failed to parse payload", e); } } private void handlePush(@NonNull Context context, @NonNull String type, @NonNull JSONObject data) throws JSONException { final NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); if (NEW_MESSAGE_IN_CHAT_PUSH.equals(type)) { final NotificationCompat.Builder builder = new NotificationCompat.Builder(context) .setContentTitle(data.getString("name")) .setSmallIcon(R.drawable.ic_notification_new_message) .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher)) .setContentText(data.getString("message")) .setAutoCancel(true); builder.setContentIntent(createPendingIntent(context, data.getString("chatId"))); notificationManager.notify(data.getString("userId").hashCode(), builder.build()); } } private PendingIntent createPendingIntent(@NonNull Context context, @NonNull String chatId) { final TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); final Intent conversations = new Intent(context, ConversationListActivity.class); stackBuilder.addNextIntent(conversations); final Intent chat = ChatActivity.create(context, chatId, ""); stackBuilder.addNextIntent(chat); return stackBuilder.getPendingIntent(0, PendingIntent.FLAG_ONE_SHOT); } }