Push-уведомления для приложений iPhone и Android

:information_source: Краткое описание Отправка push-уведомлений Discourse на iOS или Android через ваше собственное приложение
:hammer_and_wrench: Ссылка на репозиторий GitHub - Sprachprofi/discourse-fcm-notifications: Send Discourse push notifications through FCM to any custom app · GitHub
:open_book: Руководство по установке Как установить плагины в Discourse

Возможности

Если у вас есть приложение, с помощью которого пользователи могут просматривать ваш форум Discourse, этот плагин позволит вашему форуму отправлять push-уведомления через это приложение. (Если у вас пока нет приложения, но вы планируете его создать, ознакомьтесь с этим минималистичным решением.)

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

Универсальность: использует Google Firebase в качестве слоя передачи сообщений, поэтому все устройства iOS и Android могут получать эти push-уведомления, если в стране не запрещён Google.

Настройка

  1. Установите и активируйте плагин.
  2. Создайте бесплатный проект Google Firebase для вашего приложения. Добавьте ID проекта Firebase, токен и файл JSON (с данными OAuth) в настройки плагина в Discourse.
  3. Отредактируйте код вашего приложения:
  • Подпишитесь активного пользователя на push-уведомления, отправив токен устройства по адресу: ВАШ_ФОРУМ.com/fcm_notifications/automatic_subscribe?token=… . Обязательно вызывайте этот метод каждый раз, когда токен устройства меняется.

  • Отпишитесь активного пользователя, вызвав: ВАШ_ФОРУМ.com/fcm_notifications/automatic_subscribe?token=REMOVE

  • Push-уведомления будут иметь следующий формат:

    'data': {
      "linked_obj_type" => 'link',
      "linked_obj_data" => <url на пост/сообщение, на которое ссылается уведомление>,
    },
    'notification': {
      title: <что-то вроде "USERNAME отправил вам личное сообщение в ТЕМЕ">,
      body: <начало сообщения>,
    }
    

Таким образом, вам нужно отображать push-уведомление с заголовком и текстом, а при нажатии на него открывать URL из linked_obj_data во встроенном браузере приложения. Именно это нужно определить в коде приложения.

Пример реализации

Код минималистичного, но полностью функционального приложения, работающего с этим плагином, можно получить здесь. (Это белая версия производственного приложения, которое мы создали и для которого потребовался этот плагин.) Если вам нужно только приложение, которое отображает ваш форум, отправляет push-уведомления и запоминает вход пользователя и последнюю прочитанную тему, вам достаточно изменить брендинг, отправить приложение в магазины приложений — и всё готово. В противном случае оно может служить основой для дальнейшей разработки.

Доходы от продажи этого приложения будут направлены на поддержку и дальнейшую разработку плагина.

4 лайка

Работают ли push-уведомления с приложением Discourse Hub?

Приложение Discourse Hub уже поддерживает push-уведомления.

Даже для сайтов с самостоятельным хостингом?

1 лайк

Хм… не на сто процентов уверен, но, кажется, нет. В таком случае этот плагин будет весьма полезен.

На данный момент — нет. Для любого приложения потребуется внесение изменений в код.

Я не думаю, что будет возможно использовать этот плагин с каким-либо приложением, которым вы не владеете, поскольку push-уведомления зависят от обмена данными аутентификации Google (или другой аутентификации, если не используется Google Firebase) между форумом и приложением. Это необходимо для того, чтобы Google знал, кто отвечает за потенциальную отправку вредоносных или спам-уведомлений, и мог заблокировать соответствующий аккаунт. Кроме того, данные аутентификации Google могут потенциально использоваться для выполнения других действий с аккаунтом пользователя Google, в зависимости от того, как они настроены. Поэтому я не думаю, что создатели приложения Discourse Hub (или создатели любого другого приложения) захотят делиться своими данными аутентификации Google со всеми, у кого есть самодостаточный форум Discourse. И, конечно же, они не могут добавлять данные аутентификации Google каждого пользователя в код приложения (ни просить конечных пользователей делать это после загрузки). Для push-уведомлений через Google Firebase форум и приложение должны принадлежать одной и той же организации; я не вижу способа обойти это ограничение.

Есть ли тестовое приложение, которое мы можем проверить?

См. выше — вы не можете установить этот плагин на свой форум и подключить его к любому существующему приложению, так как это означало бы, что владелец приложения должен поделиться с вами своим Google-аутентификацией.

Если вы хотите посмотреть пример реализации, ознакомьтесь с видео по адресу https://youtube.com/shorts/iGmTBmhpD4A?feature=share (показанное приложение — это этот код без каких-либо изменений). Но ваше приложение может выглядеть совершенно иначе — плагин лишь позволяет вашему форуму отправлять push-уведомления в ваше приложение; то, как они будут отображаться, зависит от вас.