Не могу отправить уведомление Firebase через Android, но оно работает через curl - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь отправить push-уведомление с одного устройства на другое с помощью Firebase (это два разных проекта).Я вызываю API через библиотеку okhttp3, используя POST.Если я попытаюсь использовать curl, уведомление может быть отправлено, но через android я получаю следующую ошибку:

{"multicast_id": XXXXXXXX, "success": 0, "fail": 1, "canonical_ids": 0, "results": [{"error": "MismatchSenderId"}]}

Есть ли какие-либо метаданные, отправленные с вызовом rest в Android?Как я могу отправить

это вызов curl (работает нормально)

curl -H "Тип контента: application / json" -H "Авторизация: ключ = AXXXXX" -X POST-d '{"data": {"info": "abc"}, "to": "DEV-TOKEN-XXX"}' https://fcm.googleapis.com/fcm/send

в Android Я просто копирую тот же заголовок настройки сценария, кузов ecc с охттп3

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Это сработало, когда я использовал «Legacy server key» в Android, делая вызов покоя.Но с curl я использую «Ключ сервера», и он работает нормально.Не знаю почему.

0 голосов
/ 25 января 2019

Вы можете добиться этого, используя следующий способ:

1) Сначала получите токен устройства, на которое вам нужно отправить Push-уведомление

FirebaseInstanceId.getInstance().getToken();

2) Затем вам нужно создатьJSON-объект, имеющий два ключа «для» и «уведомление». Вы также можете использовать «данные», в которых хранится информация о полезной нагрузке.

JSONObject jsonObj = new JSONObject();
jsonObj.put("data", profileJson);
jsonObj.put("notification", notificationJson);
jsonObj.put("to", mPushToken);

3) Затем выполните вызов API, который отправляет push-уведомление.

RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), jsonData.toString());
okhttp3.Request request = new okhttp3.Request.Builder()
        .header("Authorization", "key=" + R.string.firebase_legacy_server_key)
        .url("**https://fcm.googleapis.com/fcm/send**")
        .post(body)
        .build();

Это вызовет отправку push-уведомления на указанный токен базовой базы.

...