Конвертировать cURL в функцию Retrofit (push-уведомление GCM)

Я пытаюсь преобразовать мой cURL для push-уведомлений GCM в функцию Retrofit, но я не знаю точно, как.
Мой cURL выглядит так:

curl --header "Authorization: key=KKK" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send  -d "{\"registration_ids\":[\"XXX\"]}"

где KKK = ключ, а XXX = userRegistrationToken.

Я пропустил сообщение там, потому что я не нашел, как это сделать, но в целом этот cURL работает. Я хочу сделать точно так же, но с (уведомлением) сообщением.

Я попробовал и получил что-то вроде этого:

//GCM_ENDPOINT = "https://android.googleapis.com";
@FormUrlEncoded
@POST("/gcm/send")
void sendNotification(
@Header("Authorization") String key,
@Header("Content-Type") String contentType,
@Field("message") String message,
Callback<Object> response);

Я не знаю, правильно ли это до сих пор, но в нем нет того уведомления, которое я хочу отправить, и я даже не знаю, как с этим справиться -d registration_ids особенно, когда я хочу разместить там несколько идентификаторов. Заранее спасибо.

0

Решение

Хорошо, мне удалось найти решение, даже если его не совсем путем прямого преобразования этого cURL, оно работает отлично:

@POST("/gcm/send")
@Headers({"Content-Type: application/json"})
void sendNotification(
@Header("Authorization") String apiKey,
@Body TypedInput jsonBodyInput,
Callback<NotificationResult> response);

куда NotificationResult мой пользовательский класс GSON, и apiKey должен быть с префиксом «key =» (пример: String apiKey = «key =» + «XXX»;). Кроме того, важно сделать jsonBodyInput как TypedInput, как это:

TypedInput requestBody = new TypedByteArray("application/json", jsonString.getBytes(Charset.forName("UTF-8")));

Как jsonString может выглядеть, как вы найдете Вот

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]