Может ли приложение для iPhone действовать как сервер для отправки сообщений или push-уведомлений?

Я хочу написать приложение для iOS, которое может действовать как клиент и для других iPhone через сотовую сеть передачи данных (т. е. без типичного централизованного сервера). Цель состоит в том, чтобы отправить серии из примерно 200 коротких сообщений о событиях, по одному, с сервера iPhone на несколько клиентов iPhone с помощью некоторых средств уведомления. Для таких уведомлений вполне подойдет сервис Apple Push Notification, но специально его использовать не нужно.

Я думаю, что отправка push-уведомлений с одного iPhone на другой возможна путем подключения к gateway.push.apple.com с обслуживающего iPhone, как описано в Руководство по программированию локальных и push-уведомлений, но я не могу найти кого-либо, кто обсуждает этот подход (возможно, это слишком очевидный?).

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

Требования:

  • Communication must be [strictly] over cellular data network
    • Wi-Fi isn't available
    • Bluetooth не имеет достаточного радиуса действия
  • Однонаправленная связь с сервером iPhone, многоадресная рассылка многим клиентам iPhone
  • Без джейлбрейка
  • В идеале батарея обслуживающего телефона сможет справиться с этим без подзарядки.

Обновление от 04.05.11, 2:12 по восточному поясному времени: Просто для ясности: у меня нет особых требований к использованию APN; Я думал, что это возможно в этой настройке, но из обсуждения ниже похоже, что это не так. Тем не менее, меня по-прежнему интересует любая другая система, которая могла бы помочь мне достичь того же конечного результата с передачей сообщений или аналогичной формой связи.


person Taylor Edmiston    schedule 04.05.2011    source источник
comment
Написать сервер apns на iOS было бы чертовски легко, если бы вы могли понять, как обрабатывать устройства, отправляющие свои push-токены обратно на сервер. Вы должны прочитать документацию и попробовать свои силы в реализации сервера apns на хостинге.   -  person Alan Zeino    schedule 04.05.2011


Ответы (1)


Теоретически вы должны быть в состоянии написать приложение для iOS, которое может подключаться к APNS и отправлять уведомления на другие устройства, на которых запущены ваши приложения. Однако ваша главная проблема будет состоять в том, чтобы получить «токены» других устройств. Когда у вас есть централизованный сервер, выполняющий работу, он всегда онлайн, и поэтому клиенты могут «общаться» с ним через http и регистрировать себя (передавая свои токены серверу в процессе). Таким образом, сервер знает токен клиента и может использовать его для отправки уведомлений клиентам через APNS.

Однако это невозможно в сценарии, о котором вы говорите. Но это не значит, что это невозможно. Возможно, вы могли бы использовать учетную запись электронной почты X для хранения всех клиентских токенов. Каждый клиент отправит электронное письмо на эту учетную запись со своим токеном. Поэтому, когда другой «клиент» хочет отправить уведомление другому клиенту, он может узнать токен, обратившись к папке «Входящие» учетной записи электронной почты (конечно, вы можете кэшировать этот материал и оптимизировать его миллионом способов).

Но дело в том, как (сторонний (например, поставщик услуг электронной почты)/ваш собственный) сервер, который находится в сети 24/7, будет вовлечен в процесс.

Дайте нам знать, как вы продвигаетесь в этом. Было бы интересно узнать.

person thekindofme    schedule 04.05.2011
comment
Я думаю, что основная проблема на самом деле будет заключаться в том, что ключ APNS будет распространяться вместе с приложением iOS, а это означает, что любой может получить его и использовать по своему усмотрению. - person Sedate Alien; 04.05.2011
comment
да, это будет еще одна проблема. - person thekindofme; 04.05.2011
comment
Интересная идея. В типичном сценарии серверному приложению iPhone необходимо будет транслировать цепочку событий 20–30 клиентам одновременно. Возможно, я мог бы хранить клиентские токены в простой базе данных на AWS или в чем-то подобном, чтобы инфраструктура была минимальной. - person Taylor Edmiston; 04.05.2011
comment
Когда приложение iPhone напрямую отправляет запросы к APNS, необходимо сделать один запрос для каждого устройства. APNS еще не поддерживает пакетную обработку или даже широковещательную передачу. И доступность сети на телефоне — это не то, на что вы должны полагаться. Помимо проблем с безопасностью и сетью, это хорошая идея ;) - person Anurag; 04.05.2011