2017-06-21 11 views
0

デバイスにFirebaseトークンを使用してメッセージを送信しようとすると、そのデバイスにはインターネット接続が確立されず、どのようなレスポンスが生成されますか?特に「エラー」メッセージが生成されるかどうかを知りたいですか?オフラインデバイスのFirebaseレスポンス

は、私は、デバイスがオフラインであるという理由だけで私のデータベースからトークンを削除したくない

while(rs.next()) 
     { 
     URL url = new URL(API_URL_FCM); 
     HttpURLConnection conn; 
     conn = (HttpURLConnection) url.openConnection(); 
     conn.setUseCaches(false); 
     conn.setDoInput(true); 
     conn.setDoOutput(true); 
     conn.setRequestMethod("POST"); 
     conn.setRequestProperty("Authorization","key="+AUTH_KEY_FCM); 
     conn.setRequestProperty("Content-Type","application/json"); 
     JSONObject infoJson = new JSONObject(); 
     infoJson.put("title","Vehicle Alert"); 
     String alert=request.getParameter("alert"); 
     infoJson.put("body", alert); 
     String token; 
     OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 


     token=rs.getString(1); 
     JSONObject json = new JSONObject(); 
     json.put("to",token.trim()); 
     json.put("data", infoJson); 
     wr.write(json.toString()); 
     out.println("<br>Message sent from server to firebase for Token : "+token+"</br>"); 
     wr.flush(); 
     int status = 0; 
     if(null != conn){ 
      status = conn.getResponseCode(); 
      } 
      if(status != 0){ 
          if(status == 200) 
          {//SUCCESS message 
          BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream())); 
          Boolean res=br.readLine().contains("error"); 
          if(res) //Remove Invalid Token(s) 
          { 
           Statement st=con.createStatement(); 
           query="DELETE from Token WHERE token='"+token+"'"; 
           st.executeUpdate(query); 
           out.println("<br>Unvalid Token removed from Database</br>"); 
          } 
          } 
          else if(status == 401) 
          { 
          //client side error 

以下のコードを見てみましょう。トークンは、もはや有効でない場合にのみ削除する必要があります。 提案がありますか?

答えて

0

FCMサーバにメッセージを送信すると、メッセージ自体とターゲットが有効である(つまり、使用するデバイストークンがプロジェクトの一部である)ことを検証します。メッセージがすべて順番に並んでいる場合は、メッセージを受け取り、200を返します。メッセージが実際にデバイスに配信されたかどうかをこの応答から検出する方法はありません。

+0

Yess ....!ドキュメントも同じことを言います。提案をありがとう!!!! –

関連する問題