- При отправке уведомления от пожарной базы он назовет метод
onMessageReceived
. Больше информации https://firebase.google.com/docs/cloud-messaging/android/receive
- То же самое -
onMessageReceived
будет называться.
- То же самое -
onMessageReceived
будет называться.
Вам необходимо настроить службу в своем приложении, и служба будет прослушивать уведомления. Служба будет запущена, даже если вы убьете свое приложение.
Теперь, когда вы нажимаете на свое сообщение, он откроет вашу MainActivity или любую другую деятельность, которую вы настроили на намерение уведомления. См. Пример ниже.
Существуют различные способы разместить ваше приложение в фоновом режиме. Если вы нажмете кнопку «Назад», она убьет MainActivity. Если вы нажмете кнопку «домой», она не убьет MainActivity.
И применение метода onCreate вызывается только тогда, когда ваше приложение запущено и не было в фоновом режиме. Если приложение находится в фоновом режиме, то метод onCreate приложения не будет запущен.
Метод MainActivity onCreate будет вызываться, когда вы нажимаете на уведомляющее сообщение или запускаете приложение из фона после того, как вы его закрыли с помощью кнопки «Назад».
Для значений: Я не знаю, где вы устанавливаете свои значения, но если вы установили свои значения в методе службы firebase onMessageReceived
, тогда ваши значения будут инициализированы при запуске MainActivity. Если ваше приложение не работает в фоновом режиме (это означает, что ваше приложение закрыто, и вы удалили его из фона), тогда ваши значения могут быть пустыми до вызова метода onMessageReceived
.
Вот один пример моего firebase службы, где вы можете увидеть, что я использую также MainActivity действий (Intent I = новый Intent (это, MainActivity.class);), когда пользователь нажимает на сообщение:
public class FirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService {
String TAG = "Notifications";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d(TAG, "From: " + remoteMessage.getFrom());
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
}
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
Intent i = new Intent(this, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT);
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setAutoCancel(true)
.setContentTitle(remoteMessage.getNotification().getTitle())
.setContentText(remoteMessage.getNotification().getBody())
.setColor(0xffff7700)
.setSmallIcon(R.drawable.ic_launcher)
.setVibrate(new long[] { 100, 100, 100, 100})
.setLights(0xffff7700, 300, 1000)
.setSound(alarmSound)
.setPriority(Notification.PRIORITY_MAX)
.setContentIntent(pendingIntent);
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(new Random().nextInt(),builder.build());
}
}
Спасибо за подробное объяснение. – Nagarjun