Что ? Все мы слышали об push-уведомлениях, теперь они стали самой необходимой функцией на любом смартфоне. Он говорит вам, что в вашем приложении есть какая-то активность, возможно, друг прокомментировал фотографию, которую вы разместили прошлой ночью на Facebook, или ваш двоюродный брат отправил сообщение Доброе утро в WhatsApp, или ваш менеджер отправил вам электронное письмо или В Candy Crush Saga проводится однодневная распродажа. Вы немедленно получаете уведомление о каждом из этих действий, чтобы вы могли принять меры по ним. Сервер этих приложений отправляет действия в мобильное приложение.

Почему. Итак, мы знаем, что это такое, но зачем нужна эта технология? Если бы такой технологии не существовало, как бы мы узнали о действиях в нашем приложении? Ну, мобильное приложение будет постоянно спрашивать сервер после некоторого интервала (скажем, 5 минут) «Привет! у вас есть для меня новое занятие?». Сервер скажет: «Нет, чувак! Ничего нового для вас.

Мобильное приложение молчало и еще через 5 минут снова спрашивало сервер: «Привет! у вас есть для меня новое занятие?». Сервер может сказать: «Да! ваш двоюродный брат поздоровался 4 минуты назад”. Вы заходили в приложение и отвечали двоюродному брату. Это механизм вытягивания, при котором клиент (мобильное приложение) извлекает данные с сервера каждые 5 минут. Он имеет задержки, если интервалы опроса велики, например, несколько минут. Если интервал опроса сократить, чтобы сделать его быстрее, то каждое ваше приложение будет продолжать опрашивать свои серверы так часто, что ваша батарея скоро разрядится, а серверы будут перегружены запросами опроса. Поэтому нужен был новый механизм, решающий эти проблемы. Его назвали толчком из-за его противоположной природы, чем тяга.

Когда : вернемся в 2003 год, когда BlackBerry была самой умной маркой телефонов. В то время самой заметной интеллектуальной функцией была электронная почта. В том же году BlackBerry представила новую технологию в своем телефоне — push-уведомление по электронной почте. Ваш телефон был уведомлен всякий раз, когда вы получали новое электронное письмо, вот и все. Это уведомление было совсем не похоже на то, как оно выглядит сегодня. В том же году Microsoft запустила push-рассылку электронной почты на своих WindowsPhone. Пользователю отправлялось SMS всякий раз, когда он получал новое электронное письмо.

Современная экосистема push-уведомлений для смартфонов была представлена ​​Apple в 2009 году в их iPhone как APNS. Они вложили значительные средства в UI / UX push-уведомлений и центра уведомлений, чтобы сделать их осуществимыми и красивыми, как сегодня (Осторожно! Фанат Apple). Google присоединился к группе и выпустил свой push-сервис в 2010 году под названием C2DM. Google перезапустил свой push-сервис под названием GCM в 2012 году.

Как. Последние три темы касались истории push-уведомлений, теперь мы должны углубиться в ее технические аспекты. Хотя push-уведомления теперь являются частью всех мобильных операционных систем, iOS, Android, Windows, BlackBerry10 и т. д., я буду обсуждать только первые две. В совокупности они покрывают более 95% рынка.

Общий шаг: Каждое мобильное устройство (iPhone или Android Phone) имеет уникальный идентификатор, предоставленный производителем, назовем его идентификатором устройства. Каждому мобильному устройству также назначается уникальный PushToken ID поставщик услуг push-уведомлений, например Apple для iPhone и Google для телефонов Android. Вы должны сохранить идентификатор PushToken устройства вместе с его идентификатором устройства на своем сервере, чтобы вы могли отправлять push-уведомления на эти устройства. Вы не можете отправить push на телефон, если у вас нет его PushToken ID. Поставщики услуг push-уведомлений имеют соответствующие API-интерфейсы, которые можно вызывать из мобильного приложения для получения PushToken. Push-токены имеют срок действия, поэтому через некоторое время их необходимо обновить.

iOS : Apple хочет, чтобы вы сначала получили SSL-сертификат, чтобы иметь возможность взаимодействовать с ее APNS. Шаги по его созданию описаны здесь. Сокет для APNS открывается с использованием этого SSL-сертификата, когда вы хотите отправить сообщение, добавьте его в очередь. Полезная нагрузка для APNS выглядит так

 “aps” : {
 “alert” : “This is the alert text”,
 “badge” : 1,
 “sound” : “default”
 }

Вы, должно быть, видели число в маленьком кружке в правом верхнем углу значков приложений. Этот номер называется значком.

У Apple есть служба обратной связи, которую ваш сервер должен опрашивать через определенный интервал (достаточно раз в день). Он сообщает обо всех push-токенах, срок действия которых истек. Вы должны удалить их из своей базы данных и попросить мобильное приложение восстановить их.

Android: Нет смысла обсуждать, как работает C2DM, так как он полностью закрыт Google. Мы увидим, как работает GCM, но перед этим посмотрим, какие у него преимущества перед C2DM.

  • Самым большим изменением является то, что GCM не требует ClientLogin для создания AuthToken (это зашифрованный длинный пароль, который Google выдает для связи с Push-серверами в каждом запросе). Новый AuthToken для вашего приложения доступен в консоли API Google.
  • Размер полезной нагрузки в C2DM был меньше 1 КБ, а теперь составляет 4 КБ. Это позволило серверу отправлять сообщения большего размера в push-уведомлениях.
  • Еще одним важным улучшением является пакетный запрос. Вы можете отправить один и тот же push на 1000 устройств всего за один HTTP-запрос.

Это пример HTTP-запроса в его простейшей форме для отправки устройств Android.

https://gcm-http.googleapis.com/gcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u0GBYzPu7Udno5aA
{
 "to": “push_token_id”,
 “data”: {
   “message”: “My first push!”,
 }
}

Последнее примечание: вам потребуется больше копать, чтобы написать свой push-код. Я написал автономный сервер push-уведомлений для своей предыдущей компании. Менеджеры продукта могут ввести запрос MySQL и push-сообщение, все пользователи, которые находятся в наборе результатов этого запроса, получат push-сообщение. Мы не проверяли его предел, но он смог отправить около 30 000 push-уведомлений за одну секунду. После отправки он показывает отчет о пользователях, включая распределение пользователей по операционной системе, пользователей, которые успешно получили отправку, пользователей, которые удалили приложение и т. д.

Обновление: В продолжение этого я написал пост о том, как более эффективно отправлять push-уведомления.