Я работаю над созданием Android версии приложения iOS, которое я сделал ранее в этом году. У меня есть Python Flask API, который должен отправлять уведомления pu sh через Firebase Cloud Messaging на устройства Android и iOS, когда вызывается определенная конечная точка.
My iOS приложение работает отлично, но на Android я не получаю никаких уведомлений (ни на переднем, ни на заднем плане).
В моем коде Python я использую MulticastMessage
:
push_notification = messaging.MulticastMessage(
device_tokens,
notification=messaging.Notification(title=title, body=message),
data=data,
apns=messaging.APNSConfig(
payload=messaging.APNSPayload(
messaging.Aps(sound="default")
)
),
android=messaging.AndroidConfig(
notification=messaging.AndroidNotification(
sound="default"
)
)
)
response = messaging.send_multicast(push_notification)
device_tokens
- это список токенов регистрации устройств, на которые я хочу отправить уведомление. Я проверил, что один из токенов действительно является токеном, который использует мой Android Клиент. data
- это словарь следующей формы:
{
"uid": "<user-uid-here>"
}
На стороне клиента я старался очень внимательно следить за документацией. Я добавил свой google-services.json
файл, добавил и применил плагин в файлах Gradle, и добавил зависимость Firebase Messaging. Затем я создал службу обмена сообщениями и обновил манифест приложения:
MessagingService. java
public class MessagingService extends FirebaseMessagingService {
public MessagingService() {
super();
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Log.w("Debug", "RECEIVED MESSAGE");
}
}
AndroidManifest. xml
<!--Inside application tag-->
<service
android:name=".model.MessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@mipmap/ic_launcher" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/colorAccent" />
Следует отметить, что в какой-то момент это работало (иногда я получал уведомление, иногда не получал), но я не могу точно вспомнить, что я сделал, что сломало его (если я вообще что-то сделал).
Я гуглил во многих местах, но, похоже, ничего не работает.
Я что-то упустил? Я уверен, что проблема не в сервере, поскольку приложение iOS прекрасно обрабатывает уведомления.
ПРИМЕЧАНИЕ. Я хочу получать сообщения как из основного, так и из фонового состояния.
РЕДАКТИРОВАТЬ: я запускаю это на эмуляторе; возможно, это может быть связано с проблемой? Я иногда помню, как устройство долго не получало уведомление ...