Изменить содержимое сообщения в уведомлении OneSignal Android

Я пытаюсь изменить текущую строку «Тестовое сообщение» в push-уведомлении OneSignal. Я просто хочу использовать переменную, определенную в моем коде, но не могу понять, как это сделать.

try {
    OneSignal.postNotification(new JSONObject("{'contents': ['en': 'Test Message'], 'include_player_ids': ['" + selectedUser.getOneSignalId() + "']}"),
    new OneSignal.PostNotificationResponseHandler() {
        @Override
        public void onSuccess(JSONObject response) {
            Log.i("OneSignalExample", "postNotification Success: " + response.toString());
        }

        @Override
        public void onFailure(JSONObject response) {
            Log.e("OneSignalExample", "postNotification Failure: " + response.toString());
        }
    });
} catch (JSONException f) {
    e.printStackTrace();
}

Мне удалось добиться чего-то подобного при отправке уведомления выбранному пользователю. Теперь я просто хочу изменить текст фактического сообщения.


person Dylan Castanhinha    schedule 04.08.2017    source источник


Ответы (2)


Использовать это

String yourVaribale = " what ever you want to send"

OneSignal.postNotification(new JSONObject("{'contents': ['en': " +  yourVariable + "], 'include_player_ids': ['" + selectedUser.getOneSignalId() + "']}"),
                                                            new OneSignal.PostNotificationResponseHandler() {
                                                                @Override
                                                                public void onSuccess(JSONObject response) {
                                                                    Log.i("OneSignalExample", "postNotification Success: " + response.toString());
                                                                }

                                                                @Override
                                                                public void onFailure(JSONObject response) {
                                                                    Log.e("OneSignalExample", "postNotification Failure: " + response.toString());
                                                                }
                                                            });
                                                } catch (JSONException f) {
                                                    e.printStackTrace();
                                                }

или можно попробовать так

String strJsonBody = "{"
                                                       +   "     \"app_id\": \"ef42157d-64e7-4ce2-9ab7-15db224f441b\","
                                                       +   "     \"included_segments\": [\"All\"],"
                                                       +   "     \"data\": {\"foo\": \"bar\"},"
                                                       +   "     \"contents\": {\"en\": \""+ description +"\"},"
                                                       +   "     \"headings\": {\"en\": \""+ title +"\"},"
                                                       +   "     \"big_picture\":\""+ imageurl +"\""


                                   + "}";

для второго метода перейдите по этой ссылке

person akshay_shahane    schedule 04.08.2017
comment
Когда я пробую первый подход, я получаю это. java.lang.ClassCastException: org.json.JSONArray нельзя преобразовать в com.onesignal.OneSignal$PostNotificationResponseHandler - person Dylan Castanhinha; 04.08.2017

Решение ниже сработало для меня. Полное имя текущего пользователя присоединяется к строковому сообщению «хочет, чтобы вы подписались на них». и затем отправляется выбранному пользователю с конкретным OneSignalID.

    OneSignal.postNotification(new JSONObject("{'contents': {'en': \""+ currentUser.getFullName() +" wants you to follow them." +"\"}, 'include_player_ids': ['" + selectedUser.getOneSignalId() + "']}"),
                new OneSignal.PostNotificationResponseHandler() {
                    @Override
                    public void onSuccess(JSONObject response) {
                        Log.i("OneSignalExample", "postNotification Success: " + response.toString());
                    }

                    @Override
                    public void onFailure(JSONObject response) {
                        Log.e("OneSignalExample", "postNotification Failure: " + response.toString());
                    }
                });
person Dylan Castanhinha    schedule 09.08.2017