Ich verwende Firebase Cloud Messaging zum Senden von Push-Benachrichtigungen. HierPush-Benachrichtigung funktioniert nicht korrekt, wenn App im Hintergrund oder nicht ausgeführt wird
ist mein FirebaseMessageService
:
public class FireBaseMessageService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.e("TAG", "From: " + remoteMessage.getFrom());
Log.e("TAG", "Notification Message Body: " + remoteMessage.getData().get("CardName")+" : "+remoteMessage.getData().get("CardCode"));
sendNotification(remoteMessage.getNotification().getBody());
}
private void sendNotification(String messageBody) {
Intent intent = new Intent(this, StartActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher_final)
.setContentTitle("Notification")
.setContentText(messageBody)
.setTicker("Test")
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_SOUND)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}
}
Und FirebaseInstanceServer
:
public class FirebaseInstanceService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.e("TAG", "Refreshed token: " + refreshedToken);
// TODO: Implement this method to send any registration to your app's servers.
sendRegistrationToServer(refreshedToken);
}
private void sendRegistrationToServer(String token) {
// Add custom implementation, as needed.
Log.e("TAG", "Refreshed token2: " + token);
}
}
, die in der AndroidManifest
erklärt:
<service
android:name=".util.notifications.FireBaseMessageService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service
android:name=".util.notifications.FirebaseInstanceService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
So Problem, das ist, wenn App ticker
ausgeführt wird, Gut angezeigt und Benachrichtigung com e mit Standardton, aber wenn App im Vordergrund ist oder nicht läuft, wird die Benachrichtigung ohne Ton ausgegeben und ticker
wird nicht in der Statusleiste angezeigt.
Warum passiert das und wie kann ich es beheben?
Dank, Sie haben recht, wenn ich entfernen 'notification' Schlüssel beginne ich recieve Benachrichtigungen richtig – Ololoking
Tim ist richtig, ich würde nur gerne hinzufügen, dass Nachrichten von der Firebase Konsole gesendet Es handelt sich um Benachrichtigungsmeldungen. Wenn Sie die Firebase-Konsole verwenden, müssen Sie sie entsprechend behandeln. –
danke, es hilft mir sehr. –