2017-09-18 17 views
1

Androidデバイスで通知を送信するためにGCM APIを使用してJavaで以下のコードをjavaに実装しました。Java GCM APIを使用してアンドロイドデバイスの失敗プッシュ通知の登録IDを取得する方法

Sender sender = new Sender(GCM_API_KEY); 
    Message.Builder builder = new Message.Builder(); 
    builder.collapseKey(collpaseKey); 
    builder.timeToLive(TTL_HOURS * 3600); 
    if (data != null) { 
     for (PushData messageData : data) { 
      builder.addData(messageData.getKey(), messageData.getValue()); 
     } 
    } 
    if (StreamType.CALL == type) { 
     for (PushData pushData : message) { 
      builder.addData(pushData.getKey(), pushData.getValue()); 
     } 
    } 
    Message msg = builder.build(); 
    try { 
     System.out.println(msg.toString()); 
     MulticastResult result = sender.send(msg, pushId, MAX_RETRY); 
     log.infof("result %s", result.toString()); 
     return true; 
    } 

ここで、pushIdは、通知の送信先となるすべてのデバイスのプッシュIDを含むListのタイプです。

問題は、結果が失敗プッシュIDまたは任意のデバイスIDを含まないため、どのデバイスが通知を受け取っていないかを特定できることです。 注: - 私は1つの

レスポンスにより通知1を送信したくない -

MulticastResult(multicast_id = 7588781423174816193、合計= 5、成功= 1、失敗= 4、canonical_ids = 0を、結果結果: [[のerrorCode = NotRegistered]、[ イベントID = 0:1505731620878025%のf02bfbe47eeff668]、[ のerrorCode = NotRegistered]、[のerrorCode = NotRegistered]、[ のerrorCode = NotRegistered]ない

共同登録IDなどを取得して、デバイスをdbで識別できるようにします。

お問い合わせください。 ありがとうございました。

答えて

0

プッシュIDに間接的に応答すると失敗しました。あなたの例では

[[ errorCode=NotRegistered ], 
[ messageId=0:1505731620878025%f02bfbe47eeff668 ], 
[ errorCode=NotRegistered ], 
[ errorCode=NotRegistered ], 
[ errorCode=NotRegistered ]] 

あなたが第一、第三、第四および第五プッシュIDが失敗したことがわかります。リクエストでプッシュIDを送信した順序を知っているはずなので、どのプッシュIDが失敗したのかを知る必要があります。ここ

documentationから関連する例です:ここ

正常に処理3つのメッセージで(それぞれIDが4、8、15、16、23、及び42 )6人の受信者のJSONの結果は、1つのカノニカルであります 登録トークンが返され、3つのエラー:

{ "multicast_id":216、 "成功":3、 "失敗":3、 "canonical_ids":1、 "結果":[
{ "MESSAGE_ID": "1:0408"}、
{"エラー": "利用できません"}、
{ "エラー": "InvalidRegistration"}、
{ "MESSAGE_ID": "1:1516"}、
{ "MESSAGE_ID": "1:2342"、 "REGISTRATION_ID": "32"}、
{ "エラー": "NotRegistered"}]}この例では

  • まずメッセージ:成功は、必須ではありません。
  • 2番目のメッセージ:(登録トークン8に)再送信する必要があります。
  • 第3メッセージ:回復不能なエラーが発生しました(おそらく、値がデータベースで破損している可能性があります)。
  • 第4メッセージ:成功、何も必要ありません。
  • 第5メッセージ:成功ですが、登録トークンはサーバーデータベース内で更新する必要があります(23から32まで)。
  • 第6メッセージ:アプリケーションが デバイスからアンインストールされたため、登録データベース(42)を削除する必要があります。
関連する問題