Уведомления в реальном времени с Firebase и Ionic

ПРИМЕЧАНИЕ. Не говорите, что это возможная копия этого, Прочитайте.

Подумайте о простом приложении управления задачами, которое может иметь n количество пользователей. Допустим, User A может создать задачу и назначить ее User B. Я хочу показать уведомление User B.

Я использую Firebase в качестве BAAS и следую фрагменту кода, который выводится на консоль только тогда, когда есть задача, назначенная User B. Чтобы упростить, коллекция Users в Firebase имеет узел с именем tasksAssignedToThisUser array, а функция обратного вызова будет отслеживать tasksAssignedToThisUser местоположение. Всякий раз, когда в этот массив добавляется новая задача, выполняется функция обратного вызова. Вот фрагмент кода:

var rootRef = firebase.database().ref();

rootRef.child('users').child(loggedInUserID).child('tasksAssignedToThisUser')
        .on('child_added', function (newMessageSnapshot) {
          console.log('Someone assigned a task to this user.');
          console.log(newMessageSnapshot.val);
        });

Все работает нормально, пока здесь.

То, что я понял, прочитав документы Firebase и другие сообщения на SO о push-уведомлениях или Firebase Cloud Messaging, это:

Уведомления Firebase позволяют пользователям легко отправлять сообщения для повторного привлечения и удержания пользователей, стимулирования роста приложений и поддержки маркетинговых кампаний.

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

...

Вам нужно будет решить, какие протоколы сервера соединений FCM вы хотите использовать, чтобы ваш сервер приложений мог взаимодействовать с серверами соединений FCM. Обратите внимание, что если вы хотите использовать исходящий обмен сообщениями из ваших клиентских приложений, вы должны использовать XMPP. Более подробное обсуждение этого вопроса см. в разделе Выбор протокола сервера соединений FCM.

Это определенно не то, что я хочу, и поддержка сервера для отправки push-уведомлений имеет смысл, когда массовые сообщения необходимо отправлять на большое количество устройств. Поэтому я не назвал свой вопрос Push-уведомления в реальном времени.

Я вижу выполняемую функцию, которая соответствует моему варианту использования, и я просто хочу, чтобы приложение отображало уведомление пользователю на панели задач его мобильного устройства о выполнении этой функции обратного вызова.

Я использую Ionic 1 для разработки приложений, совершенно новых для Firebase и Ionic. Если есть простой бессерверный подход, который предоставляет сама Firebase, который может удовлетворить мои требования, то я был бы более чем рад услышать об этом.


comment
Если вы можете рассчитывать на то, что приложение останется активным, вы можете использовать базу данных Firebase Realtime для передачи уведомлений. В противном случае вам нужно будет использовать Firebase Cloud Messaging (FCM). Отправка нисходящих уведомлений (= уведомлений на устройство) с помощью FCM требует, чтобы вы указали так называемый ключ API сервера. Как следует из названия, этот ключ не должен присутствовать в клиентских приложениях. По этой причине для отправки нисходящих сообщений требуется, чтобы вы запускали код на сервере приложений. См. stackoverflow.com/questions/37634046/   -  person Frank van Puffelen    schedule 10.10.2016
comment
@FrankvanPuffelen спасибо за ответ, сэр. Я бы сказал, что приложение пока остается активным, и есть ли какой-либо образец, сообщение или документ базы данных Firebase Realtime для передачи уведомлений?   -  person BeingSuman    schedule 10.10.2016
comment
Связь в реальном времени является стандартом при использовании базы данных Firebase. См. документацию и нашу codelab в качестве примера.   -  person Frank van Puffelen    schedule 10.10.2016
comment
Связь в реальном времени — это синхронизация данных из Firebase со всеми клиентскими слушателями, верно? Это не имеет ничего общего с отправкой уведомлений или прочим, не так ли?   -  person BeingSuman    schedule 10.10.2016
comment
Отправка уведомлений пользователям, у которых приложение не активно, осуществляется через Firebase Cloud Messaging. Смотрите мой первый комментарий.   -  person Frank van Puffelen    schedule 10.10.2016
comment
Похоже, впереди предстоит большая кривая обучения. Как работает FCM и как интегрировать его с приложениями Ionic. спасибо @Frank :)   -  person BeingSuman    schedule 10.10.2016