Как работают push уведомления ios
Перейти к содержимому

Как работают push уведомления ios

  • автор:

Вся правда и вымысел о push-рассылках

Робот иллюстрирует статью про Push уведомления в iOS.

Обычные пользователи воспринимают «пуши» как маленькие надоедливые напоминания, что они забыли посмотреть, кто поставил им лайки в Instagram. О пользе «пушей» для бизнеса думают лишь те, кто сталкивался с ними на профессиональном поприще. Если вы здесь, пора перейти из категории скроллеров Instagram в категорию серьезных осведомленных бизнесменов.

Почему push-рассылки популярны

Мы характеризуем push-рассылки как новый коммуникационный канал для пользователей приложений и веб-ресурсов. Все известные браузеры поддерживают эту функцию, рассылка также возможна со всех платформ Android. Если перейти в процентную плоскость, то получаем более 85% всей аудитории интернет-пользователей. Звучит внушительно, как же это работает?

Среди особенностей — возможность «пушей» появляться поверх открытых окон с последующей задержкой на экране десктопа на определенное время. Его хватит, чтобы пользователь запомнил, что от него хотят. Если «пуш» сделан грамотно, он не назойливый и информативный, есть шанс, что пользователь не проигнорирует. Даже если так случится, позднее можно посмотреть сообщение в Центре уведомлений. Такой есть на Windows и MacOS.

Никого не придется ни к чему принуждать. Пользователи подписываются на пуш-рассылку самостоятельно. Сейчас подписаться стало еще проще, осталось только нажать на кнопку «Разрешить», когда приходит уведомление.

Как составить правильное push-уведомление

Для начала не запаривайтесь, предоставляя подробные данные о себе, в этом нет необходимости. Рекомендуем не принуждать к этому пользователей, они не любят рассказывать о себе больше вас. Быстрое знакомство позволяет подружиться с подписчиком, хоть и не крепко, но с намеком на будущий результат. Часто пользователь соглашается на подписку в нативном окне браузера импульсивно. Учитывайте это при создании пушей. Они должны заинтересовать даже того, кто, возможно, не помнит, что подписывался.

Для нас структура идеального push-уведомления выглядит так:

  • заголовок — до 65 символов;
  • основной текст – до 240 символов;
  • ссылка на необходимую страницу;
  • изображение.

Как работают пуши в iOS?

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

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

Когда необходимое событие случится, сервер отправит программе пуш-уведомление. В этой ОС любое уведомление состоит из ряда компонентов:

  • звуковой сигнал;
  • текст;
  • иконка (советуем установить число пропущенных «пушей», чтобы мотивировать пользователя открыть и посмотреть содержимое).

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

Как пуши делают рекламу добровольной

В этом списке мы озвучим основные плюсы, которые смогли обнаружить за годы работы над различными «пушами», успешными и очень:

  1. Одним из преимуществ является добровольная подписка. Пользователи сами соглашаются на получение рекламных материалов. А значит, они будут лояльнее относиться к вашим предложениям.
  2. Аудитория — живые люди, которые самостоятельно совершили подписку. Процент тех, кто сделал это случайно мизерный, его можно даже не учитывать.
  3. Забудьте о рекламе мимо цели. «Пуш» прилетает прямо на экран потенциального покупателя. Рекламу обязательно увидят, проигнорировать ее гораздо сложнее.
  4. За короткое время можно собрать достаточно статистики для оптимизации вашего контента.

Push-итог

Мы уже не раз слышали, что push-рассылки — это плохой вид рекламы, нечистоплотный. Мол, кто захочет читать надоедливые всплывающие окна. Наверняка у людей, выступающих против, неправильное представление об push-рекламе. Она добровольная, недорогая, не принуждает людей ни к каким действиям. Безусловно, существует немало бизнесменов, использующих этот инструмент назойливо и во вред. Судить по ним всю индустрию не стоит. Push-рассылка в умелых руках — путь к продажам на долгую перспективу.

Особенности отправки пуш на IOS

В сентябре 2018 года на самой ожидаемой презентации осени Apple представила миру 3 новых версии iPhone. Вместе с новыми гаджетами мир увидел и новенькую операционную систему iOS 12. Разработчики здорово усовершенствовали инструменты для защиты данных, а также изменили алгоритмы показа уведомлений, позаботившись о здоровом сне своих клиентов.

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

Особенности новой iOS

В новой iOS 12 гиганты силиконовой долины уже стандартно повысили производительность системы, добавили новых анимодзи и придумали много других классных фишек. Не будем уделять много внимание общим новинкам — о них вы можете прочесть в других блогах. Перейдем непосредственно к возможностям, важным для бизнесов с мобильными приложениями на iOS.

1. Блокировка отвлекающих приложений

Разработчики научили систему анализировать время использования приложений, и добавили возможность ограничивать время работы в них. Эта функция получила название “Экранное время” и, очевидно, будет пользоваться большой популярностью у людей, склонных бесконтрольно проводить часы напролет в соцсетях или на Youtube.

Экранное время

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

В покое

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

При попытке воспользоваться приложением iPhone покажет вот такое предупреждение.

Блокировка отвлекающих приложений

Когда же заблокированы все приложения и телефон находится в “Режиме покоя”, песочные часы присутствуют возле всех приложений, за исключением разрешенных всегда. Все push-уведомления от заблокированных приложений будут скрыты.

После разблокировки они появятся в Центре уведомлений в хронологическом порядке.

2. «Умная» группировка уведомлений

В новой OS появилась “умная” группировка уведомлений. Теперь автоматизированные push-уведомления iOS 12 группируются в Центре уведомлений и не занимают много места на экране мобильного телефона, как раньше.

Как работает группировка?

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

Группы приложений

2. Чтобы просмотреть все пуши в группе, достаточно коснуться к сгруппированному уведомлению: пуши появятся на экране в хронологическом порядке. Удалить сгруппированные push-уведомления можно как по отдельности — сдвинув пуш влево и выбрав “Очистить”, так и одним махом — нажав вверху на крестик “Очистить”.

Группировка пуш

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

Группы пуш-уведомлений

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

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

6. Группировка моб пуш в iOS 12 включена автоматически для всех приложений, но пользователь может менять её параметры самостоятельно.

Параметры группировки Push

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

  • группировать автоматически;
  • группировать по программе;
  • выключить группировку.

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

3. Расширенные уведомления

Одна из главных фишек в iOS 12, возможности которой вызовут у маркетологов ажиотаж, — так называемый рич контент в моб. пушах.

Мобильные push-уведомления — ваш новый канал для коммуникации

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

Push-уведомление

А значит — можно максимально креативить для создания push-кампании в ecommerce на iOS последней версии. Теперь к мобильному пушу можно добавлять кнопки с переходом на приложение или сайт, предложения поделиться в социальных сетях, поставить like\share\repost и т.д.

Рич контент в пуш-уведомлении

К примеру, Shazam уже использует эту фишку для моб пушей и предлагает шазамерам купить найденные треки в iTunes или поделиться ими с друзьями.

Рич контент от Shazam

Ecommerce же могут использовать рич контент для вовлечения пользователей во взаимодействие с вашими пушами и получения real-time фидбека. Например:

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

Интерактивность в пушах

4. Режим «Не беспокоить»

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

Режим «Не беспокоить» активируется несколькими способами:

вручную по заданным в настройках параметрам;

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

Режим не беспокоить

по предварительным настройкам режима “Не беспокоить водителя”.

Не беспокоить водителя

автоматически для заданного времени в “Режиме сна”.

“Не беспокоить во время сна”

При включении опции “Не беспокоить во время сна”, которая регулируется на вкладке Часы, экран устройства затемняется.

Режим сна

Центр уведомлений также преображается в черные тона: фон пушей становится практически черным, а на экране появляется предупреждение.

Опция “Не беспокоить во время сна”

С первым будильником опция “Не беспокоить во время сна” прекращает свое действие.

Важно! Apple, конечно, позаботился о спокойствии и здоровым сне своих клиентов, но не нужно надеяться, что это убережет вас от отправленных несвоевременно моб. пушей. Не все пользователи устанавливают у себя “Режим сна”, и чтобы на 100% защитить своих подписчиков от полуночных пушей, предусмотрите уровень беспокойства и продумайте время отправки при создании сценариев.

5. Быстрая настройка оповещений и тихие уведомления

В iOS 12 разработчики дали возможность пользователям прямо в Центре уведомлений корректировать настройки оповещений. Больше нет необходимости долго шерстить меню настроек. Чтобы открыть его, необходимо долгим зажатием пуша вызвать иконку (•••).

Push-уведомления

После этого на экране появится функционал управления уведомлениями.

Тихие уведомления

Под кнопкой “Доставлять без звука” скрывается важная функция от новой операционной системы — пользователь может “глушить” все уведомления от выбранного приложения. С этого момента, Push-нотификации Apple больше не появятся в виде банера или всплывашки на экране блокировки, но будут сохранены в Центре уведомлений. И, конечно же, такие пуши доставятся без единого звука или вибрации.

Тихие пуш

Нажатием на кнопку “Выключить” можно полностью отключить push уведомления для iPhone от этого приложения. Правда, приложение уточнит у юзера, точно ли он не хочет получать пуши или, возможно, нажал на кнопку по ошибке.

Отключить уведомления

Пункт “Настройки” в одно мгновение перенесет пользователя в нужный раздел, который в iOS 12 тоже претерпел некоторые изменения. В параметках появились увеличенные миниатюры, которые показывают, как именно пуши будут отображены на экране. Также на странице добавлены настройки для группировки пушей — мы их описали в Пункте 2.

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

One more thing…

iOS 12 обеспечивает не только спокойствие пользователей, но и оберегает их личные данные. Это нововведение особенно придется по душе сторонникам теории Большого Брата, следящего за нами, и сильно озадачит интернет-маркетологов.

Безопасный серфинг в браузере Safari

Safari интегрировал в iOS систему защиты пользователей от сбора данных веб-сайтами, использующими различные дополнительные компоненты.

Safari защищает пользователей от отслеживания при нажатии кнопки “Поделиться” или при использовании виджетов для комментариев. Он запрещает сайтам делать это без вашего согласия и блокирует режим “тихого” отслеживания соцсетей своих юзеров. Кроме того, Safari не позволяет рекламодателям собирать персональные данные вашего устройства, а значит они теряют возможность трансляции таргетированной и контекстной рекламы.

Подключить мобильные push-уведомления

О чем следует помнить маркетологам при отправке мобильных пушей?

Попасть на экран к пользователям Apple стало еще сложнее: тихие уведомления и режим “Не беспокоить” убивают шансы пуша быть замеченным, а значит — донести нужную информацию.

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

Хронологический порядок в показе push-ей больше не действует. Они ранжируются по степени вовлеченности, а значит — нужно добиваться максимального взаимодействия клиента с вашими пушами с помощью rich-контента в пушах и realtime-фидбека.

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

Подписывайтесь на нашу рассылку, чтобы всегда узнавать первыми о новостях в мире емейл-маркетинга!

Пуши для iOS, рост производительности — почему Flutter теперь ещё больше подходит для PWA

PWA уже давно не новинка на рынке антикризисных технологий. Мы подробно разбирали технологию в других статьях: как можно заменить мобильное приложение с помощью PWA, как создать PWA на Flutter, как сделать универсальное приложение для всех платформ и как отличить PWA от мобильного веба.

Освещая плюсы и минусы прогрессивных веб-приложений, каждый раз приходилось оговариваться, что всё ещё есть ряд ограничений, в частности, для iOS. Например, отсутствие в PWA push-уведомлений для iOS — серьёзный минус в борьбе за внимание пользователей. Кроме того, многие крупные компании с осторожностью смотрели в сторону PWA, так как было много неопределенности: возможно ли бесшовно перенести проект с натива на PWA и после снятия санкций вернуть его обратно, какую технологию выбрать для реализации.

В этой статье разберём: что нового во Flutter для PWA, и как теперь работают push для iOS.

Apple выпустили первую бета-версию iOS 16.4, в которой появилась поддержка Web Push и других функций для веб-приложений.

Начиная с первого iPhone, пользователи могли добавлять ярлык любого сайта на главный экран своего смартфона. Делается это просто: пользователь нажимает кнопку «Поделиться», чтобы открыть меню, затем нажимает «Добавить на главный экран», значок выбранного сайта появляется на главном экране. Но возможность отправлять push-уведомления из PWA для iOS не была реализована до недавнего времени.

Теперь веб-приложение, добавленное на главный экран iPhone, может запрашивать разрешение на получение push-уведомлений, если этот запрос является ответом на прямое взаимодействие с пользователем. Только после этого iOS предлагает пользователю дать веб-приложению разрешение на отправку уведомлений. После разрешения пользователь может управлять этими настройками для каждого веб-приложения.

Уведомления от веб-приложений работают точно так же, как уведомления от других приложений. Они отображаются на экране блокировки, в «Центре уведомлений» и на подключённых Apple Watch.

Что это даст вашему приложению? Вы не потеряете текущую аудиторию и сможете привлекать новых клиентов. Отправка пользователям пуш-уведомления позволяет оповещать о новых акциях и предложениях, выстраивать персонализированное взаимодействие с пользователем.

В этом разделе расскажем о том, какие нововведения уже доступны во Flutter, а какие только ожидают релиза. Информация актуальна на момент публикации статьи.

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

Impeller рендерит интерфейс иначе, и это заметно уже сейчас. Исчезли некоторые классические проблемы Skia: зазоры между UI‑элементами, которые находятся близко друг к другу. Раньше это часто выражалось в виде белых полосок на экране.

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

Статус: доступно для использования с небольшими ограничениями.

Дополнительные визуальные эффекты станут доступны благодаря шейдерам — специальным программам для отрисовки графики, которые теперь поддерживает Flutter. Они нивелируют пропуск кадров в рантайме. Кроссплатформа бесшовно интегрирует новые возможности с иерархией виджетов.

Нововведения доступны не только на мобильных: в веб-версиях можно реализовать всё то же самое. Одна и та же кодовая база обеспечивает работу интерфейсов как на iOS и Android, так и в браузере.

Что это даст вашему приложению? Теперь Flutter поддерживает пиксельные шейдеры в веб, а значит, уже можно применять новые визуальные эффекты.

Статус: доступно для использования.

Во Flutter можно будет импортировать модели, созданные в Blender — специальной программе для создания трёхмерной графики. Кроме того, каждая итерация работы с объектом будет отображаться в реальном времени, что позволит видеть результат в приложении.

Многие считают, что 3D-графика в мобильных приложениях нужна только для игр. Но это не так: технология используется и в обычных приложениях для улучшения интерфейса и повышения удобства. Например, 3D-модели помогут при создании дополненной реальности, визуализации интерьеров и экстерьеров, создании трёхмерных диаграмм и графиков.

Что это даст вашему приложению? Возможность интегрировать 3D в другие интерфейсы на Flutter и сделать контент приложения более современным и уникальным.

Статус: скоро появится во Flutter.

Для перевода приложения в веб, Flutter можно использовать как компонент, встроенный в более сложное приложение. Бывает, что приложениям нужно обратиться к системным API или коду, написанному на другом языке. Чтобы сделать это взаимодействие бесшовным, во Flutter скоро появится интеграция с веб и мобильными платформами.

В концептуальном демо, которое выпустили разработчики Flutter, представлено простое приложение, встроенное в веб‑страницу на HTML.

С помощью HTML-кнопки и JavaScript можно вносить изменения в состояние Flutter и наоборот.

Тенденция на бесшовность нас однозначно радует. Уже сейчас мы пользуемся FFIgen и JNIgen (специальными библиотеками и генераторами) — это то, что помогает нам уже сейчас. Очень радует, что Flutter целенаправленно развивается из состояния «этим можно пользоваться» в состояние «этим хочется пользоваться».

Что это даст вашему приложению? Много новых способов добавлять интерактивные элементы в уже существующее приложение.

Статус: скоро появится во Flutter.

Наш опыт использования. Мы протестировали возможности Flutter Web на создании прототипа необанка. Концепт отражает возможности платформы: создание универсального приложения для веба, десктопа и мобильных. Подробнее почитать о кейсе можно тут.

Изучите подробнее концепт по ссылке: онлайн-банк на Flutter

Flutter сейчас обладает всеми возможностями, чтобы сделать переход из мобайла на PWA максимально быстрым и бесшовным. Для того, чтобы показать, как осуществляется такой проект, мы составили роадмап.

  • Разрабатываем PWA приложение на Flutter. Через 2 месяца запускаем версию для тестирования внутри проекта, а через 4 — версию с базовой функциональностью. Её уже можно показывать клиентам.
  • Дорабатываем Flutter-приложение, на это уйдёт примерно 10 месяцев. На этом этапе в нём уже будет вся функциональность, что и в нативной версии. После этого можно заменить существующее нативное приложение на кроссплатформенное на Flutter.
  • Параллельно разрабатываем версию приложения для десктопа на той же кодовой базе, что и мобильные — Flutter это позволяет.
  • Передаем проект инхаус или остаёмся на поддержке и развитии. Как мы бесшовно передаем проекты в инхаус-команду можно почитать в этой статье.

Многие коммерческие компании и банки остались без доступов в сторы. Вариантов выхода из ситуации было несколько: кто-то быстро заказывал приложения-зеркала, на которые нужно такой же бюджет, как и на основное, а за скорость, скорее всего, ещё и нужно было доплатить. Второй вариант — создание прогрессивного веб-приложения. Однако и тут ожидали подводные камни: все они сводились к урезанным функциям на платформе iOS. Теперь же, с выходом iOS 16.4, причин не выбрать PWA — всё меньше. Для владельцев iPhone будут доступны такие же функции PWA приложений, как и для Android.

Вы в блоге Surf, с 2011 года мы разрабатываем мобильные и веб-решения для бизнеса. Если хотите заказать нам разработку универсального приложения на Flutter и сэкономить 60% бюджета, пишите на [email protected].

Рекомендуем почитать:

✅ Как создать универсальное приложение для iOS, Android, веба, десктопа и сэкономить 60% бюджета

✅ PWA vs мобильный веб: чем отличаются и что выбрать

✅ PWA + Flutter: созданы друг для друга

Handling iOS Push Notifications: The Not So Apparent Side

Oscar

At Fenrir, many of our developers have had the experience of maintaining applications that have been around for a while. Because of the scale of some of these apps, supporting older iOS versions is often a requirement. When you also consider the fact that a small mistake in the migration could possibly impact thousands of people, understanding what’s going on with the code becomes a necessity. Push notifications is one of those technologies that can be hard to test because of the setup required.

Since push notifications have been around for quite a while, this article will not talk about how to implement them. Instead, it will try to clarify various aspects about push notifications that might not be so apparent to newcomers or might have even been overlooked by some veterans. One of them being the timing in where each of the handler methods is actually called.

Configuration

Before push notifications can be received there are 2 things that must be properly configured.

The Device Capabilities

The app must specify what capabilities it supports. To receive push notifications, the “Push Notifications” capability must be turned on.

Another capability that can also be turned on is “Remote notifications”. This one is found under the “Background Modes” group and will allow your app to be launched in the background in response to a notification whose payload includes the “content-available” flag (aka Silent Notifications).

The Device Token

Getting a device token is necessary so that your server can use it to send notifications through apple’s distribution system.

The device token can be retrieved by calling this method:

Which will return the appropriate response in your AppDelegate methods.

However, the timing in where this method should be called depends on the device capabilities currently set.

That is, if you don’t have the “Remote notifications” capability turned on, you will have to ask for the user permission to display alerts before being able to retrieve the device token. But if it is on, you can retrieve the device token at any time.

Asking the user for permission is done with the following methods.

Before iOS 10, using the UIApplication method:

  • registerUserNotificationSettings(_:)

iOS 10 onwards, using the UserNotifications framework methods:

  • requestAuthorization(options:completionHandler:)
  • setNotificationCategories(_:)

Notification Types

Something that is often overlooked is that there are actually 2 types of push notifications.

“Alert Notifications”

These notifications are used to alert or inform the user about something. They can include an alert, set a badge and even play a specific sound.

  • Only the “Push Notifications” capability is required.
  • The user’s permission is required before retrieving the device token.

Their payload is similar to this (example taken from the apple documentation):

Important:
If the payload doesn’t include at least one of the following 3 keys, “alert”, “badge”, “sound” then the push notification will be ignored. (No methods will be called inside your app)

“Silent Notifications”

These notifications are used to execute code in response to a push notification event. They do not show an alert. They also work when your app is on the background sleeping, or when it isn’t running (was killed by the system). In these cases it will be awaken/relaunched and given up to 30 seconds of execution time.

  • The “Remote notifications” capability must be set in addition to the “Push Notifications” one.
  • The device token can be retrieved as soon as your app is launched.

The payload for silent notifications must include the “content-available” flag set to “1”.

Important:
Your app won’t be launched if it has been killed by the user.

Mixed Push Notifications

This is not a notification type per-se but it’s important to mention that the payload of both notification types can be mixed.

Important:
Just mixing the payload is not enough. You still have to configure and implement the required methods for each of the types independently.

The Methods

When a push notification arrives there are 4 methods that can be used to handle the notification. Which method gets called is defined by the following factors:

  1. The currently implemented methods.
  2. The current application state.
  3. The notification payload.

The next section will try to explain this behavior. For simplicity, the different application states will be summarized like this:

  • Foreground: The app is currently shown on the user’s screen.
  • Background: The app is not shown on the screen but it hasn’t been terminated by the user or the system.
  • Not Running: The app has been terminated by the system.
  • Not Running (killed by the user): The app has been terminated by the user.

And the notification payload type will be summarized like this:

  • Alert Payload: Contains a least one of the following values “alert”, “badge”, “sound”.
  • Silent Payload: Has the “content-available” key set to “1”. (It is assumed that the remote notifications background capability is enabled)
  • Mixed Payload: Alert Payload + Silent Payload

Finally, the methods can be categorized in 2, based on where they should be implemented.

The AppDelegate Methods

These methods can be used pre iOS 10. They are implemented inside the application’s AppDelegate class since they are part of the UIApplicationDelegate protocol.

application(_:didReceiveRemoteNotification:)

The oldest among the methods when handling push notifications.

Things to consider:

  • It was deprecated on iOS 10.
  • It’s use is limited so the UserNotifications framework should be used instead.

With an Alert Payload it is called in the following situations:

  • Foreground: When the notification arrives. (Doesn’t show a system notification)
  • Background: If the user taps the notification, before the app enters foreground.
  • Not Running: Not called.
  • Not Running (killed by user): Not called.

With a Silent Payload it is called in the following situations:

  • Foreground: When the notification arrives.
  • Background: When the notification arrives.
  • Not Running: After the app enters foreground.
  • Not Running (killed by user): Not called.

With a Mixed Payload it is called in the following situations:

  • Foreground: When the notification arrives. (Doesn’t show a system notification)
  • Background: When the notification arrives. + If the user taps the notification, before the app enters foreground.
  • Not Running: After the app enters foreground.
  • Not Running (killed by user): Not called.

application(_:didReceiveRemoteNotification:fetchCompletionHandler:)

The purpose of this method is to handle silent notifications, but it can also be used if the UserNotifications framework is not available (pre iOS 10).

Things to consider:

  • application(_:didReceiveRemoteNotification:) won’t be called if this method is implemented.
  • Gives a warning if the “Remote notifications” capability is not enabled.
  • You must call the block handler once the background operation has been completed.

With an Alert Payload it is called in the following situations:

  • Foreground: When the notification arrives. (Doesn’t show a system notification)
  • Background: If the user taps the notification, before the app enters foreground.
  • Not Running: If the user taps the notification, before the app enters foreground.
  • Not Running (killed by user): If the user taps the notification, before the app enters foreground.

With a Silent Payload it is called in the following situations:

  • Foreground: When the notification arrives.
  • Background: When the notification arrives.
  • Not Running: When the notification arrives.¹
  • Not Running (killed by user): Not called.

With a Mixed Payload it is called in the following situations:

  • Foreground: When the notification arrives. (Doesn’t show a system notification)
  • Background: When the notification arrives. + If the user taps the notification, before the app enters foreground.
  • Not Running: When the notification arrives.¹ + If the user taps the notification, before the app enters foreground.
  • Not Running (killed by user): If the user taps the notification, before the app enters foreground.

Important¹:
Under normal circumstances, the “content-available” flag should launch your app if it isn’t running and wasn’t killed by the user. However, this is ultimately decided by the system so it might not always happen. In that case, this method will be called the next time the user launches your app.

The UserNotifications Framework Methods

This framework is only available when the deployment target is set to iOS 10 or newer. An object conforming to the UNUserNotificationCenterDelegate protocol should be used. This object must be set as the UNUserNotificationCenter’s delegate before the app finishes launching.

You must assign your delegate object to the UNUserNotificationCenter object no later before your app finishes launching. For example, in an iOS app, you must assign it in the application:willFinishLaunchingWithOptions: or application:didFinishLaunchingWithOptions: method.

The protocol contains two methods which are used to handle incoming push notifications:

  • userNotificationCenter(_:willPresent:withCompletionHandler:)
  • userNotificationCenter(_:didReceive:withCompletionHandler:)

Once both methods are implemented, the AppDelegate method application(_:didReceiveRemoteNotification:) won’t be called anymore.

Important:
The UserNotifications framework is only used to handle Alert Payloads and thus, if you want to handle Silent Payloads, you will have to implement the application(_:didReceiveRemoteNotification:fetchCompletionHandler:) method as well.

Understanding when each of these methods gets called can be done by considering two situations.

  1. If the app is currently on the foreground willPresent”will be called as soon as the notification arrives. You can control whether to display an alert or not based what you return on the method’s completion handler.
  2. Whenever the user responds to a notification “didReceive” will be called with the information regarding the action the user took. This method is called regardless of the current app state as long as the user acted on the notification.

The Launch Options Dictionary

Regardless of the whatever methods are currently implemented, if the application was launched as a result of a notification, either by the user tapping on it, or the payload having the “content-available” key, the “launchOptions” dictionary will contain the payload of the notification, which can be accessed through the “.remoteNotification” key.

In other words, you can test if the “launchOptions” dictionary contains a value for the “.remoteNotification” key in case you want to update your interface in response to a notification if your app wasn’t running when it arrived. (Similar to how messaging apps can go straight to a conversation thread when they are launched through a notification)

Conclusion

Even though things have gotten much simpler since the UserNotifications framework was introduced, it can still be useful to know how things used to work before its existence. Especially when having to maintain old projects that still use the old AppDelegate methods or when performing a migration to the UserNotifications framework.

Unfortunately push notifications still remain as one of those technologies that are not quite easy to test and experiment with. We hope this article could offer some clarification about the way they work.

The code used to test push notifications can be found in the following repository.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *