Ошибка после отправки push-уведомления на определенные идентификаторы с Cloud.PushNotifications.notify
Я разрабатывал приложение для чата с Titanium, и у меня возникают некоторые проблемы при отправке push-уведомлений, когда пользователь отправляет сообщение.
Если я просто позвоню:
Cloud.PushNotifications.notify({
channel : 'myChannel',
to_ids : usersID.toString(),
payload : {
message : "message",
from : myId,
sound : "default",
alert : "New message!",
}
};, function(e) {
if (e.success) {
console.log('Success');
} else {
console.log('Error:\n' + ((e.error && e.message) || JSON.stringify(e)));
}
});
Я получаю ОК с сервера
{"push_notification":{"id": "xxx", "payload": "{\"message\":\"message\",\"from\":\"xxx\",\"sound\":\"default\",\"alert\":\"New message!\"}", "channel": "myChannel"}, "success": true,"error": false, "meta":{"code": 200, "status": "ok", "method_name": "Notify"}}
но push-уведомление помечается статусом Failure на панели ArrowDB.
Другая история, если я поставлю to_ids = "everyone"
, push отправляется (если вы являетесь администратором).
Странно то, что я получаю ту же ошибку, если пытаюсь отправить ее с панели ArrowDB.
Отправка push с определенными идентификаторами
Я не уверен, что я делаю неправильно, но я попытался придерживаться основных примеров, предоставленных Titanium.
1 ответ
Проблема заключалась в том, что устройства не были связаны с пользователем:
После многих испытаний я понял, что после Cloud.Users.login
метод я ошибочно вызывал метод Cloud.PushNotifications.subscribeToken
вместо Cloud.PushNotifications.subscribe
, Изменяя это, после входа в систему и подписки, устройство имеет пользователя, связанного с ним:
И все работает как положено, push-уведомления отправляются и принимаются.
РЕДАКТИРОВАТЬ: я не заметил, что при наведении на ярлык Failure вы указали причину (немного странный способ показать информацию), и причина на самом деле была несколько объяснена там: