3

PHPのサーバー側からいくつかの登録IDに通知を送信しています。 これが要求です:複数のregistration_idsを対象とするとfcmの登録IDが失敗しました

public function androidPushNotification($registration_ids, $title, $message) { 
    $msg = array (
      'message' => $message, 
      'title' => $title 
    ); 

    $fields = array (
      'registration_ids' => $registration_ids, 
      'data' => $msg 
    ); 

    $headers = array (
      'Authorization: key=' . $this->API_ACCESS_KEY, 
      'Content-Type: application/json' 
    ); 

    $ch = curl_init(); 
    curl_setopt ($ch, CURLOPT_URL, $this->GCM_URL); 
    curl_setopt ($ch, CURLOPT_POST, true); 
    curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt ($ch, CURLOPT_POSTFIELDS, json_encode ($fields)); 
    $result = curl_exec ($ch); 
    curl_close ($ch); 

    return $result; 
} 

registration_ids変数が配列で2つの登録IDを持って、そのうちの一つは、クライアントアプリケーションの古いインストールからのものであり、その他は現在のものです。

私はFCMからこの応答を取得しています:

{ 
    "multicast_id": 7860323906688398625, 
    "success": 1, 
    "failure": 1, 
    "canonical_ids": 0, 
    "results": [ 
    { 
     "error": "NotRegistered" 
    }, 
    { 
     "message_id": "0:1478735313889582%1b153de0f9fd7ecd" 
    } 
    ] 
} 

どのように私は失敗した登録IDのかを知ることができますか?

この情報を取得する別のオプションはありますか?

よろしくお願いいたします。

答えて

6

私は答えを見つけました:

結果の配列は、登録IDと同じ順序です。 例えば、要求がある場合:

$fields = array (
      'registration_ids' => array('123456','987654'), 
      'data' => array ('message' => 'This is the message','title' => 'Hi there!') 
); 

例応答:

{ 
    "multicast_id": 7860323906688398625, 
    "success": 1, 
    "failure": 1, 
    "canonical_ids": 0, 
    "results": [ 
    { 
     "error": "NotRegistered" 
    }, 
    { 
     "message_id": "0:1478735313889582%1b153de0f9fd7ecd" 
    } 
    ] 
} 

失敗した登録IDは123456です。 GCMドキュメントから

:ここ

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

  • :返され、3つのエラー:この例では

    { 
        "multicast_id": 216, 
        "success": 3, 
        "failure": 3, 
        "canonical_ids": 1, 
        "results": [ 
        { "message_id": "1:0408" }, 
        { "error": "Unavailable" }, 
        { "error": "InvalidRegistration" }, 
        { "message_id": "1:1516" }, 
        { "message_id": "1:2342", "registration_id": "32" }, 
        { "error": "NotRegistered"} 
        ] 
    } 
    

    メッセージ:成功、必須ではありません。

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

私はそれが助けてくれることを願っています。

関連する問題