Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Firebase
Code

Отправка push-уведомлений в приложение для iOS с помощью облачных сообщений Firebase

by
Difficulty:IntermediateLength:MediumLanguages:

Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)

Продолжая нашу серию статей о Firebase, в этом посте мы рассмотрим Firebase Cloud Messaging - или для краткости FCM - Google сервис с малой задержкой и сервис оркестровки уведомлений для мобильных приложений. Пока iPhone существует, push-уведомления играли важную роль в уведомлении пользователей в заранее определенное время о важных событиях, будь то уведомление о сообщении Skype или звонке, прямое сообщение в Twitter или игровые оповещения. Посредством тщательно продуманных сегментированных push-уведомлений маркетологи увеличили вовлеченность приложений и удержание пользователей. Вы можете сделать то же самое, используя FCM для:

  • целевые предопределенные или пользовательские сегменты пользователей, использующие преимущества демографии и поведения пользователей
  • доставлять немедленные или запланированные push-уведомления
  • интегрировать FCM в Google Analytics для обеспечения подробного мониторинга и проведения A/B-тестирования
  • создать полностью погруженное приложение для обмена мгновенными сообщениями

Предполагаемые знания

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

Цели этой статьи

В этой статье вы узнаете все о FCM, так как мы рассмотрим следующие темы:

  • настройка проекта FCM
  • настроим вашу среду для FCM
  • будем получать и обрабатывать сообщения
  • отправим сообщение на ваше устройство
  • обмен сообщениями по темам и группам
  • целевые сегменты и аналитика

Что такое Firebase Cloud Messaging (FCM)?

Вкратце, Firebase Cloud Messaging (или сокращенно FCM) - это кроссплатформенное решение для обмена облачными сообщениями и уведомлениями от Google, позволяющее разработчикам отправлять push-уведомления своим конечным пользователям приложений через Firebase Notification Composer или через набор API, предоставляемый Firebase. FCM поддерживает два типа сообщений: уведомления и сообщения с данными.

Firebase logo

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

Посредством таргетинга сообщений FCM может доставлять сообщения на отдельные устройства, группы устройств или устройства, подписанные на темы. Целевые группы напрямую интегрируются с Firebase Analytics, так что вы можете отслеживать вовлечение и конверсии, создавая целевые сегменты клиентов. Далее мы собираемся пройти процесс настройки проекта Firebase для iOS.

Настройте проект

В этой серии мы собираемся создать простое приложение, которое мало что делает, кроме запуска и получения сообщений от FCM. Давайте начнем с клонирования проекта из GitHub:

Открыв Podfile в корневом каталоге, вы заметили, что мы импортировали необходимые модули Firebase:

Введите следующее, чтобы построить pods:

pod install

Откройте рабочее пространство Firebase-FCM.xcworkspace и в браузере перейдите на панель Firebase и создайте новый проект:

Затем нажмите «Добавить Firebase» в ваше приложение iOS, и шаг за шагом пройдите через процесс регистрации вашего приложения в Firebase.

В какой-то момент он просит вас добавить файл GoogleService-info.plist в ваш проект Xcode:

Вы уже добавили библиотеки через CocoaPods, так что вы можете пропустить оставшиеся инструкции и вернуться в консоль Firebase.

В Xcode откройте AppDelegate.swift, и вы увидите, что мы инициализировали проект, импортировав Firebase и добавив FirebaseApp.configure():

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

Конфигурирование вашей среды для FCM

FCM использует службу Apple Push Notification (APN) для отправки и получения сообщений, поэтому нам нужно включить Push-уведомления через APN. Сначала на портале разработчиков Apple создайте ключ аутентификации.

Создайте ключ аутентификации APNs

Сначала перейдите в Сертификаты> Идентификаторы и профили и выберите Все под Ключами:

Create a new key in Apple Developer Portal

Теперь введите описание ключа для ключа авторизации APN, выбрав службу push-уведомлений Apple (APN). Храните этот ключ в надежном месте, так как это разовая загрузка.

Затем вам нужно создать идентификатор приложения, чтобы ваше приложение можно было идентифицировать. Выберите Идентификаторы > App IDs в меню навигации и нажмите кнопку +, чтобы добавить новый идентификатор приложения iOS. Введите описание и суффикс идентификатора приложения для вашего приложения в соответствии с тем, что есть в вашем проекте XCode. Убедитесь, что вы также выбрали Push-уведомления в поле службы.

Register App ID in Developer Portal

Вернитесь на панель Firebase и в разделе Настройки проекта выберите вкладку Облачные сообщения. Под Аутентификационным ключом APN в конфигурации приложения iOS нажмите кнопку Загрузить. Теперь загрузите ключ авторизации APN, который вы загрузили с портала разработчиков Apple.

Upload APN Auth Key

Авторизация Push-уведомлений в приложении

В вашем AppDelegate.swift добавьте следующий код:

Здесь мы импортируем UserNotifications, объявляя о нашем намерении реализовать UNUserNotificationCenterDelegate и запрашивая разрешение пользователя на уведомления с помощью UNUserNotificationCenter.current().RequestAuthorization().

В дополнение к токену APN, который мы сгенерировали ранее, FCM также генерирует токен, который используется для нацеливания на определенные экземпляры приложения устройства через обмен messaging:didReceiveRegistrationToken:. Это извлекается во время запуска приложения, и токен обновляется всякий раз, когда он истекает или каким-то образом становится недействительным.

По-прежнему в нашем файле AppDelegate.swift добавьте следующее под объявлением FirebaseApp.configure():

Обратите внимание, что мы также добавили MessagingDelegate в наше объявление класса. Токены извлекаются с помощью службы messaging:didReceiveRegistrationToken: и вызываются один раз в начале запуска приложения, а результаты отправляются на сервер приложений. Добавьте следующее в конец вашего метода didFinishLaunchingWithOptions:

Нам нужно явно попросить пользователя принять push-уведомления перед отправкой сообщений. Метод requestAuthorization(options: authOptions) делает именно это. Когда токен обновляется, ваше приложение получает уведомление с помощью следующего метода делегирования сообщений:

Последний метод позволяет вам получать сообщения на переднем плане, напрямую от FCM, чтобы обойти наш прокси-сервер APN. Далее мы работаем над обработкой Push-уведомлений.

Получение и обработка сообщений

Чтобы получать уведомления, нам нужно зарегистрироваться для получения уведомлений. Когда ваше приложение находится в фоновом режиме, ваши уведомления доставляются в системный трей до тех пор, пока ваше приложение не откроется, после чего пакет уведомлений затем передается обратному вызову didReceiveRemoteNotification: в AppDelegate. Давайте реализуем это следующим образом:

Проверка получения токена регистрации Firebase

Создайте и запустите свое приложение, убедившись, что оно запущено на вашем физическом устройстве, поскольку вы не можете получать push-уведомления на симуляторе. Прямо сейчас приложение ничего не делает визуально, но если вы обратите внимание на консоль Xcode, вы должны увидеть, что вы успешно получили идентификатор токена регистрации Firebase:

Console confirming Firebase registration token ID

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

Отправка сообщения на ваше устройство

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

Мы собираемся создать сообщение с помощью конструктора уведомлений Firebase, поэтому зайдите туда в браузере и введите образец текста. Убедитесь, что вы выбрали одно устройство для своей цели сообщения.

Compose message with Notifications Composer

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

Push notification appearing on your device

Тема и групповые сообщения

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

Обмен сообщениями в темах позволяет пользователям подписываться на определенные темы, такие как результаты матчей вашей любимой команды колледжа или обновления погоды в соответствии с интересами вашего пользователя. Пользователи могут подписаться на неограниченное количество тем с FCM, оптимизируя сообщения для пропускной способности, а не задержки. Для получения дополнительной информации о работе с тематическими сообщениями, пожалуйста, обратитесь к разделу «Обмен сообщениями по темам на iOS» в документации Firebase.

Если вы хотите отправлять сообщения на несколько устройств для каждого пользователя, таких как iPhone и iPad пользователя, обмен сообщениями между группами будет более подходящим для вас. Обмен сообщениями между группами устройств позволяет отправлять одно сообщение нескольким экземплярам приложения, работающего на устройствах, принадлежащих группе. (Сообщения группы устройств на iOS), где группа обычно означает одного пользователя с набором связанных устройств, совместно использующих общий ключ уведомления FCM.

Для любого типа обмена сообщениями вместо использования конструктора уведомлений вы должны использовать более автоматизированную и сложную форму запуска сообщений с использованием Firebase Admin SDK.

Целевые сегменты и аналитика

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

A/B-тестирование работает с FCM, поэтому вы можете тестировать различные маркетинговые сообщения, а с помощью Remote Config - тестировать изменения в своем приложении. (Firebase)

Для получения дополнительной информации обратитесь к документации Firebase по Firebase A/B тестированию.

Вы можете скачать полный исходный код этого проекта, клонировав демо-версию приложения push-уведомлений Firebase iOS из нашей учетной записи GitHub.

Заключение

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

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.