Android 脱机设备的Firebase响应

Android 脱机设备的Firebase响应,android,jsp,firebase,firebase-cloud-messaging,Android,Jsp,Firebase,Firebase Cloud Messaging,如果我尝试使用Firebase令牌向设备发送消息,而该设备没有internet连接,将生成什么响应?我特别想知道是否会生成任何“错误”消息 请看下面的代码 while(rs.next()) { URL url = new URL(API_URL_FCM); HttpURLConnection conn; conn = (HttpURLConnection) url.openConnection(); conn.se

如果我尝试使用Firebase令牌向设备发送消息,而该设备没有internet连接,将生成什么响应?我特别想知道是否会生成任何“错误”消息

请看下面的代码

 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
while(rs.next())
{
URL=新URL(API\u URL\u FCM);
httpurl连接连接;
conn=(HttpURLConnection)url.openConnection();
conn.SETUSECHACHES(假);
conn.setDoInput(真);
连接设置输出(真);
conn.setRequestMethod(“POST”);
conn.setRequestProperty(“授权”、“密钥=“+AUTH\u key\u FCM”);
conn.setRequestProperty(“内容类型”、“应用程序/json”);
JSONObject infoJson=新的JSONObject();
infoJson.put(“标题”、“车辆警报”);
字符串警报=request.getParameter(“警报”);
infoJson.put(“body”,警报);
字符串标记;
OutputStreamWriter wr=新的OutputStreamWriter(conn.getOutputStream());
token=rs.getString(1);
JSONObject json=新的JSONObject();
put(“to”,token.trim());
put(“数据”,infoJson);
write(json.toString());
out.println(“
从服务器发送到firebase的令牌消息:“+Token+”
”; wr.flush(); int status=0; 如果(空!=conn){ 状态=连接getResponseCode(); } 如果(状态!=0){ 如果(状态==200) {//成功消息 BufferedReader br=新的BufferedReader(新的InputStreamReader(conn.getInputStream()); 布尔res=br.readLine().contains(“错误”); if(res)//删除无效令牌 { 语句st=con.createStatement(); query=“从令牌中删除,其中令牌=”+令牌+”; st.executeUpdate(查询); out.println(“
从数据库中删除的未验证令牌”
”; } } 否则如果(状态==401) { //客户端错误
我不想仅仅因为设备处于脱机状态就从数据库中删除令牌。当且仅当令牌不再有效时,才应删除该令牌。
有什么建议吗?

当您向FCM服务器发送消息时,它会验证消息本身和目标是否有效(即,您使用的任何设备令牌都是项目的一部分)。如果这些都正常,它将接受该消息并返回200。无法从该响应中检测消息是否实际传递到设备