2016-08-25 20 views
0

私は、このコードをjavaサーバコードでfcmを使用して通知通知に書きました。 URL 500:しかし、それは例外サーバー返されたHTTPレスポンスコードを投げているhttps://fcm.googleapis.com/fcm/sendJavaサーバーでFCMを使用してアンドロイドデバイスにプッシュ通知を送信する方法は?

public static void pushFCMNotification(String userDeviceIdKey) throws  Exception{ 

    String authKey = AUTH_KEY_FCM; // You FCM AUTH key 
    String FMCurl = API_URL_FCM;  

    URL url = new URL(FMCurl); 
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

    conn.setUseCaches(false); 
    conn.setDoInput(true); 
    conn.setDoOutput(true); 

    conn.setRequestMethod("POST"); 
    conn.setRequestProperty("Authorization","key="+authKey); 
    conn.setRequestProperty("Content-Type","application/json"); 

    JSONObject json = new JSONObject(); 
    json.put("to",userDeviceIdKey.trim()); 
    JSONObject info = new JSONObject(); 
    info.put("title", "Notificatoin Title"); // Notification title 
    info.put("body", "Hello Test notification"); // Notification body 
    json.put("notification", info); 

    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
    wr.write(json.toString()); 
     wr.flush(); 
     wr.close(); 

     int responseCode = conn.getResponseCode(); 
     System.out.println("\nSending 'POST' request to URL : " + url); 
     System.out.println("Post parameters : " + json); 
     System.out.println("Response Code : " + responseCode); 

     BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
     String inputLine; 
     StringBuffer response = new StringBuffer(); 

     while ((inputLine = in.readLine()) != null) { 
      response.append(inputLine); 
     } 
     in.close(); 


    /*OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
    wr.write(json.toString()); 
    wr.flush(); 
    conn.getInputStream();*/ 
    } 
+1

http://stackoverflow.com/questions/37516589/send-push-notifications-from-server-with -fcm – mayank

+0

私はこれを解決しました。適切な答えは、このリンクを参照してください:http://stackoverflow.com/questions/38089148/send-push-notification-from-server-to-android-device-in-java/ 39142552#39142552 – Raj

答えて

1

をoficialドキュメントによると:

エラー500-599の範囲内(例えば500や503など)は、要求を処理しようとしているときにFCM接続サーバーに内部エラーがあったこと、またはサーバーが一時的に使用できないことを示しています(タイムアウトなど)。送信者は応答に含まれるRetry-Afterヘッダーを尊重して後で再試行する必要があります。アプリケーションサーバーは、指数バックオフを実装する必要があります。

ソース:https://firebase.google.com/docs/cloud-messaging/http-server-ref#interpret-downstream

しかし、JSONの要求が正しくフォーマットされていることを確認してください。 json.toString()で質問を更新し、下記の手順でAPIキーが有効であることを確認してください。Checking the validity of a server key

+0

私は今問題を解決しました。私は200ステータスコードを受け取っています。しかし、クライアント側(Androidデバイス上)では受信されません。しかし、fcmコンソールデバイスを使用して通知を受け取りました。 – Raj

+0

いいです、完璧です。だから、あなたのコードで、 'json.put(" notification "、info);' 'json.put(" data "、info);'を使用し、送信時にあなたのonMessageReceivedメソッドが呼び出されているかどうかをチェックするあなた自身のサーバー実装からの通知。そうでない場合は、質問を編集し、通知を受け取るために使用しているコードを追加してください。 – GeorgeLBA

関連する問題