Firebase Hosting , выполняющий сборку моего сайта с Angular и Firebase Messaging .
Если я отправил FCM в браузер через CURL, тоработает, и сообщение будет показано (см. пример curl внизу).
Android приложение также добавило обмен сообщениями Firebase и может получать сообщение с веб-сайта, работающего на хостинге Firebase.
Пока все хорошо, но теперь я хочу отправить сообщение FCM в браузер из приложения для Android .
Но я не нашел хорошего способасделать это на Android.
Android API FirebaseMessaging и RemoteMessage принимают только global"sender_id" и без "на" адрес, как в CURL или HTTP-запросе POST.
Это работает, если я использую HTTP-запрос POST, но в этом случае мне нужен ключ API сервера внутри моего приложения для Android (не очень хорошо !!) (см. Пример HTTP внизу).
Так есть ли способ отправить через приложение Android сообщение FCM напрямуюна конкретное устройство (в моем случае это браузер)?
вызов curl, который я использую для проверки работы сайта браузера:
curl -H "Content-type: application/json" -H "Authorization:key=<API-KEY>" -X POST -d "{\"data\": { \"score\": \"5x1\",\"time\": \"15:10\"},\"to\" : \"<token from the browser>\"}" https://fcm.googleapis.com/fcm/send
HTTP-вызов внутри приложения Android для тестирования:
try {
URL url = new URL("https://fcm.googleapis.com/fcm/send");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setDoOutput(true);
urlConnection.setRequestProperty("Content-Type", "application/json");
urlConnection.setRequestProperty("Authorization", "key=<API-KEY>");
String postJsonData = "{\"to\": \"<token from the browser>\", \"data\": {\"data\": \"" + data.getNote() + "\"}}";
urlConnection.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream());
wr.writeBytes(postJsonData);
wr.flush();
wr.close();
int responseCode = urlConnection.getResponseCode();
log.i(TAG, "POST Response Code :: " + responseCode);
if (responseCode == HttpURLConnection.HTTP_OK){
log.i(TAG, "succeeded");
}
} catch(MalformedURLException e) {
log.e(TAG, "MalformedURLException" , e);
} catch (IOException e) {
log.e(TAG, "IOException" , e);
}