2017-06-21 44 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 ....!該文件說同樣的事情。感謝您的建議! –