1

FCMを通じてサーバーにデータを送信するアプリケーションを開発しています。Firebase Cloud Messagingは、Acknowledgeを送信してもアップストリームメッセージを複数回送信します

<message to="[email protected]" id="R88Ub-10"> 
    <gcm xmlns="google:mobile:data"> 
    { 
     "to":"dpDymtuUdEO-...-MRDQvLXMhfnEEUqEYZfs", 
     "message_id":"64cc690-...-227a0b7eb61", 
     "message_type":"ack" 
    } 
    </gcm> 
</message> 

(:私のサーバーは、私は私のAndroidアプリから送信すると、私は、このAckメッセージを送るメッセージを受信

<message id=""> 
    <gcm xmlns="google:mobile:data"> 
    { 
     "to":"REGID", 
     "message_id":"m-123" 
     "message_type":"ack" 
    } 
    </gcm> 
</message> 

the Firebase Docsによると、私はこのようになりますACKメッセージを送信する必要があります"-...-"部分はコードの短縮/匿名化に過ぎません)

しかし、私がサーバを再起動した場合、私はすでに取得したメッセージを受信して​​います。と私のタグの "ID"が、何も動作するようです。

私のACKメッセージで使用する「to」は、ACKにしたいメッセージの「from」です。

私は間違っていますか?私はSmackをXMPPライブラリとして使用しています。

答えて

0

Firebaseチームと連絡した後、メッセージのTTL(Time To Live)を「0」に設定すると助けになりました。 FCMメッセージを送信するコードは、次のようになります。

    fcm.send(new RemoteMessage.Builder(FCMConstants.SENDER_ID + "@gcm.googleapis.com") 
        .setMessageId(msgid) 
        .setData(data) 
        .setTtl(0) 
        .build()); 
関連する問題