2017-06-21 41 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 ....!该文件说同样的事情。感谢您的建议! –