2016-05-26 18 views
4

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> 
+0

送信しようとしたメッセージの数はいくつですか? onMessageSentのacksはバッチ処理されるので、メッセージを正常に送信すると、しばらくの間コールバックを受け取らないことがあります。これはバッテリ寿命を助けるためのものです。 10以上のアップストリームメッセージを送信しようとすると、約10メッセージ後にonMessageSentコールバックを受信する必要があります。 –

+0

私はたくさんのテストをして、たくさんのメッセージを送ったので、そうではありません。 –

答えて

4

は同じ問題を抱えていたとthis answerの第二の部分は私のためにそれを修正しました。 基本的には、送信するメッセージにTTLを設定する必要があります。 次のようなもの:

RemoteMessage myMessage = new RemoteMessage.Builder(SENDER_ID + "@gcm.googleapis.com").setMessageId(id).setData(data).setTtl(86400).build(); 
+0

これは機能します!ありがとう! –

+1

この問題はFirebaseのサポートに報告しました。彼らはそれをバグとして認めたが、修正のタイムラインを提供することはできなかった。将来のある時点で、これは修正される予定です。新しいバージョンのリリースノートをしばらくの間はチェックしても害はありません。 – Moritz

+0

この問題はまだFirebase APIにあります。 – Tasneem

関連する問題