aboutsummaryrefslogtreecommitdiffstats
path: root/src/standardPush/java/de/pixart/messenger/services/PushMessageReceiver.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/standardPush/java/de/pixart/messenger/services/PushMessageReceiver.java')
-rw-r--r--src/standardPush/java/de/pixart/messenger/services/PushMessageReceiver.java38
1 files changed, 29 insertions, 9 deletions
diff --git a/src/standardPush/java/de/pixart/messenger/services/PushMessageReceiver.java b/src/standardPush/java/de/pixart/messenger/services/PushMessageReceiver.java
index f07167f8d..594225f3b 100644
--- a/src/standardPush/java/de/pixart/messenger/services/PushMessageReceiver.java
+++ b/src/standardPush/java/de/pixart/messenger/services/PushMessageReceiver.java
@@ -1,16 +1,16 @@
package de.pixart.messenger.services;
-import android.content.Intent;
-import android.support.v4.content.ContextCompat;
-import android.util.Log;
+ import android.content.Intent;
+ import android.support.v4.content.ContextCompat;
+ import android.util.Log;
-import com.google.firebase.messaging.FirebaseMessagingService;
-import com.google.firebase.messaging.RemoteMessage;
+ import com.google.firebase.messaging.FirebaseMessagingService;
+ import com.google.firebase.messaging.RemoteMessage;
-import java.util.Map;
+ import java.util.Map;
-import de.pixart.messenger.Config;
-import de.pixart.messenger.utils.Compatibility;
+ import de.pixart.messenger.Config;
+ import de.pixart.messenger.utils.Compatibility;
public class PushMessageReceiver extends FirebaseMessagingService {
@@ -32,7 +32,27 @@ public class PushMessageReceiver extends FirebaseMessagingService {
startService(intent);
}
} catch (IllegalStateException e) {
- Log.e(Config.LOGTAG, "PushMessageReceiver is not allowed to start service");
+ Log.e(Config.LOGTAG, "PushMessageReceiver is not allowed to start service after receiving message");
+ }
+ }
+
+ @Override
+ public void onNewToken(String token) {
+ if (!EventReceiver.hasEnabledAccounts(this)) {
+ Log.d(Config.LOGTAG, "PushMessageReceiver ignored new token because no accounts are enabled");
+ return;
+ }
+ final Intent intent = new Intent(this, XmppConnectionService.class);
+ intent.setAction(XmppConnectionService.ACTION_FCM_TOKEN_REFRESH);
+ try {
+ if (Compatibility.runsAndTargetsTwentySix(this)) {
+ intent.putExtra(EventReceiver.EXTRA_NEEDS_FOREGROUND_SERVICE, true);
+ ContextCompat.startForegroundService(this, intent);
+ } else {
+ startService(intent);
+ }
+ } catch (IllegalStateException e) {
+ Log.e(Config.LOGTAG, "PushMessageReceiver is not allowed to start service after receiving new token");
}
}
} \ No newline at end of file