Рекомендуемый способ реализации Push-уведомлений - PullRequest
6 голосов
/ 15 ноября 2011

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

Я перечитал больше на Android, чем на iPhone, так что моё понимание последних может оказаться неудовлетворительным. Исходя из того, что я прочитал и понял, я считаю, что мне нужно будет запустить службу, когда мое приложение запускается впервые (или дать команду устройству запускать службу каждый раз, когда устройство запускается, или что-то в этом роде). Затем эта служба будет взаимодействовать с сервером для получения уведомлений и их отображения. При нажатии на уведомление запустится приложение.

Мои варианты

  1. C2DM или APNS

  2. Городской дирижабль

  3. Мой собственный сервер использует в основном бездействующее TCP-соединение с клиентом.

В зависимости от выбранной опции меняются как реализация на стороне клиента, так и реализация на стороне сервера.

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

Любая помощь приветствуется.

Обновление:

Опираясь на ответ jbat100. Тот факт, что Apple не позволяет мне писать свой собственный сервер для связи непосредственно с моим приложением для уведомлений, означает, что необходимо использовать APNS. Таким образом, вариант 3 полностью отсутствует. Это означает, что у нас есть либо городской дирижабль, либо интерфейс напрямую с APNS и C2DM. Основываясь на моих исследованиях, усилия, приложенные в обоих случаях, сравнимы, поэтому не имеет смысла выделять дополнительно 4-5K / мес только для поддержки уведомлений. Поэтому я планирую реализовать вариант 1. Если кто-то из вас думает иначе, пожалуйста, оставьте комментарии ниже.

Спасибо.

Ответы [ 6 ]

2 голосов
/ 15 ноября 2011

Они должны быть обработаны отдельно. В случае push-уведомлений iOS вам придется пройти через службу push-уведомлений Apple (Руководство по программированию здесь ), у них есть очень специфический протокол, которому должен соответствовать ваш сервер, который описан в 1003 * Связь с поставщиком услуг Apple Push Notification . Не знаю насчет Android, он, вероятно, будет совсем другим, менее централизованным.

1 голос
/ 16 ноября 2011

Опираясь на ответ jbat100.Тот факт, что Apple не позволяет мне писать свой собственный сервер для связи непосредственно с моим приложением для уведомлений, означает, что необходимо использовать APNS.Таким образом, вариант 3 полностью отсутствует.Это означает, что у нас есть либо городской дирижабль, либо интерфейс напрямую с APNS и C2DM.Основываясь на моих исследованиях, усилия, приложенные в обоих случаях, сравнимы, поэтому не имеет смысла выделять дополнительно 4-5K / мес только для поддержки уведомлений.Поэтому я планирую реализовать вариант 1. Если кто-то из вас думает иначе, пожалуйста, оставьте комментарии ниже.

0 голосов
/ 14 мая 2014

Я не могу пролить свет на Android-уравнение, но могу вам сказать, что недавно я установил невероятно простое приложение Rails на Heroku, которое отправляет push-уведомления в мое приложение iOS через APNS.Я использовал камень houston и получал push-уведомления в своем приложении для iOS менее чем за 20 минут с момента начала работы.

0 голосов
/ 11 мая 2013

Важно: C2DM официально объявлен устаревшим с 26 июня 2012 года. Это означает, что C2DM прекратил принимать новых пользователей и запросы квот. Никакие новые функции не будут добавлены в C2DM. Однако приложения, использующие C2DM, продолжат работать. Существующим разработчикам C2DM рекомендуется перейти на новую версию C2DM, которая называется Google Cloud Messaging для Android (GCM). См. Документ M2-to-GCM Migration для получения дополнительной информации. Разработчики должны использовать GCM для новых разработок.

0 голосов
/ 30 ноября 2011

Моя ситуация очень похожа, и я сначала выпустил свое приложение для Android, и сейчас я работаю над приложением для iOS.Для Android я реализовал push-уведомления с использованием C2DM и отправляю уведомления из своего приложения Google App Engine (GAE).C2DM в основном требует отправки HTTP-сообщений на сервер Google.Таким образом, вы отправляете HTTP POST на URL https://android.apis.google.com/c2dm/send.

для iOS, однако, требуется выделенное TCP-соединение через собственный порт, а среда GAE не допускает никакого внешнего протокола, кроме HTTP через порт 80. Итак,Я много исследовал и Urban Airship, кажется, ответ.Они предоставляют HTTP-интерфейс, к которому я могу получить доступ из моей среды GAE, и преобразуют его в протокол, который понимают серверы Apple.Хотя их цена кажется запутанной - 1 миллион бесплатных уведомлений в месяц и десятая часть на уведомление после этого.Это странно, потому что они отдают 1000 долларов в месяц бесплатно?Очень странно с экономической точки зрения.Я подумываю попробовать их, но я думаю, что лучшая альтернатива для большого объема - это просто использовать собственную реализацию и развернуть ее на Amazon AWS или купить другой дешевый сторонний хостинг.

0 голосов
/ 15 ноября 2011

C2DM будет проще всего, пожалуй.Но, я думаю, вы также можете попробовать Urban Ship.Реализация собственного сервера - это боль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...