Обновление приложения чата в реальном времени с использованием APNS (с AWS SNS или без него)? - PullRequest
0 голосов
/ 04 октября 2018

Я пишу приложение для обмена сообщениями в Swift, где люди могут общаться так же, как текстовые сообщения или другие популярные приложения чата.Поддерживающий API для AWS написан на C #.

Здесь есть несколько интересных моментов:

  1. Надежда избежать сторонних вещей, таких как Firebase и т. Д., Но открыта для прослушиванияadvice
  2. Уведомления о предупреждениях пока не нужны - никаких всплывающих окон, баннеров и т. д. Просто нужно показать, что пузырьки сообщений приходят в режиме реального времени на одном контроллере представления - если и только если человек смотрит на экран сообщения.Если они где-то еще в приложении, ничего не происходит.
  3. Мы не хотим просить пользователя спросить его, согласны ли они с этим приложением, отправляющим уведомления, потому что мы не отправляем им баннеры или что-то визуальное, кроме прихода нового чата.Это требование с APNS?Я чувствую, что это означает, что кто-то может сказать «НЕТ», и тогда у нас нет возможности обновить приложение чата в режиме реального времени, которое не будет работать.

    Я предполагаю, что простой подход - это своего рода таймер / циклон запускается из viewcontroller сообщений, где каждую секунду или две он попадает в API и спрашивает, есть ли новые сообщения, но это мне кажется по своей сути неправильным - приложение должно быть надежным, и могут быть тысячи или сотни тысяч людей, использующихэто - это много запросов API, и во многих случаях не может быть новых сообщений, таким образом, потерянный вызов.Это явно не тот путь, правильно?

Вопрос № 1 Тогда я думал, что мне следует использовать APNS, однако я не уверен, что это так. требует от вас, чтобы пользователь попросил у него разрешения на получение чего-либо от Apple?Опять же, меня беспокоит то, что пузыри чата должны появляться в режиме реального времени и не хотят давать пользователю возможность каким-то образом их не видеть (ломая приложение)

Если APNS - это путь, и яя должен подсказать их, затем я предполагаю, что поток будет собирать идентификаторы моего устройства (созданные в appdelegate, сохраненные в моем C # db и связанные с каждой веткой сообщений), и всякий раз, когда кто-то печатает сообщение, оно отправляется в мой API, я сохраняю егов таблице базы данных сообщений, а затем я отправляю сообщение в APNS на идентификатор устройства каждого.

Apple ставит это в очередь и отправляет всем, и если они на экране, то сообщение приходит.

Вот как я должен использовать APNS для достижения того, чего я хочу?

Вопрос № 2 Я видел, как другие рекомендуют использовать SNS (в сочетании с APNS), однакоЯ не понимаю почему.Разве APNS не действуют как правильная очередь, а также как служба уведомлений, тем самым лишая законной силы необходимость использовать SNS / SQS AWS вообще?Мне кажется это излишним, но, может быть, я просто не понимаю идею, почему вам нужны обе технологии.

Заранее оцените чье-либо время, если они могут пролить некоторый свет на это для меня!

Спасибо!

1 Ответ

0 голосов
/ 04 октября 2018

Вопрос 1

Даже если вы используете WebSockets (как упомянуто @stevenpcurtis), вам все равно нужно информировать пользователя о том, что пользователь получил сообщение, когда приложение находится в фоновом режиме или приостановлено.И да, вы должны «заставить» своего пользователя включить уведомления для приложения и объяснить, зачем ему это нужно.Опытным путем, если пользователь устанавливает мессенджер, он понимает, для чего используются уведомления, и почему он его включает.

Вопрос 2

С мобильной точки зрения SNS будет доставлять Push-уведомления, когда пользователь получает уведомление, когда приложение находится в фоновом режиме или приостановлено.С серверной точки зрения вы можете использовать SNS.

Вывод:

С мобильной точки зрения у вас есть 2 режима:

  • Приложение активно - обычно оно зависит от васкак получать сообщения.(Веб-сокеты, нажатия и т. Д.)
  • Приложение находится в фоновом режиме или приостановлено: вам необходим инструмент для информирования пользователя об изменениях без контроля приложения.Это работа для службы push-уведомлений.Способ отправки толчков из бэкэнда зависит от вас.

Вы также можете проверить Этот вопрос , чтобы получить дополнительную информацию.

...