You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			115 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Java
		
	
			
		
		
	
	
			115 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Java
		
	
// Copyright 2020 The Chromium Authors. All rights reserved.
 | 
						|
// Use of this source code is governed by a BSD-style license that can be
 | 
						|
// found in the LICENSE file.
 | 
						|
 | 
						|
package io.flutter.plugins.firebase.messaging;
 | 
						|
 | 
						|
import android.content.BroadcastReceiver;
 | 
						|
import android.content.Context;
 | 
						|
import android.content.Intent;
 | 
						|
import android.util.Log;
 | 
						|
 | 
						|
import java.util.Timer;
 | 
						|
import java.util.TimerTask;
 | 
						|
 | 
						|
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
 | 
						|
 | 
						|
import com.google.firebase.messaging.RemoteMessage;
 | 
						|
 | 
						|
import java.util.HashMap;
 | 
						|
import java.util.concurrent.TimeUnit;
 | 
						|
 | 
						|
public class FlutterFirebaseMessagingReceiver extends BroadcastReceiver {
 | 
						|
    private static final String TAG = "FLTFireMsgReceiver";
 | 
						|
    static HashMap<String, RemoteMessage> notifications = new HashMap<>();
 | 
						|
 | 
						|
    @Override
 | 
						|
    public void onReceive(Context context, Intent intent) {
 | 
						|
        Log.d(TAG, "broadcast received for message");
 | 
						|
        if (ContextHolder.getApplicationContext() == null) {
 | 
						|
            ContextHolder.setApplicationContext(context.getApplicationContext());
 | 
						|
        }
 | 
						|
 | 
						|
        if (intent.getExtras() == null) {
 | 
						|
            Log.d(
 | 
						|
                    TAG,
 | 
						|
                    "broadcast received but intent contained no extras to process RemoteMessage. Operation cancelled.");
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        RemoteMessage remoteMessage = new RemoteMessage(intent.getExtras());
 | 
						|
 | 
						|
        // Store the RemoteMessage if the message contains a notification payload.
 | 
						|
        if (remoteMessage.getNotification() != null) {
 | 
						|
            notifications.put(remoteMessage.getMessageId(), remoteMessage);
 | 
						|
            FlutterFirebaseMessagingStore.getInstance().storeFirebaseMessage(remoteMessage);
 | 
						|
        }
 | 
						|
 | 
						|
        //  |-> ---------------------
 | 
						|
        //      App in Foreground
 | 
						|
        //   ------------------------
 | 
						|
        if (FlutterFirebaseMessagingUtils.isApplicationForeground(context)) {
 | 
						|
            Intent onMessageIntent = new Intent(FlutterFirebaseMessagingUtils.ACTION_REMOTE_MESSAGE);
 | 
						|
            onMessageIntent.putExtra(FlutterFirebaseMessagingUtils.EXTRA_REMOTE_MESSAGE, remoteMessage);
 | 
						|
            LocalBroadcastManager.getInstance(context).sendBroadcast(onMessageIntent);
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        //  |-> ---------------------
 | 
						|
        //    App in Background/Quit
 | 
						|
        //   ------------------------
 | 
						|
 | 
						|
 | 
						|
        if (remoteMessage.getData().containsKey("is_call")) {
 | 
						|
            Intent intent12 = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
 | 
						|
            intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
 | 
						|
            context.startActivity(intent12);
 | 
						|
            try {
 | 
						|
                new Timer().schedule(new TimerTask() {
 | 
						|
                    @Override
 | 
						|
                    public void run() {
 | 
						|
                        Intent onMessageIntent = new Intent(FlutterFirebaseMessagingUtils.ACTION_REMOTE_MESSAGE);
 | 
						|
                        onMessageIntent.putExtra(FlutterFirebaseMessagingUtils.EXTRA_REMOTE_MESSAGE, remoteMessage);
 | 
						|
                        LocalBroadcastManager.getInstance(context).sendBroadcast(onMessageIntent);
 | 
						|
                    }
 | 
						|
                }, 5000);
 | 
						|
            } catch (Exception e) {
 | 
						|
                Log.e("AppCallingException", e.getMessage());
 | 
						|
            }
 | 
						|
            // super.onMessageReceived(remoteMessage);
 | 
						|
        } //else
 | 
						|
        //    super.onMessageReceived(remoteMessage);
 | 
						|
//
 | 
						|
//        if (remoteMessage.getData().containsKey("is_call")) {
 | 
						|
//            Log.e("AppCalling", "started...");
 | 
						|
//            Intent intent12 = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
 | 
						|
//            intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
 | 
						|
//            context.startActivity(intent12);
 | 
						|
//            try {
 | 
						|
//                Log.e("AppCalling", "going to sleep...");
 | 
						|
//                TimeUnit.SECONDS.sleep(10);
 | 
						|
//                Log.e("AppCalling", "sendig to broadcast receiver...");
 | 
						|
//                Log.e("AppCalling:DAta", remoteMessage.getData().containsKey("is_call") + "");
 | 
						|
//                Intent onBackgroundMessageIntent =
 | 
						|
//                        new Intent(context, FlutterFirebaseMessagingBackgroundService.class);
 | 
						|
//                onBackgroundMessageIntent.putExtra(
 | 
						|
//                        FlutterFirebaseMessagingUtils.EXTRA_REMOTE_MESSAGE, remoteMessage);
 | 
						|
//                FlutterFirebaseMessagingBackgroundService.enqueueMessageProcessing(
 | 
						|
//                        context, onBackgroundMessageIntent);
 | 
						|
//                //return;
 | 
						|
//            } catch (Exception e) {
 | 
						|
//                Log.e("AppCallingException", e.getMessage());
 | 
						|
//            }
 | 
						|
//
 | 
						|
//        }
 | 
						|
 | 
						|
 | 
						|
        Intent onBackgroundMessageIntent =
 | 
						|
                new Intent(context, FlutterFirebaseMessagingBackgroundService.class);
 | 
						|
        onBackgroundMessageIntent.putExtra(
 | 
						|
                FlutterFirebaseMessagingUtils.EXTRA_REMOTE_MESSAGE, remoteMessage);
 | 
						|
        FlutterFirebaseMessagingBackgroundService.enqueueMessageProcessing(
 | 
						|
                context, onBackgroundMessageIntent);
 | 
						|
    }
 | 
						|
}
 |