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 after receiving message");
36 }
37 }
38
39 @Override
40 public void onNewToken(String token) {
41 if (!EventReceiver.hasEnabledAccounts(this)) {
42 Log.d(Config.LOGTAG,"PushMessageReceiver ignored new token because no accounts are enabled");
43 return;
44 }
45 final Intent intent = new Intent(this, XmppConnectionService.class);
46 intent.setAction(XmppConnectionService.ACTION_FCM_TOKEN_REFRESH);
47 try {
48 if (Compatibility.runsAndTargetsTwentySix(this)) {
49 intent.putExtra(EventReceiver.EXTRA_NEEDS_FOREGROUND_SERVICE, true);
50 ContextCompat.startForegroundService(this, intent);
51 } else {
52 startService(intent);
53 }
54 } catch (IllegalStateException e) {
55 Log.e(Config.LOGTAG,"PushMessageReceiver is not allowed to start service after receiving new token");
56 }
57 }
58
59}