Как бы вы внедрили сервер APNS, который проверяет наличие новой электронной почты и отправляет push-уведомление на iPhone при его обнаружении? Мне интересно больше на архитектурном уровне. Для простоты предположим, что мы создаем push-сервер для Gmail. Проблемы, которые я вижу:
Как вы постоянно опрашиваете Gmail потенциально десятки тысяч уникальных учетных записей электронной почты для новой почты? Будет ли Gmail разрешать это даже с одного набора IP-адресов?
В Gmail есть фид IMAP и Inbox. Чтобы определить, пришло ли новое письмо, вам нужно будет запомнить последнее письмо, которое было получено (или отправлено) для каждой учетной записи?
Сделают ли циклы ЦП и пропускную способность, необходимые для этого непрерывного опроса, доступным облачное решение, такое как EC2 или RackSpace?
Как вы обрабатываете аутентификацию и авторизацию безопасным способом? Например, я однажды использовал на своем iPhone клиент gTalk с push-уведомлениями, и Gmail предупредил меня в следующий раз, когда я вошел в систему через веб-интерфейс, что к моей учетной записи обращались с необычного IP-адреса. Есть ли способ избежать этого? Будете ли вы хранить учетные данные пользователя на сервере? Токен OAuth?
Я должен упомянуть, что это должно удовлетворить мое личное любопытство, но это также может быть интересным проектом для обучения программированию на Erlang.
Любая идея по этому вопросу будет принята с благодарностью.