I am currently working on an Android project.
So far I have implemented Firebase, in particular FirebaseInstanceIdService and FirebaseMessagingService:
public class FirebaseIDService extends FirebaseInstanceIdService { private static final String TAG = "FirebaseIDService"; private Context context; @Override public void onTokenRefresh() { context = getApplicationContext(); // Get updated InstanceID token. String refreshedToken = FirebaseInstanceId.getInstance().getToken(); Log.e(TAG, "Refreshed token: " + refreshedToken); SharedPreferences sharedPreferences = context.getSharedPreferences("token", context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("token", refreshedToken); editor.commit(); sendRegistrationToServer(refreshedToken); } /** * Persist token to backend. * @param token The new token. */ private void sendRegistrationToServer(String token) { SendRegistrationKey task = new SendRegistrationKey(context); task.execute(token); }
}
public class MessagingService extends FirebaseMessagingService { private static final String TAG = "MsgService"; /** * Called when message is received. * * @param remoteMessage Object representing the message received from Firebase Cloud Messaging. */ @Override public void onMessageReceived(RemoteMessage remoteMessage) { Log.e(TAG, "From: " + remoteMessage.getFrom()); // Check if message contains a data payload. if (remoteMessage.getData().size() > 0) { Log.e(TAG, "Message data payload: " + remoteMessage.getData()); } // Check if message contains a notification payload. if (remoteMessage.getNotification() != null) { Log.e(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); sendNotification(remoteMessage); } // 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] private void sendNotification(RemoteMessage remoteMessage) { RemoteMessage.Notification notification = remoteMessage.getNotification(); PushNotificationManager PNManager = PushNotificationManager.getInstance(getApplicationContext()); PNManager.buildNotification(notification.getTitle(), notification.getBody()); }
I want to achieve the following:
When the application is in the background, I just want to get a simple notification in the notification center. (It already works)
BUT, when the application is in the foreground and is currently running, I want to have a different behavior: I want to use a push notification and show a warning instead.
But my question is: how can I interact with the current action from the service or what is the right way to achieve the intended behavior? It must be a simple heart, right?
Thanks in advance
android firebase firebase-cloud-messaging
fabi_k
source share