Как отправлять уведомления всем пользователям, использующим 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();
Другие вопросы по тегам