Не работает подписка на Push-уведомления backendless

266
24 марта 2017, 23:10

Здравствуйте, делаю проект на android с использованием сервиса backendless. В частности, пытаюсь оформить подписку приложения на push-уведомление. Мне необходимо, чтобы при каком-то действии пользователя, он отписывался от всех каналов и подписывался на необходимый.

Вот мой код:

public void registerDevicePushNotifications(){
        String channel = "";
        if(city.equals(CITIES[1])) {
            channel = "Yekaterinburg_" + school;
        }
        Backendless.Messaging.unregisterDevice(gerUnregisterCallback(channel));
        Backendless.Messaging.registerDevice(SENDER_ID, channel, getRegisterCallback());
    }
    private AsyncCallback<Void> gerUnregisterCallback(final String channel){
        return new AsyncCallback<Void>() {
            @Override
            public void handleResponse(Void response) {
                Log.d("mytag", "LoginFragment.gerUnregisterCallback() device register" +
                        " handled. channel = " + channel);
            }
            @Override
            public void handleFault(BackendlessFault fault) {
                Log.d("mytag", "LoginFragment.gerUnregisterCallback() unregistration fault " + fault.toString());
            }
        };
    }
    private AsyncCallback<Void> getRegisterCallback(){
        return new AsyncCallback<Void>() {
            @Override
            public void handleResponse(Void response) {
                Log.d("mytag", "LoginFragment.getRegisterCallback() device registered");
            }
            @Override
            public void handleFault(BackendlessFault fault) {
                Log.d("mytag", "LoginFragment.getRegisterCallback() registration fault " + fault.toString());
            }
        };
    }

Вот такой вот стэктрейс

 03-23 18:01:21.553 7305-7305/ru.timuruktus.SApp D/mytag: LoginFragment.gerUnregisterCallback() unregistration fault BackendlessFault{ code: 'IllegalArgumentException', message: 'Device is not registered.' }
    03-23 18:01:21.553 7305-7305/ru.timuruktus.SApp D/mytag: LoginFragment.getRegisterCallback() device registered
    03-23 18:01:39.751 7305-7305/ru.timuruktus.SApp D/mytag: LoginFragment.gerUnregisterCallback() device register handled. channel = 
    03-23 18:01:39.751 7305-7305/ru.timuruktus.SApp D/mytag: LoginFragment.getRegisterCallback() device registered
    03-23 18:01:48.055 7305-7305/ru.timuruktus.SApp D/mytag: LoginFragment.gerUnregisterCallback() device register handled. channel = Yekaterinburg_177
    03-23 18:01:48.056 7305-7305/ru.timuruktus.SApp D/mytag: LoginFragment.getRegisterCallback() device registered
    03-23 18:02:01.494 8493-8493/ru.timuruktus.SApp D/mytag: LoginFragment.gerUnregisterCallback() device register handled. channel = Yekaterinburg_177
    03-23 18:02:01.495 8493-8493/ru.timuruktus.SApp D/mytag: LoginFragment.getRegisterCallback() device registered

Девайс действительно регистрируется в первый раз, когда вылетает ошибка. В остальных случаях тупо ничего не происходит.

Answer 1

Оказалось достаточным заменить unregisterDevice на unregisterDeviceOnServer() и все заработало. Почему? Не ясно. Хотелось бы услышать ответ

READ ALSO
Как узнать время с начала работы таймера (class Timer)?

Как узнать время с начала работы таймера (class Timer)?

или нужно использовать какой-то другой класс?

332
Фокус на JWindow

Фокус на JWindow

Мне нужно сделать прослушивание клавы, но использовать JFrame нельзя, только JWindowВыходит, что при нажатии ничего не происходит

291