Я пишу приложение для обмена сообщениями в Swift, где люди могут общаться так же, как текстовые сообщения или другие популярные приложения чата.Поддерживающий API для AWS написан на C #.
Здесь есть несколько интересных моментов:
- Надежда избежать сторонних вещей, таких как Firebase и т. Д., Но открыта для прослушиванияadvice
- Уведомления о предупреждениях пока не нужны - никаких всплывающих окон, баннеров и т. д. Просто нужно показать, что пузырьки сообщений приходят в режиме реального времени на одном контроллере представления - если и только если человек смотрит на экран сообщения.Если они где-то еще в приложении, ничего не происходит.
Мы не хотим просить пользователя спросить его, согласны ли они с этим приложением, отправляющим уведомления, потому что мы не отправляем им баннеры или что-то визуальное, кроме прихода нового чата.Это требование с APNS?Я чувствую, что это означает, что кто-то может сказать «НЕТ», и тогда у нас нет возможности обновить приложение чата в режиме реального времени, которое не будет работать.
Я предполагаю, что простой подход - это своего рода таймер / циклон запускается из viewcontroller сообщений, где каждую секунду или две он попадает в API и спрашивает, есть ли новые сообщения, но это мне кажется по своей сути неправильным - приложение должно быть надежным, и могут быть тысячи или сотни тысяч людей, использующихэто - это много запросов API, и во многих случаях не может быть новых сообщений, таким образом, потерянный вызов.Это явно не тот путь, правильно?
Вопрос № 1 Тогда я думал, что мне следует использовать APNS, однако я не уверен, что это так. требует от вас, чтобы пользователь попросил у него разрешения на получение чего-либо от Apple?Опять же, меня беспокоит то, что пузыри чата должны появляться в режиме реального времени и не хотят давать пользователю возможность каким-то образом их не видеть (ломая приложение)
Если APNS - это путь, и яя должен подсказать их, затем я предполагаю, что поток будет собирать идентификаторы моего устройства (созданные в appdelegate, сохраненные в моем C # db и связанные с каждой веткой сообщений), и всякий раз, когда кто-то печатает сообщение, оно отправляется в мой API, я сохраняю егов таблице базы данных сообщений, а затем я отправляю сообщение в APNS на идентификатор устройства каждого.
Apple ставит это в очередь и отправляет всем, и если они на экране, то сообщение приходит.
Вот как я должен использовать APNS для достижения того, чего я хочу?
Вопрос № 2 Я видел, как другие рекомендуют использовать SNS (в сочетании с APNS), однакоЯ не понимаю почему.Разве APNS не действуют как правильная очередь, а также как служба уведомлений, тем самым лишая законной силы необходимость использовать SNS / SQS AWS вообще?Мне кажется это излишним, но, может быть, я просто не понимаю идею, почему вам нужны обе технологии.
Заранее оцените чье-либо время, если они могут пролить некоторый свет на это для меня!
Спасибо!