Как получить push сообщение на телефон iphone

Обновлено: 02.07.2024

Что такое Push-уведомления на айфоне


Настройка Push-уведомлений на айфоне


Обратите внимание! Периодичность повторного появления уведомлений на экране также настраивается: они могут появляться до десяти раз каждые две минуты.


В настройках можно скрывать и отключать уведомления

К сведению! Пожалуй, самый интересный вид оповещений от приложений, установленных на смартфоне — это ограничение по месту нахождения. То есть можно заранее настроить, при нахождении в каком месте придет напоминание от программы (например, айфон напомнит ребенку позвонить родителям после того, как он пришел домой со школы, или оповестит супруга после покидания рабочего офиса о том, что нужно зайти в магазин или позвонить домой).

Если надобность в подобной опции отпала, то ее можно выключить точно таким же способом, которым её включали.


Как посмотреть старые уведомления на айфоне в истории

Как включить или отключить Push-уведомления на айфоне

Что делать, если не приходят уведомления на айфон


Еще одна причина, почему от программы не приходят оповещения — она была недавно восстановлена либо обновлена. Тогда процедура включения функции сродни той, что была описана выше.

По забывчивости владелец смартфона мог выйти из своей учетной записи. В этом случае будет невозможно пользоваться большинством приложений на айфоне (почтой, календарем), а значит, и Push-послания от них не будут приходить.

Хоть уведомления от приложений на первый взгляд и кажутся надоедливыми и ненужными, некоторые из них значительно облегчают жизнь. Теперь программам не нужно дожидаться, пока пользователь удосужится их открыть. О новых изменениях они будут сообщать ему прямо на экране блокировки. Таким образом даже сверхзанятой и оттого немного рассеянный житель мегаполиса сможет всегда получать только самую актуальную информацию.

Оглавление:

Настройка Push-уведомлений

Настройки

Настройки

3. Настроить параметры центра уведомлений:

Настройки


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

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

Настройки

5. Определить стиль уведомлений:

Настройки


Есть возможность получать их в виде небольших баннеров, которые будут появляться в верхней части экрана и быстро пропадать, а также в виде напоминаний, отображаемых в центре экрана (убрать их можно лишь нажатием соответствующей кнопки).

6. Включить/выключить необходимость отображения количества непросмотренных уведомлений в виде значка-наклейки на ярлыке приложения:

Настройки

7. Включить/выключить необходимость сопровождения уведомления звуковым сигналом:

Настройки

Настройки

9. Включить/выключить возможность отображения уведомлений приложения на заблокированном экране устройства:

Настройки

Настройки

3. Перейти в меню работы с Apple ID:

4. Выйти из своего аккаунта Apple ID:

5. Перезагрузить устройство обычным методом — выключить его и опять включить:

9. Если ошибка будет повторяться произвести полный сброс настроек устройства согласно соответствующей инструкции.


Таким образом, подробно настроив возможность получения уведомлений из разных источников каждого конкретного приложения, их тип и количество, можно избавиться от надоедливой навязанной информации, всегда оставаться в курсе событий, а также увеличить время автономной работы устройства. Кроме того, любые связанные с Push-уведомлениями ошибки достаточно просто решить, воспользовавшись короткой последовательностью действий.

iOS-приложения не могут долгое время находиться в фоновом режиме. В целях сохранения заряда батареи приложениям, работающим в фоне, разрешено выполнять ограниченный набор действий.

Но что если происходит что-то интересное и вы хотите сообщить об этом пользователям, даже если ваше приложение у них не запущено?

Например, пользователь получил ответ в Твиттере, или его любимая команда выиграла игру, или его обед готов. Так как приложение не запущено, оно не может проверить и получить эти данные.

К счастью, корпорация Apple предусмотрела решение этой проблемы. Вместо того, чтобы беспрерывно проверять события или производить какие-либо действия в фоновом режиме, вы можете создать серверную сторону приложения, которая будет выполнять эти действия.

Краткий обзор

Схема работы механизма push-уведомлений:


  1. iOS запрашивает у сервера Apple Push Notification Service (APNS) токен девайса.
  2. Приложение получает токен девайса. Можно считать, что токен – это адрес для отправки push-уведомлений.
  3. Приложение отправляет токен девайса на ваш сервер.
  4. Когда произойдёт какое-либо событие для вашего приложения, сервер отправит push-уведомление в APNS.
  5. APNS отправит push-уведомление на девайс пользователя.

Стоит ли по-прежнему использовать push-уведомления, если уже в iOS 4.0 появились локальные уведомления и мультизадачность? Ещё бы!

Локальные уведомления — это ограниченные по времени события. Только VOIP-приложения, навигация и фоновое воспроизведения звука обладают возможностью неограниченного фонового выполнения. Если необходимо уведомить пользователей приложения (пока оно закрыто) о каком-либо внешнем событии, вы всё ещё должны использовать push-уведомления.

В этом руководстве будет детально описана работа системы push-уведомлений и как её интегрировать в своё приложение.

Что необходимо для push-уведомлений

Для интеграции push-уведомлений в приложение необходимо:

iPhone, iPad или iPod touch. Push-уведомления не работают в симуляторе, поэтому для тестирования нужен девайс.

Если хотите полностью выполнять примеры из этого руководства, вам необходимо создать provisioning profile и SSL-сертификат. Я в деталях объясню, как это сделать.

Сервер, подключенный к интернету. Push-уведомления всегда отправляются сервером. В процессе разработки вы можете использовать ваш собственный Мак в качестве сервера, но для релиза нужно что-то наподобие VPS (Virtual Private Server).

Для работы с push-уведомлениями дешёвого виртуального хостинга недостаточно. Вам необходимо запустить фоновое выполнение на сервере, установить SSL-сертификат, настроить исходящее TLS-соединение на определённых портах. Большинство провайдеров виртуального хостинга не позволят вам это сделать. Хотя если обратиться в службу технической поддержки, то вам, скорее всего, помогут решить все проблемы. Но всё же я настоятельно рекомендую использовать VPS.

Анатомия push-уведомлений

Push-уведомления — это нечто довольно маленькое; размер полезной нагрузки не может превышать 256 байт. Это примерно столько же, сколько позволяет вместить в себя СМС или твит. Push-сервер не будет тратиться на переносы на новую строку и пробелы, а сгенерирует что-то наподобие этого:


Такое представление менее читаемо, однако предоставляет достаточно места для более ценной информации. APNS отклонит push-уведомления, чьи размеры превышают 256 байт.

Понимание push-уведомлений


Они не надёжны! Нет гарантий, что push-уведомления будут доставлены, даже если APNS примет их.

Как только ваш сервер сформировал push-уведомление, он безответно отправляет его в APNS. Нет способа узнать статус доставки уведомления конечному пользователю после отправки. Время доставки может варьироваться от нескольких секунд до получаса.

Кроме этого, у пользователей i-девайсов может не быть возможности получать push-уведомления всё время. Например, рядом нет Wi-Fi сети с доступом в интернет либо девайс может быть вообще выключен.

APNS будет пытаться доставить последнее отправленное уведомление, когда девайс станет доступен для приёма. Но эти попытки ограничены по времени. После тайм-аута push-уведомление будет потеряно навсегда!


Они могут быть дорогими! Добавить push-функционал в приложение довольно просто и недорого, если вы владеете данными. Однако если у вас много пользователей либо необходимо запрашивать данные, то затраты резко возрастают.

К примеру, вы без проблем сможете оповестить пользователей об изменении RSS-ленты, потому что вы контролируете ленту и знаете, когда будут внесены изменения — когда обновится контент на сайте — ваш сервер мгновенно отправит уведомление.

Но что если ваше приложение — это RSS-читалка, позволяющая пользователям вносить URL-адреса своих лент? В этом случае вам необходимо придумать механизм слежения за обновлением добавленных лент.

На практике это означает, что вашему серверу нужно постоянно проверять ленты на изменение. Если у вас много пользователей, то возможно, придётся установить дополнительные сервера для обработки всех процессов и поддержки стабильной пропускной способности. Для таких приложений, как RSS-читалка, реализация push-функционала может стать довольно затратной и не представлять ценности для вас.

Provisioning Profiles и Сертификаты


Для того чтобы подключить push-уведомления к приложению, необходимо подписать его правильно сконфигурированным provisioning profile. Кроме этого, вашему серверу необходимо соединиться с APNS при помощи SSL-сертификата.

Provisioning profile и SSL-сертификат тесно связаны друг с другом и действительны только для одного App ID. Это защита, гарантирующая, что только ваш сервер может отправлять push-уведомления пользователям вашего же приложения.

Как вы знаете, для разработки и релиза приложения используют разные provisioning profiles. Есть два типа push-сертификатов для сервера:

Генерация Certificate Signing Request (CSR)

Помните, как вы заходили на iOS Provisioning Portal и создавали сертификат разработчика (Development Certificate) после присоединения к iOS Developer Program? Следующие шаги будут аналогичными. Но всё же я советую выполнять их в точности, как будет описано ниже. У разработчиков большинство проблем с push-уведомлениями как раз и связано с сертификатами.

Цифровые сертификаты базируются на шифровании с использованием открытого-приватного ключа. Вам нет необходимости знать что-либо о шифровании при работе с сертификатами, но вы должны быть осведомлены в том, что сертификат всегда работает в паре с приватным ключом.

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


Сейчас перед вами должно быть окно ассистента сертификации:


Здесь введите e-mail. Разработчики советуют в качестве электронной почты использовать такую же, которую вы использовали для регистрации в iOS Developer Program, но это не обязательно.

Создание App ID и SSL-сертификата

Для начала создадим новый App ID. Каждому приложению, использующему механизм push-уведомлений, необходим свой собственный уникальный ID.


Я заполнил поля следующим образом:

Description: PushChat
Bundle Seed ID: по умолчанию
Bundle Identifier: me.evgeniy.PushChat

Будет лучше, если вы укажите свой собственный Bundle Identifier — com.yoursite.PushChat — вместо моего. В Xcode-проекте необходимо установить такой же bundle ID.

Ещё несколько моментов: мы сгенерируем SSL-сертификат, который будет использовать ваш push-сервер для защищённого соединения с APNS. Этот сертификат связан с App ID. Сервер может посылать push-уведомления только вашему приложению и никакому другому.

После того, как был создан App ID, он появится в списке:








Теперь у нас есть валидный сертификат и механизм push-уведомлений доступен для разработки. Если необходимо, вы можете снова загрузить сертификат.

Когда ваше приложение будет готово к релизу, необходимо повторить весь процесс для генерации Production-сертификата. Все шаги аналогичны.

Замечание. Production-сертификат действителен в течении года, но вы можете пересоздать его до истечения срока.

Нет необходимости добавлять сертификат в связку ключей. Если же вы захотите это сделать, то кликните два раза по скачанному ранее файлу aps_development.cer (после этого сертификат будет ассоциирован с приватным ключом).

Создание Provisioning Profile


Я заполнил поля следующим образом:

  • Profile Name: PushChat Development
  • Certificates: выберите сертификат
  • App ID: PushChat
  • Devices: выберите ваш девайс(ы)

Добавьте provisioning profile в Xcode перетянув файл на иконку IDE либо кликнув на файл два раза.

Если ваше приложение готово к релизу, то вам необходимо повторить описанный выше процесс для создания Ad Hoc или App Store distribution profile.

Простенькое приложение

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

Сейчас мы создадим простое приложение, которое будет принимать push-уведомления.


Я заполнил поля следующим образом:

После создания проекта, откройте PCAppDelegate.m. Измените метод didFinishLaunchingWithOptions следующим образом:


Вызов registerForRemoteNotificationTypes сообщает iOS, что это приложение хочет получать push-уведомления.

Соберите и запустите приложение. Для этого необходимо использовать девайс, потому что симулятор не поддерживает push-уведомления. Xcode автоматически выберет новый provisioning profile. Если во время запуска приложения произошла ошибка, убедитесь, что в Code Signing Identity выбран правильный profile.




Ваше приложение может определить, какие типы push-уведомлений включены:


Существует ещё одна вещь, которую вы должны добавить в приложение для того, чтобы иметь возможность получать push-уведомления. Добавьте следующий код в PCAppDelegate.m:


Когда ваше приложение регистрируется на приём push-уведомлений, оно пытается получить токен девайса. Это 32-байтовый уникальный номер, который однозначно определяет ваш девайс. Токен девайса можно сравнить с адресом, на который будут приходить push-уведомления.

После запуска приложения на консоли Xcode отобразиться токен вашего девайса:

Токен — это непрозрачная двоичная структура данных, которая представляет собой объект типа NSData. Для наших целей достаточно знать 32-байтовый токен девайса. Токен можно представить в виде 64 шестнадцатеричных символов. Мы будем использовать именно такой формат.

Если запустить приложение на симуляторе, то вызовется метод didFailToRegisterForRemoteNotificationsWithError:, который выведет ошибку с информацией о том, что симулятор не поддерживает push-уведомления.

Мы закончили с приложением. Теперь давайте опробуем push-уведомления в действии!

Отправка push-уведомления


Как было описано ранее, для отправки push-уведомлений необходимо настроить сервер. Но для тестирования воспользуемся приложением для Mac OS PushMeBaby, которое также можно скачать с сервиса self.deviceToken = @"564f77d3 c1d06866 77a907d5 31d0450a 9cb552ec 5e2373e5 f2cc2c20 ff013232";


Добавляем полезную нагрузку, о которой говорилось ранее (обязательно экранируем кавычки):


И задаём имя добавленного в проект SSL-сертификата:


Теперь запускаем приложение и нажимаем кнопку Push. В течении нескольких секунд вы должны получить push-уведомление.



Замечание. Уведомление не отобразится, если приложение запущено и активно на девайсе. Однако полезная нагрузка придёт в приложение и её можно обработать с помощью метода didReceiveRemoteNotification:


На этом всё. Все интересующие вас вопросы можно задать в комментариях; я постараюсь на них ответить.

Что такое пуш-уведомления и зачем они нужны

image

image

Видео, показывающие, что такое push-уведомления на iPhone и зачем они нужны пользователю

Читайте также: