Я пытаюсь преобразовать мой 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 особенно, когда я хочу разместить там несколько идентификаторов. Заранее спасибо.
Хорошо, мне удалось найти решение, даже если его не совсем путем прямого преобразования этого 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 может выглядеть, как вы найдете Вот
Других решений пока нет …