2012-06-30 5 views
22

Я делаю приложение для чата для iPhone, но я не уверен, как сообщения о разговоре должны появиться мгновенно.iOS chat APNS, сокеты или временной интервал

Я прочитал тонны результатов Google по этой теме. Кроме того, один раз:
- http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server
- http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

APNS подход:
Невидимый уведомление будет выталкиваться на iPhone, указывая, что новое сообщение будет готово для чтения. Таким образом, приложение отправит запрос на непрочитанные сообщения. Поэтому вместо ручного опроса новых сообщений я дам APNS помощь в этом. Но я не уверен?

Розетки подход:
Создание сокет, который открыт для обмена данными. Когда новые сообщения будут найдены в db, он автоматически отправит данные в приложение. Но как насчет диапазона IP, межсетевого экрана, энергопотребления и других факторов? снова я не уверен :(

опросом подход:
Сделать интервал времени, когда я опрашивать запрос, потребление энергии мой враг здесь

Мой вопрос:.
- Какой подход ? лучше
- Другие предложения
. - Я действительно нужны некоторые минусы и плюсы от людей с опытом работы по этой теме

Примеры является Хорошо.
Благодаря

+2

Опрос дает вам надежность, лучшую задержку и контроль тайм-аута, а в качестве плюса вы сможете свободно выбирать, как представить свои данные. С Push Notifications у вас нет гарантий того, что ваше сообщение было успешно доставлено. Apple не гарантирует это. Поэтому я не буду полагаться на Apple, чтобы доставлять чат-сообщения своим пользователям. – jweyrich

+2

Я думаю, вы неправильно поняли вопрос. APNS не должен отправлять сообщения чата самим, он должен только ... «совать»/«вызывать» приложение, чтобы некоторые новые непрочитанные сообщения были готовы к чтению. –

+0

Что вы не уверены в методе APNS? Push Notifications не требует фонового исполнения, что является большой победой, потому что приложение в приостановленном состоянии сохраняет батарею. – jweyrich

ответ

6

Я думаю, что ваша главная проблема заключается в том, как получать новые сообщения, пока ваше приложение находится в фоновом режиме. Потому что это не то, что я собираюсь открыть приложение для обмена сообщениями в течение всего дня, когда я могу получать уведомления с такими приложениями, как WhatsApp.

Лучше, чем разъемы TCPIP, вы можете использовать websockets. Поскольку это HTTP, проблем с брандмауэром нет, но для этого требуется постоянное соединение с приложением на переднем плане, который истощает батарею.

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

Поэтому используйте APNS. Это то, что делает WhatsApp.

+0

Хорошие баллы. Даже если я придерживаюсь APNS, я по-прежнему считаю, что будущее в чем-то связано. Постоянные соединения (сокеты или другие вещи) - там, где вам не нужно обновлять вручную. Спасибо за пример WhatsApp. –

+0

Меня беспокоит только часть переднего плана. Получаю ли я ваш ответ, что WhatsApp полагается исключительно на push-уведомления, чтобы знать, что он должен вытаскивать новые сообщения, даже если это приложение работает на переднем плане? – figha

Смежные вопросы