Я создаю Rest API с помощью Spring Boot и настроил его для работы с OneSignal.
Мне удалось получить и сохранить Players_id в моей базе данных.
После этого я создал конечную точку, которая извлекала эти идентификаторы и отправляла им уведомления при отправке сообщения.
Вот так это выглядит в OneSignal
И код ответа:
strJsonBody:
{"app_id": "b27c8471-e134-4991-b722-
e4498273c5f4","include_external_user_ids": ["0c25334c-302e-4022-b494-
a11ea6f43318", "d3349289-b406-480e-8093-d410e7aacc2d"],"data": {"foo":
"bar"},"contents": {"en": "com.chatapp.model.Message@2d379c31"}}
httpResponse: 200
jsonResponse:
{"id":"","recipients":0,"errors":["All included players are not
subscribed"]}
Так что я не знаю, как хранить этот токен или что мне делать?
Это код для регистрации пользовательских устройств:
public String registerDevice() {
try {
String jsonResponse;
URL url = new URL(playersUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setUseCaches(false);
con.setDoOutput(true);
con.setDoInput(true);
con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
con.setRequestProperty("Authorization",
"Basic " + appKey);//REST API
con.setRequestMethod("POST");
String strJsonBody = "{"
+ "\"app_id\": \"" + appId + "\","
+ "\"device_type\": \"" + 5 + "\""
+ "}";
byte[] sendBytes = strJsonBody.getBytes("UTF-8");
con.setFixedLengthStreamingMode(sendBytes.length);
OutputStream outputStream = con.getOutputStream();
outputStream.write(sendBytes);
int httpResponse = con.getResponseCode();
System.out.println("httpResponse: " + httpResponse);
jsonResponse = mountResponseRequest(con, httpResponse);
System.out.println("jsonResponse:\n" + jsonResponse);
JSONObject jsonObject = new JSONObject(jsonResponse);
String id = jsonObject.getString("id");
return id;
} catch (Throwable t) {
t.printStackTrace();
return null;
}
}