Ошибка после отправки 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 с определенными идентификаторами Отправка push с определенными идентификаторами

Посылая пуш в вечность Посылая пуш в вечность

Я не уверен, что я делаю неправильно, но я попытался придерживаться основных примеров, предоставленных Titanium.

1 ответ

Решение

Проблема заключалась в том, что устройства не были связаны с пользователем:

пользователь не связан с устройством

После многих испытаний я понял, что после Cloud.Users.login метод я ошибочно вызывал метод Cloud.PushNotifications.subscribeToken вместо Cloud.PushNotifications.subscribe, Изменяя это, после входа в систему и подписки, устройство имеет пользователя, связанного с ним:

пользователь, связанный с устройством

И все работает как положено, push-уведомления отправляются и принимаются.

РЕДАКТИРОВАТЬ: я не заметил, что при наведении на ярлык Failure вы указали причину (немного странный способ показать информацию), и причина на самом деле была несколько объяснена там:

сообщение об ошибке

Другие вопросы по тегам