Я отправляю уведомления с моего сервера Flask, используя PyFCM , и тестирую его на одном устройстве Android. Тест выглядит следующим образом: я вошел в систему как пользователь A, и я комментирую сообщение пользователя B, в котором после входа B должно отображаться push-уведомление. Вот как я отправляю уведомление с моего сервера:
registration_id="<device_registration_id>"
message_body = "A has commented on your post."
data_message = {"sender": current_user.id}
result = push_service.notify_single_device(
registration_id=registration_id,
message_body=message_body,
data_message=data_message
)
И вот как я получаю сообщение в службе обмена сообщениями Firebase на Android:
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent resultIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT):
String senderId = remoteMessage.getData().get("sender");
if (senderId != currentUser.id) {
NotificationCompat.Builder mNotificationBuilder = new NotificationCompat.Builder(this, "default_channel")
.setSmallIcon(R.drawable.android_icon)
.setContentTitle("New Comment")
.setContentText(remoteMessage.getNotification().getBody())
.setAutoCancel(true)
.setSound(soundURI)
.setContentIntent(resultIntent);
NoticationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, mNotificationBuilder.build());
}
}
Как видите, у меня есть условие: senderId != currentUser.id
перед тем, как составить уведомление. Это потому, что я использую одно устройство для отправки и получения уведомления, поэтому есть только один registation_id / token для пользователей A и B. Если я уберу это условие, пользователь A получит уведомление сразу после комментирования сообщения B. Я хочу убедиться, что B является тем, кто получает уведомление. Однако после выхода из системы A и входа в систему B я не смог увидеть push-уведомление.