Как отправлять уведомления всем пользователям, использующим REST API в OneSignal?
Я сделал приложение в Android, которое использует onesignal. Сейчас я создаю другое приложение, которое я буду использовать в качестве приложения администратора для меня. Проблема здесь в том, что в приложении администратора я выполняю определенную функцию при нажатии кнопки и в то же время хочу отправить уведомление всем пользователям, использующим мое приложение, чтобы сообщить им, что некоторые данные изменились. Но проблема в том, что я не знаю, как правильно его использовать. Итак, я прочитал документацию по сигналу и скопировал образец кода Java в методе onClickListener кнопки в моем приложении администратора и изменил ключ REST API и идентификатор приложения. Но ничего не случилось. Я действительно смущен, что делать прямо здесь. Пожалуйста, если кто-то из вас знает ответ, пожалуйста, помогите мне. Вот мой код -
Button submit = (Button) findViewById(R.id.submit);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
notify();
}
});
public void notify(){
try {
String jsonResponse;
URL url = new URL("https://onesignal.com/api/v1/notifications");
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 NGEwMGZmMjItY2NkNy0xMWUzLTk5ZDUtMDAwYzI5NDBlNjJj");
con.setRequestMethod("POST");
String strJsonBody = "{"
+ "\"app_id\": \"5eb5a37e-b458-11e3-ac11-000c2940e62c\","
+ "\"included_segments\": [\"All\"],"
+ "\"data\": {\"foo\": \"bar\"},"
+ "\"contents\": {\"en\": \"English Message\"}"
+ "}";
System.out.println("strJsonBody:\n" + strJsonBody);
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);
if ( httpResponse >= HttpURLConnection.HTTP_OK
&& httpResponse < HttpURLConnection.HTTP_BAD_REQUEST) {
Scanner scanner = new Scanner(con.getInputStream(), "UTF-8");
jsonResponse = scanner.useDelimiter("\\A").hasNext() ? scanner.next() : "";
scanner.close();
}
else {
Scanner scanner = new Scanner(con.getErrorStream(), "UTF-8");
jsonResponse = scanner.useDelimiter("\\A").hasNext() ? scanner.next() : "";
scanner.close();
}
System.out.println("jsonResponse:\n" + jsonResponse);
} catch(Throwable t) {
t.printStackTrace();
}
}
1 ответ
Попробуйте использовать HttpsURLConnection вместо HttpURLConnection, вот так
HttpsURLConnection con = (HttpsURLConnection)url.openConnection();