Отправка push-уведомлений

138
25 января 2020, 16:50

Я пытаюсь создать небольшое приложение, которое будет считывать загрузку ЦП компьютеров / ноутбуков и отправлять push-уведомление в браузер моего основного ноутбука, которое будет содержать имя пользователя ком и загрузку процессора. В качестве технологии отправки уведомлений я выбрал FCM. Сам код уже готов, но мне не хватает одной детали. Мне нужно получить device token моего ноутбука, на который будет отправлено это push-уведомление (насколько я понимаю, device token является токеном компьютера, на который отправлено уведомление). Но я не знаю, как получить этот токен. Большинство рекомендаций касаются Android, а мне нужно отправить его с компьютера на компьютер. Может быть, кто-то может сказать мне другой подход к отправке этих уведомлений, или вариант, который я прикрепил, также подходит для начала? Если так, как я могу получить этот токен?

    public class MetricTesting {      
 Process p = Runtime.getRuntime().exec("typeperf \"\\238(_Total)\\6\"");
    BufferedReader br = new BufferedReader(new 
    InputStreamReader(p.getInputStream()));
    String line;
    double pr = 0;
    Pattern pattern = Pattern.compile("[\\d]{0,3}\\.\\d{4,}");
    while ((line = br.readLine()) != null) {
        System.out.println(line);
        Matcher m = pattern.matcher(line);
        if (!m.find()) {
            continue;
        }
        line = m.group();
        pr = Math.round(Double.parseDouble(line) * 10.0) / 10.0;
        System.out.println(pr);
        if (pr > 5) {
            PushNotificationSender.sendPushNotification("??", Double.toString(pr));   
            System.out.println(System.getProperty("user.name") + ", Processor loaded " + pr + " %");
        }
    }
    String[] g = br.readLine().split("");
    System.out.println(Arrays.toString(g));
    br.close();
}
}


  class PushNotificationSender {
public final static String AUTH_KEY_FCM = "//";
public final static String API_URL_FCM = "https://fcm.googleapis.com/fcm/send";
public static String sendPushNotification(String deviceToken, String pr)
        throws IOException, JSONException {
    String result = "";
    URL url = new URL(API_URL_FCM);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setUseCaches(false);
    conn.setDoInput(true);
    conn.setDoOutput(true);
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Authorization", "key=" + AUTH_KEY_FCM);
    conn.setRequestProperty("Content-Type", "application/json");
    JSONObject json = new JSONObject();
    json.put("to", deviceToken.trim());
    JSONObject info = new JSONObject();
    info.put("title", "CPU is overloaded"); 
    info.put("body", System.getProperty("user.name")+"\n"+pr);
    json.put("notification", info);
    try {
        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
        wr.write(json.toString());
        wr.flush();
        BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
        String output;
        while ((output = br.readLine()) != null) {
            System.out.println(output);
        }
        result = "OK";
    } catch (Exception e) {
        e.printStackTrace();
        result = "BAD";
    }
    return result;
}
}
READ ALSO
Request method 'POST' not supported в Spring MVC

Request method 'POST' not supported в Spring MVC

Помогите пожалуйста решить проблему

121
Java чтение и запись в файл

Java чтение и запись в файл

При написание программы по распознаванию рукописного текста :

137
Мониторинг хоста

Мониторинг хоста

Пожалуйста подскажите! Как можно реализовать в приложении для Android пинг какого либо url и вывести информацию о его состоянииНапример:пишем...

153
Как подать два параметра на вход метода main String args[]?

Как подать два параметра на вход метода main String args[]?

Первый - path - путь к директории, второй - resultFileAbsolutePath - имя (полный путь) существующего файла

105