Как получить 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-уведомлений:
- iOS запрашивает у сервера Apple Push Notification Service (APNS) токен девайса.
- Приложение получает токен девайса. Можно считать, что токен – это адрес для отправки push-уведомлений.
- Приложение отправляет токен девайса на ваш сервер.
- Когда произойдёт какое-либо событие для вашего приложения, сервер отправит push-уведомление в APNS.
- 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:
На этом всё. Все интересующие вас вопросы можно задать в комментариях; я постараюсь на них ответить.
Что такое пуш-уведомления и зачем они нужны
Видео, показывающие, что такое push-уведомления на iPhone и зачем они нужны пользователю
Читайте также: