Firebase Cloud Messagingを使用してAndroidデバイスに通知を送信しようとしています。明らかにすべてがOKです。私は私のHTTPリクエストのための答えを得る:カスタムサーバーを使用してAndroidのFirebase通知が表示されない
Response Code : 200
{"message_id": **ID here** }
しかし、私はAPKとエミュレータがインストールされているアプリがフォアグラウンドにあるではない場合でも、何の通知は、受信していないされています。
Firebaseコンソールからメッセージを送信すると、すべてうまく動作します。
誰でも私が間違っていることを見つけるのを助けることができますか?
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Base64;
public class Main {
public static void main(String[] args) throws UnsupportedEncodingException, IOException {
String apiKey = "AI...LoU"; //My key here
String out = "{\"notification\":{\"title\": \"My title\", \"text\": \"My text\"}, \"to\":\"/topics/all\",\"data\": {\"key\": \"value\"}}";
URL url = new URL("https://fcm.googleapis.com/fcm/send");
String credentials = "key=" + apiKey;
//String basicAuth = "Basic " + new String(Base64.getEncoder().encodeToString(credentials.getBytes()));
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", credentials);
conn.connect();
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(out);
wr.flush();
int responseCode = conn.getResponseCode();
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
}
in.close();
wr.close();
}
}
これはエミュレータでネットワーク上の問題の可能性があります。通知を送信した後、エミュレータが飛行機モードをオンにして飛行機モードをオフにすると、すべての通知が届きます。 –
Firebaseコンソールを使用して通知を受け取ります。私はネットワークが正常に動作していると思います。私はちょうどこのhttp post要求を使用するとき通知を受け取りません。 – felipepo
デバイス(エミュレータ)が 'all'トピックに登録されているということは肯定的ですか? –