Android приложение не получает FCM pu sh уведомление от Python Сервера (iOS is) - PullRequest
0 голосов
/ 18 марта 2020

Я работаю над созданием 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 прекрасно обрабатывает уведомления.

ПРИМЕЧАНИЕ. Я хочу получать сообщения как из основного, так и из фонового состояния.

РЕДАКТИРОВАТЬ: я запускаю это на эмуляторе; возможно, это может быть связано с проблемой? Я иногда помню, как устройство долго не получало уведомление ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...