PushMessageReceiver.java

 1package eu.siacs.conversations.services;
 2
 3import android.content.Intent;
 4import android.support.v4.content.ContextCompat;
 5import android.util.Log;
 6
 7import com.google.firebase.messaging.FirebaseMessagingService;
 8import com.google.firebase.messaging.RemoteMessage;
 9
10import java.util.Map;
11
12import eu.siacs.conversations.Config;
13import eu.siacs.conversations.utils.Compatibility;
14
15public class PushMessageReceiver extends FirebaseMessagingService {
16
17	@Override
18	public void onMessageReceived(RemoteMessage message) {
19		if (!EventReceiver.hasEnabledAccounts(this)) {
20			Log.d(Config.LOGTAG,"PushMessageReceiver ignored message because no accounts are enabled");
21			return;
22		}
23		final Map<String, String> data = message.getData();
24		final Intent intent = new Intent(this, XmppConnectionService.class);
25		intent.setAction(XmppConnectionService.ACTION_FCM_MESSAGE_RECEIVED);
26		intent.putExtra("account", data.get("account"));
27		try {
28			if (Compatibility.runsAndTargetsTwentySix(this)) {
29				intent.putExtra(EventReceiver.EXTRA_NEEDS_FOREGROUND_SERVICE, true);
30				ContextCompat.startForegroundService(this, intent);
31			} else {
32				startService(intent);
33			}
34		} catch (IllegalStateException e) {
35			Log.e(Config.LOGTAG,"PushMessageReceiver is not allowed to start service");
36		}
37	}
38
39}