Подтвердить что ты не робот

Приложение iOS - чат с push-уведомлением

Мой вопрос прост, полезно ли разрабатывать чат-приложение с помощью push-уведомлений? Следовательно, push-уведомления не являются надежными, и нет никакой гарантии, что они придут или нет. Если он не является надежным, какой метод следует использовать для приложения чата реального времени?

4b9b3361

Ответ 1

Почему бы и нет?

Определенно можно создать чат с помощью уведомлений push iOS. @Аронные точки интересны, но не имеют смысла, на мой взгляд, по следующим причинам:

  • Если ваше приложение отправляет слишком много push-уведомлений (и если вы используете это как средство "беседы" ), никто не будет использовать ваше приложение, потому что это будет раздражать.

Единственный случай, когда приложение не работает, и даже тогда, Apple отправит только последнее уведомление, если их слишком много. Когда приложение находится в каком-либо другом состоянии (background, foreground active & inactive, suspended), уведомление может обрабатываться тихо, используя content-available : 1 в своем push-уведомлении. Если это вас беспокоит, просто используйте уведомления о значках вместо уведомлений о предупреждениях.

  1. Пользователь также может отключать push-уведомления для вашего приложения, поэтому вы не можете полагаться на это как единственное средство связи.

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

Однако..

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

Лучше всего использовать ваше уведомление как уведомление типа refresh me I got a new message. Как только вы получите новое уведомление, спросите сервер о новых сообщениях в этом чате и обновите таблицу. Мы реализовали это в одном из наших проектов и очень довольны результатами до сих пор. Некоторые говорят, что Premature Optimization is the root of all evil, в этом случае вы могли бы потратить много времени, используя сокеты, но вы можете быстро запускать и запускать push-уведомления. Оптимизируйте позже.

Это отлично работает:

{
    "aps" : {
        "content-available" : 1,
        "alert" : "This is my new notification",
    }
    "conversationId": 23,
    "senderId":44
}

Ответ 2

Нет. Это не очень хорошая идея, по крайней мере по двум причинам:

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

Вы хотите какую-то систему опроса с отношением клиент/канал. Существует множество серверных систем, которые могут сделать это за вас. WebSync один:

http://www.frozenmountain.com/websync/

Ответ 3

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

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

Существует целый ряд технологий, которые могут быть использованы, самые простые, на мой взгляд, будут использовать сокеты (я думаю, это просто из-за количества обучающих программ по теме онлайн).

один пример: http://www.raywenderlich.com/3932/networking-tutorial-for-ios-how-to-create-a-socket-based-iphone-app-and-server

Короче говоря, push-уведомления будут прекрасным дополнением к чат-приложению, но, как дополнительный (очень хороший дополнительный, действительно, они не настолько ненадежны, и вы всегда можете сделать некоторую логику для обнаружения на клиенте, если push, как будто приложение повторно отправляет какой-то код для каждого полученного приёма и повторно отправляет push, если в определенный момент не было получено кода).

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