2017-07-20 4 views
0

Ich versuche, eine Verbindung zu Firebase herzustellen, um Push-Benachrichtigungen an eine Android App zu senden. Ich habe folgenden Code in Java Server geschrieben. Aber ich bekomme immer eine Ausnahmeverbindung für die Verbindung.Java serverseitige Verbindung mit Firebase Verbindungszeitüberschreitung

final String apiKey="AAAAeEpqP-w:APA91bFulyT23Km-onTNr_q5yEz4uoOaM8KdE4LMyIoz6kWlk3pJSHirDJBSiqESRXKiGa-Z_tBfpXA6naaaTXxcFFxAnaSkMTPVVOMswyJ0bhhdpwlo-92HXgxRMsHV6Y8bNaHX7tMd"; 
int i=0; 
try { 

URL url = new URL("https://fcm.googleapis.com/fcm/send"); 
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); 
System.out.println("after connection open"); 
//conn.setDoInput(true); 
conn.setRequestMethod("POST"); 
conn.setRequestProperty("Content-Type", "application/json"); 
conn.setRequestProperty("Authorization", "key=" + apiKey); 
conn.setDoOutput(true); 
JSONObject json = new JSONObject(); 
    json.put("to", "device-token"); 
    JSONObject info = new JSONObject(); 
    info.put("title", "notification title"); // Notification title 
    info.put("body", "message body"); 
    json.put("notification", info); 
    OutputStreamWriter wr = new OutputStreamWriter(
      conn.getOutputStream()); 
    wr.write(json.toString()); 
    wr.flush(); 

    BufferedReader br = new BufferedReader(new InputStreamReader(
      (conn.getInputStream()))); 

    String output; 
    System.out.println("Output from Server .... \n"); 
    while ((output = br.readLine()) != null) { 
     System.out.println(output); 
    } 
    // result = CommonConstants.SUCCESS; 
System.out.println("after closed out put stream"); 
int responseCode = conn.getResponseCode(); 

// System.out.println("Post parameters : " + input); 
System.out.println("Response Code : " + responseCode); 


} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 

} 
catch(Exception e){ 
    e.printStackTrace(); 
} 
} 

Es zeigt immer Session Timeout Fehler. Ist es eine korrekte Möglichkeit, Benachrichtigungen an die App zu senden. Jede Hilfe wird geschätzt.

EDIT: - Ich habe die gleiche URL mit Geräte-Token und andere Dinge aus Rest-Client aufgerufen und es funktioniert gut.Ich habe eine Benachrichtigung in meiner App.Aber wenn ich es durch Java-Code zu diesem Zeitpunkt sendet es zeigt die Verbindung zeitlich aus.

Antwort

0

Hier ist die offizielle Firebase-Dokumentation, die Ihnen beim Einrichten des Servers helfen kann. https://firebase.google.com/docs/cloud-messaging/server

In Ihrem Code bemerkte ich json.put("to", "device-token"); und ich gehe davon aus, dass Sie es als Platzhalter nur für das Beispiel verwenden. Wenn nicht, müssen Sie in Ihrer Anfrage ein Geräte-Token wie { "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..." } senden.

+0

Ich habe das oben erwähnte Dokument befolgt und jetzt habe ich den oben genannten Code in meinem Andorid Side Java Code hinzugefügt. Jetzt bekomme ich manchmal Benachrichtigungen, aber nicht immer. Ich überprüfe es im Entwicklungsmodus. Jetzt bekomme ich auch meinen Message-Receiving-Code Ich bekomme eine Log-Trace die ich in Message empfangen habe. Aber die Benachrichtigung kommt nicht am Telefon. – Mahi

Verwandte Themen