Push-уведомления для iOS/Android на самохостинговом Discourse (Docker)

Я потратил более 6 часов, читая сообщения с 2018 года в Discourse Meta, общаясь с ботом Discourse AI, используя несколько моделей для глубокого исследования и тестирования. Я пытаюсь подтвердить своё понимание. Спасибо за ваше терпение; понимаю, что этот вопрос может задаваться часто.

Высокоуровневый успех: я ценю отличный UX. Отличный UX требует, чтобы пользователь думал как можно меньше для достижения своей цели. Я ожидаю уведомлений о новых сообщениях в стиле WhatsApp на моём устройстве iOS (iPhone 15 Pro, iOS 26.2).

  1. На высшем уровне кажется, что «лучшим ответом» на эту дилемму/ограничения iOS является Discourse Hub. Он использует опрос (polling), поэтому есть небольшая задержка, но это текущий лучший/наиболее стабильный способ получения push-уведомлений на iOS/Android от самохостингового экземпляра Discourse (в Docker). Если это так, знает ли кто-нибудь, о какой задержке идёт речь — минутах или часах? Я не могу найти конкретных данных об этом.

  2. Если пункт 1 верен, похоже, что push-уведомления ограничиваются чатами, если я правильно понял?

  3. Я потратил много часов на тестирование между Mac OS X Safari, Chrome, Safari в режиме инкогнито, Chrome в режиме инкогнито в моей тестовой среде среди множества пользователей. Вдобавок было около 20+ попыток настройки и переустановки PWA. Я трижды перепроверил настройки уведомлений в PWA. Я тестировал с несколькими учётными записями в разных браузерах, всё через отправку сообщений в чате Discourse. Я намеренно вышел из всех сессий, чтобы убедиться, что ни одна учётная запись не активна. За исключением начального push-уведомления «уведомления включены», после более чем 3 часов тестирования и 20+ различных переустановок PWA среди нескольких учётных записей я не могу получить ни одного push-уведомления от Pushover или значка на PWA. Звучит ли это как точное состояние push-уведомлений PWA на iOS в январе 2026 года? У меня нет Android-телефона для тестирования.

  4. Похоже, что основной причиной такого непостоянного поведения push-уведомлений являются «технические моменты» уведомлений в Safari на iOS. На данный момент света в конце туннеля не видно.

  5. Есть вариант с приложением Pushover, хотя это требует создания учётной записи и оплаты 5 долларов в месяц. Если я стремлюсь создать отличный UX для моих пользователей, что-то вроде Pushover, безусловно, не подходит. Я не пробовал ntfy, возможно, это проще. Даже в этом случае я, вероятно, не стал бы просить моих пользователей делать это. Это социальная группа нетехнических людей.

  6. У меня работают push-уведомления на десктопном Safari. Электронная почта также работает нормально.

  7. Если бы пользователи могли самостоятельно авторизоваться для получения уведомлений в стороннем приложении по своему выбору, например, Telegram или WhatsApp, это могло бы иметь потенциал. Я вижу плагин https://www.discourse.org/plugins/chat-integration для Telegram. Это могло бы стать обходным путём… хотя, вероятно, единственным приложением, которое есть у людей в моём случае, будет Telegram.

  8. Я не против интеграции с Twilio, даже если мне придётся платить за текстовые сообщения через Twilio. Я не вижу такой опции или плагина. Этот шаг был бы продиктован отчаянием. И мне пришлось бы взимать подписку в размере 1–3 цента за сообщение или столько, сколько взимает Twilio.

  9. Создание «нативного приложения Discourse для iOS», скорее всего, нереалистично и с высокой вероятностью будет отклонено в App Store Apple, подтверждаю? Я видел множество отчётов об этом.

  10. Возможно, push-уведомления работают лучше и более стабильно/надёжно на Android?

Кратко: в январе 2026 года единственно лучшим, наиболее надёжным и стабильным способом получения push-уведомлений на iOS/Android, как в нативном приложении, является использование Discourse Hub.

PS. Я действительно тайно надеюсь, что что-то упустил, и мой опыт неточен.

На Android PWA работает очень хорошо. Несколько сотрудников ежедневно используют PWA.

На iOS сайты, размещённые на Discourse, получают полные push-уведомления в DiscourseHub. Самохостеры получают push-уведомления через опрос (polling), да.

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

Нет, они должны работать для тем, чатов и личных сообщений.

Приложение-обёртка на основе WebView с высокой вероятностью будет отклонено, да. Полноценное нативное приложение, скорее всего, нет. Но создание полноценного нативного приложения значительно сложнее.

Я тоже очень запутался в ситуации с push-уведомлениями.

На Mac всё работает как PWA, но на iOS — нет. Я получаю значки, но не уведомления (кроме начального «успешного»).

Почему это не работает? Я размещён на communiteq.com и не хочу устанавливать приложение.

Наш хостинг не накладывает никаких ограничений и хорошо работает с уведомлениями на iOS.

Однако он в целом довольно нестабелен, особенно когда вы являетесь администратором — имитация других учётных записей, похоже, нарушает настройку уведомлений.

Техподдержка протестировала это, и, похоже, это не работает (я не занимаюсь никаким имперсонализмом или чем-то подобным).

Если я правильно помню, вывод был в том, что это не работает на вашем конкретном устройстве?

Понимаю, что это не самый удовлетворительный ответ, но вопрос «почему это не работает» может быть слишком общим.

Тем не менее, было бы здорово, если бы существовал хороший справочник по устранению неполадок для iOS.

Нет, у нас в сообществе это не сработало ни у кого на устройствах iOS.

Я решил снова проверить, включил его, и теперь всё работает! :exploding_head:

Может, обновление Discourse это исправило? Кто знает!

Я бы поставил деньги на обновление iOS.

Подтвердил ли кто-нибудь ещё это?

Я только что удалил из главного экрана и добавил снова. Было бы здорово, если бы уведомления были включены!

Это должно работать для любого экземпляра Discourse, добавленного на главный экран в iOS 16.4 и выше.

Если у вас Meta добавлен на главный экран, этот ответ от меня должен вызвать один из них.

Спасибо @Falco!

Я понял, что у меня есть второй тестовый аккаунт на другом собственном форуме… Я вошёл и отправил себе тестовое сообщение в чат.

Оно сработало! Уже несколько раз.

Вау, это потрясающе.

Именно эта крайне неудачная строка является причиной

По моему мнению, это не имеет никакого смысла.

Может, пора избавиться от этой строки :grinning_face:

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

Затем кто-то позже отправляет вам конфиденциальное сообщение через личные сообщения. Push-уведомление отправляется всем зарегистрированным устройствам. Устройство, с которого вы вышли, всё ещё технически зарегистрировано, поэтому оно продолжает получать полный предпросмотр уведомления. Ой.

При первоначальной отправке я перестраховался и просто очистил все ключи, что, очевидно, излишне и раздражает. Возможно, нам стоит начать привязывать подписки на push-уведомления к конкретной сессии пользователя или каким-то образом подтверждать, что ожидаемый пользователь всё ещё находится в системе?

Да, именно это! Вместо user_id, как мне кажется, они должны использовать user_auth_tokens.id?

Хорошо, похоже, мы все согласны с тем, что в Discourse с последним обновлением iOS уведомления исправлены? Я могу войти в режиме инкогнито под другим аккаунтом и отправить сообщение на телефон — всё работает отлично. Мне пришлось только переустановить приложение. Отлично.

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