Я переключаюсь с GCM на FCM. Я использую его только для отправки сообщений на мой сервер через FCM. Я использовал FirebaseMessagingService
для реализации обратных вызовов. Например, onSendError()
работает просто отлично, но onMessageSent()
никогда не выполняется ... Я не знаю, действительно ли это релевантно, но я отправляю строчку «ack» с моего сервера, когда сообщение получено.Firebase Cloud Messaging onMessageSent не называется
Мой FirebaseMessegingService класс:
public class FCMListenerService extends FirebaseMessagingService {
public FCMListenerService() {
super();
}
@Override
public void onDeletedMessages() {
Log.d("wouter", "onDeletedMessages: ");
super.onDeletedMessages();
}
@Override
public void onMessageSent(String msgID) {
Log.e("wouter", "##########onMessageSent: " + msgID);
super.onMessageSent(msgID);
Database database = new Database(this);
database.confirmFCMMessageSend(msgID);
database.closeDatabase();
}
@Override
public void onSendError(String msgID, Exception exception) {
Log.e("wouter", "onSendError ", exception);
super.onSendError(msgID, exception);
Database database = new Database(this);
database.eraseFCMMsgIDFromFGMMessageLog(msgID);
database.closeDatabase();
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
}
}
И соответствующая часть моего манифеста:
<service android:name=".FCM.FCMListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
Сколько сообщений вы пытались отправить? Если вы отправили сообщение успешно, вы можете не получить обратный вызов в течение некоторого времени. Это поможет при работе от аккумулятора. Попробуйте отправить 10 или более восходящих сообщений, вы должны получить обратный вызов onMessageSent после примерно 10 сообщений. –
Я много тестировал и отправлял кучу сообщений, так что это не так ... –