com.touristadev.tourista.services.MyFirebaseMessagingService.java Source code

Java tutorial

Introduction

Here is the source code for com.touristadev.tourista.services.MyFirebaseMessagingService.java

Source

/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 * <p>
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * <p>
 * http://www.apache.org/licenses/LICENSE-2.0
 * <p>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.touristadev.tourista.services;

import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.TaskStackBuilder;
import android.util.Log;

import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import com.touristadev.tourista.R;
import com.touristadev.tourista.activities.RequestActivity;
import com.touristadev.tourista.dataModels.BookedPackage;
import com.touristadev.tourista.dataModels.TouristaPackages;

public class MyFirebaseMessagingService extends FirebaseMessagingService {

    private static final String TAG = "MyFirebaseMsgService";

    /**
     * Called when message is received.
     *
     * @param remoteMessage Object representing the message received from Firebase Cloud Messaging.
     */
    // [START receive_message]
    //    @Override
    //    public void onMessageReceived(RemoteMessage remoteMessage) {
    //        // [START_EXCLUDE]
    //        // There are two types of messages data messages and notification messages. Data messages are handled
    //        // here in onMessageReceived whether the app is in the foreground or background. Data messages are the type
    //        // traditionally used with GCM. Notification messages are only received here in onMessageReceived when the app
    //        // is in the foreground. When the app is in the background an automatically generated notification is displayed.
    //        // When the user taps on the notification they are returned to the app. Messages containing both notification
    //        // and data payloads are treated as notification messages. The Firebase console always sends notification
    //        // messages. For more see: https://firebase.google.com/docs/cloud-messaging/concept-options
    //        // [END_EXCLUDE]
    //
    //        // TODO(developer): Handle FCM messages here.
    //        // Not getting messages here? See why this may be: https://goo.gl/39bRNJ
    //        Log.d(TAG, "From: " + remoteMessage.getFrom());
    //
    //        // Check if message contains a data payload.
    //        if (remoteMessage.getData().size() > 0) {
    //            Log.d(TAG, "Message data payload: " + remoteMessage.getData());
    //        }
    //
    //        // Check if message contains a notification payload.
    //        if (remoteMessage.getNotification() != null) {
    ////            if (CurrentUser.toggle) {
    //            String packagename = remoteMessage.getData().get("message");
    ////            String date = remoteMessage.getData().get("date");
    ////            String numpass = remoteMessage.getData().get("numpass");
    ////            String packagename = remoteMessage.getData().get("message");
    ////
    ////            if(remoteMessage.getData().get("numpass")>)
    //
    //            sendNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody(), packagename);
    ////            }
    //        }

    // Also if you intend on generating your own notifications as a result of a received FCM
    // message, here is where that should be initiated. See sendNotification method below.
    //    }
    // [END receive_message]

    /**
     * Create and show a simple notification containing the received FCM message.
     *
     * @param remoteMessage FCM message body received.
     */
    //    private void sendNotification(String title, String messageBody, String packagename) {
    //        ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
    //        List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
    //        Log.d("topActivity", "CURRENT Activity ::" + taskInfo.get(0).topActivity.getClassName());
    //        ComponentName componentInfo = taskInfo.get(0).topActivity;
    //        componentInfo.getPackageName();
    //
    //        Intent intent = new Intent(this, taskInfo.get(0).topActivity.getClass());
    //
    //        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    //        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
    //                PendingIntent.FLAG_ONE_SHOT);
    //
    //        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    //        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
    //                .setSmallIcon(R.mipmap.ic_tourista)
    //                .setContentTitle(title)
    //                .setContentText(messageBody)
    //                .setAutoCancel(true)
    //                .setSound(defaultSoundUri)
    //                .setContentIntent(pendingIntent);
    //
    //
    //        NotificationManager notificationManager =
    //                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    //
    ////
    //        notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
    //        Intent myIntent = new Intent(getApplicationContext(), TGTourActivity.class);
    //
    //        myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    //        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, myIntent,
    //                PendingIntent.FLAG_ONE_SHOT);
    //
    //        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    //        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
    //                .setSmallIcon(R.mipmap.ic_tourista)
    //                .setContentTitle(title)
    //                .setContentText(messageBody)
    //                .setAutoCancel(true)
    //                .setSound(defaultSoundUri)
    //                .setContentIntent(pendingIntent);
    //
    //        NotificationManager notificationManager =
    //                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    //        notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());

    //
    //        Intent intent2 = new Intent(getApplicationContext(), RequestActivity.class);
    //        intent2.putExtra("PackageName", packagename);
    //        // your application to the Home screen.
    //        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    //        // Adds the back stack for the Intent (but not the Intent itself)
    //        stackBuilder.addParentStack(TGTourActivity.class);
    //        // Adds the Intent that starts the Activity to the top of the stack
    //        stackBuilder.addNextIntent(intent2);
    //
    //        PendingIntent contentIntent = stackBuilder.getPendingIntent(0,
    //                PendingIntent.FLAG_UPDATE_CURRENT);
    //        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    //        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
    //                .setSmallIcon(R.mipmap.ic_notification_marker)
    //                .setContentTitle(title)
    //                .setContentText(messageBody)
    //                .setAutoCancel(true)
    //                .setSound(defaultSoundUri)
    //                .setContentIntent(contentIntent);
    //
    //        NotificationManager notificationManager =
    //                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    //
    //        notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
    //
    //
    //
    //
    //    }

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {

        Log.d(TAG, "From: " + remoteMessage.getFrom());

        // Check if message contains a data payload.
        if (remoteMessage.getData().size() > 0) {
            Log.d(TAG, "Message data payload: " + remoteMessage.getData());
        }

        // Check if message contains a notification payload.
        if (remoteMessage.getNotification() != null) {
            String tourName = remoteMessage.getData().get("nameOfTourist");
            String numPerson = remoteMessage.getData().get("numberOfPerson");
            String packId = remoteMessage.getData().get("packageId");
            String reserveD = remoteMessage.getData().get("reserveDate");
            String paymentTG = remoteMessage.getData().get("paymentforTG");
            String notifType = remoteMessage.getData().get("notifType");
            TouristaPackages pg;

            //            if(notifType.equals("Request"))
            //            {
            //                BookedPackage fbns = new BookedPackage(pg,reserveD,tourName,numPerson,paymentTG,ControllerFinal.PACKAGE_REQUEST);
            //                ControllerFinal.addRequestPackage(fbns);
            //                Log.d("SweepChampion", ControllerFinal.getRecentList().toString());
            //                sendNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody(), fbn);
            //
            ////                Intent i= new Intent(getApplicationContext(),RequestActivity.class);
            ////                startActivity(i);
            //
            //            }
        }

    }

    /**
     * Create and show a simple notification containing the received FCM message.
     *
     * @param messageBody FCM message body received.
     */
    public void sendNotification(String title, String messageBody, BookedPackage fbnot) {

        Intent intent2 = new Intent(getApplicationContext(), RequestActivity.class);
        intent2.putExtra("numberOfPerson", fbnot.getNumOfPeople());
        intent2.putExtra("packageId", fbnot.getPackageId());
        intent2.putExtra("reserveDate", fbnot.getReserveDate());

        // your application to the Home screen.
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        // Adds the back stack for the Intent (but not the Intent itself)
        stackBuilder.addParentStack(RequestActivity.class);
        // Adds the Intent that starts the Activity to the top of the stack
        stackBuilder.addNextIntent(intent2);

        PendingIntent contentIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.mipmap.ic_notification_marker).setContentTitle(title).setContentText(messageBody)
                .setAutoCancel(true).setSound(defaultSoundUri).setContentIntent(contentIntent);

        NotificationManager notificationManager = (NotificationManager) getSystemService(
                Context.NOTIFICATION_SERVICE);

        notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());

    }
}