Здравствуйте, делаю проект на 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
Девайс действительно регистрируется в первый раз, когда вылетает ошибка. В остальных случаях тупо ничего не происходит.
Оказалось достаточным заменить unregisterDevice
на unregisterDeviceOnServer()
и все заработало. Почему? Не ясно. Хотелось бы услышать ответ
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
или нужно использовать какой-то другой класс?
Мне нужно сделать прослушивание клавы, но использовать JFrame нельзя, только JWindowВыходит, что при нажатии ничего не происходит