Как поразить HTTP-протокол Firebase с помощью Retrofit? - PullRequest
0 голосов
/ 01 марта 2019

Я хочу опубликовать данные на https://fcm.googleapis.com/fcm/send вместе с двумя заголовками в Модификации

Данные для отправки

{
  "data" : {
    "title": "My Title",
    "content": "My message"
  },

  "to": "cKA7LrjBQ6s:APA91bHtY6RBwZ4KZvxbl9VNZMVKz5_NDbE2dP3zgrhJNBSAKDyfOAbfxEi8pnAwc82pzLoGEZImZBv9MXvoBSJy6c0790oqUIYLECCU5WZVcGeSJJNECX5bsLMutYrSPjLSDffP5N3u"
}

1 Ответ

0 голосов
/ 03 марта 2019

Это очень просто.Создайте следующие классы.

public interface RestInterface {

    @Headers({
        "Content-Type: application/json",
        "Authorization: key=<YOUR_FCM_SERVER_KEY_HERE>"
    })
    @POST("fcm/send")
    Call<ResponseBody> sendNotification(@Body NotificationBody body);

}

Замените <YOUR_FCM_SERVER_KEY_HERE> фактическим ключом сервера FCM.

public class NotificationBody {

    @SerializedName("data")
    private Data data;

    @SerializedName("to")
    private String to;

    public NotificationBody(Data data, String to) {
        this.data = data;
        this.to = to;
    }

}

Над классом POJO будет сгенерирован внешний JSONObject во время выполнения.И следующий класс POJO сгенерирует data JSONObject.

public class Data {

    @SerializedName("title")
    private String title;

    @SerializedName("content")
    private String content;

    public Data(String title, String content) {
        this.title = title;
        this.content = content;
    }


}

И, наконец, используйте указанный выше код в ваших классах Activity / Fragment, как показано ниже,

String title = "My Title";
String content = "My message";
String to = "cKA7LrjBQ6s:APA91bHtY6RBwZ4KZvxbl9VNZMVKz5_NDbE2dP3zgrhJNBSAKDyfOAbfxEi8pnAwc82pzLoGEZImZBv9MXvoBSJy6c0790oqUIYLECCU5WZVcGeSJJNECX5bsLMutYrSPjLSDffP5N3u";

Data data = new Data(title, content);
NotificationBody body = new NotificationBody(data, to);


RestInterface api = ....;

Call<ResponseBody> call = api.sendNotification(body);
call.enqueue(new Callback<ResponseBody>() {
    @Override
    public void onResponse(Call<ResponseBody> call, final Response<ResponseBody> response) {

        // do whatever you want to do

    }

    @Override
    public void onFailure(Call<ResponseBody> call, Throwable t) {
        Log.e("TAG", "Error: ", t);
    }
});

И не забудьтеустановите Retrofit BASE_URL в https://fcm.googleapis.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...