Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается создание push-уведомлений в приложении iOS с помощью пакета SDK чата служб коммуникации Azure.
Push-уведомления оповещают пользователей входящих сообщений в потоке чата, когда мобильное приложение не запущено на переднем плане. Службы коммуникации Azure поддерживает две версии push-уведомлений:
Базовая версия: номер значка появляется на значке приложения, устройство воспроизводит звук уведомления, и появляется всплывающее оповещение-баннер.
Расширенная версия: помимо функций, поддерживаемых в базовой версии, можно настроить название и предварительный просмотр сообщения в баннере оповещения.
Изучив это руководство, вы:
- Настройте сертификат службы push-уведомлений Apple (APNs).
- Настройте Xcode для push-уведомлений.
- Реализуйте базовую или расширенную версию push-уведомлений.
- Проверьте уведомления в приложении.
- Настройте автоматическое продление регистрации для push-уведомлений.
Скачать код
Скачайте пример кода на сайте GitHub Azure Samples Add Chat в приложение.
Предварительные условия
Выполните необходимые действия в статье о добавлении чата в приложение .
Создайте центр уведомлений Azure в той же подписке, что и ресурс Служб коммуникации, а затем свяжите концентратор уведомлений с ресурсом Служб коммуникации. См. статью "Подготовка центра уведомлений".
.p12
Создание сертификата APNs и его настройка в центре уведомлений
Если вы не являетесь внутренним клиентом Майкрософт, выполните действия, описанные в следующей процедуре, чтобы создать сертификат службы push-уведомлений Apple (APNs).
Если вы являетесь внутренним клиентом Майкрософт, отправьте билет и укажите идентификатор пакета приложения, чтобы получить .p12
сертификат. Затем перейдите к последнему шагу в следующей процедуре.
Войдите на портал разработчика Apple.
Перейдите к Сертификатам, Идентификаторам и Профилям>Идентификаторы>Идентификаторы приложений, а затем выберите идентификатор, связанный с вашим приложением.
На странице идентификатора приложения выберите Возможности>Push-уведомления, а затем нажмите Сохранить.
В появившемся диалоговом окне "Изменение возможностей приложений" нажмите кнопку "Подтвердить".
На странице вашего идентификатора приложения выберите Возможности>Push-уведомления>Настроить, и затем выберите один из следующих параметров:
- Для тестирования push-уведомлений при разработке приложения iOS нажмите кнопку "Создать сертификат " в разделе SSL-сертификат разработки.
- Чтобы отправить push-уведомления в рабочей среде, нажмите кнопку "Создать сертификат " в разделе "Рабочий SSL-сертификат".
На странице "Сертификаты, идентификаторы и профили" появится область создания сертификата.
В этой области вы отправляете запрос на подпись сертификата (CSR):
На новой вкладке браузера следуйте этой справочной странице Apple, чтобы создать CSR и сохранить файл как App name.cer. Инструкции включают использование помощника по сертификатам для запроса сертификата и заполнения сведений о сертификате.
Перетащите файл .cer в область выбора файла . Затем нажмите кнопку "Продолжить " в правом верхнем углу.
Выберите Скачать.
Сохраните файл локально в
.p12
формате.Откройте скачанный
.cer
файл. В keychain Access выберите сертификат, щелкните его правой кнопкой мыши и экспортируйте сертификат в.p12
формате.Перейдите в центр уведомлений. В разделе "Параметры" выберите Apple (APNS). Затем заполните сведения о сертификате:
- В режиме проверки подлинности выберите сертификат.
- Для отправки
.p12
сертификата отправьте созданный файл. - В режиме приложения выберите нужный режим.
Завершив ввод всех сведений, нажмите кнопку "Сохранить".
Настройка Xcode
В Xcode перейдите к разделу Подписывание и возможности.
Добавьте возможность, выбрав пункт + возможность, а затем — Push-уведомления.
Добавьте еще одну возможность, выбрав пункт + возможность, а затем — Режимы фоновой работы.
В разделе "Фоновые режимы" выберите удаленные уведомления.
Для целевой платформы Pod - AzureCore установите требование использования только безопасного API для расширений приложений на нет.
Реализация push-уведомлений
Базовая версия
Если вы хотите реализовать базовую версию push-уведомлений, необходимо зарегистрироваться для удаленных уведомлений с помощью APNs. Сведения о связанной реализации см. в AppDelegate.swift
разделе GitHub Azure Samples app delegate Swift.
Расширенная версия
Если вы хотите реализовать расширенную версию push-уведомлений, необходимо включить в приложение следующие элементы. Причина в том, что шифрование содержимого клиента (например, содержимое сообщения чата и отображаемое имя отправителя) в полезных данных push-уведомлений требует применения некоторых обходных путей.
Хранилище данных для ключей шифрования
Создайте постоянное хранилище данных на устройствах iOS. Это хранилище данных должно обеспечивать обмен данными между главным приложением и его расширениями.
В примере кода для этого руководства выберите App Groups
хранилище данных следующим образом:
Добавьте возможность групп приложений в целевые объекты вашего приложения (основное приложение и расширения приложений), выполнив действия, описанные в статье Apple «Добавление возможностей в приложение».
Настройте группы приложений, выполнив действия, описанные в статье "Настройка групп приложений Apple". Убедитесь, что основное приложение и расширения приложения имеют одинаковое имя контейнера.
Расширение службы уведомлений
Реализуйте расширение службы уведомлений, пакетированное с основным приложением. Это расширение приложения расшифровывает полезную нагрузку push-уведомлений, когда устройство его получает.
Ознакомьтесь с разделом "Добавление расширения приложения службы" в проект в документации Apple и выполните действия.
См. сведения о реализации методов обработчика расширения в документации Apple.
Apple предоставляет код по умолчанию для расшифровки данных, и вы можете следовать общей структуре этого руководства. Однако, поскольку вы используете SDK для чата для расшифровки, необходимо заменить часть, которая начинается с // Try to decode the encrypted message data
, настраиваемой логикой.
Сведения о связанной реализации см. в NotificationService.swift
службе уведомлений GitHub Azure Samples для Swift.
Реализация протокола PushNotificationKeyStorage
Протокол PushNotificationKeyStorage
необходим для расширенной версии push-уведомлений. Вы можете использовать класс по умолчанию AppGroupPushNotificationKeyStorage
, который предоставляет пакет SDK чата. Если вы не используете группы приложений в качестве хранилища ключей или хотите настроить методы хранения ключей, создайте собственный класс, соответствующий протоколу PushNotificationKeyStorage
.
PushNotificationKeyStorage
определяет два метода:
onPersistKey(encryptionKey:expiryTime)
: этот метод сохраняет ключ шифрования в хранилище устройства iOS пользователя. Пакет SDK чата задает 45 минут в качестве срока действия ключа шифрования. Если вы хотите, чтобы push-уведомления действовали более 45 минут, необходимо запланироватьchatClient.startPushNotifications(deviceToken:)
вызов чаще (например, каждые 15 минут), чтобы новый ключ шифрования можно было зарегистрировать до истечения срока действия старого ключа.onRetrieveKeys() -> [String]
: этот метод извлекает допустимые ключи, сохраненные ранее. Вы можете обеспечить настройку на основе выбранного ранее хранилища данных.
В расширении протокола SDK чата предоставляет реализацию метода decryptPayload(notification:) -> PushNotificationEvent
, которую можно использовать. Сведения о связанной реализации см. в NotificationService.swift
GitHub Azure Samples Сервис уведомлений для Swift.
Тестирование уведомлений
Создайте поток чата с пользователем А и пользователем B.
Скачайте репозиторий GitHub для примеров приложений.
Поместите значения
<ACCESS_TOKEN>
и<ACS_RESOURCE_ENDPOINT>
пользователя A в AppSettings.plist.Установите параметр Включить Bitcode в значение Нет для двух Pod-целей: AzureCommunicationChat и Trouter.
Подключите устройство iOS к компьютеру Mac и запустите программу. Когда вам будет предложено авторизовать push-уведомления на устройстве, нажмите кнопку "Разрешить".
Как пользователь B, отправьте сообщение чата. Убедитесь, что пользователь A получает push-уведомление на устройстве iOS.
Реализация продления регистрации
Чтобы корпорация Майкрософт предоставила безопасную службу чата, регистрация push-уведомлений на устройствах iOS остается допустимой только в течение 45 минут. Чтобы поддерживать функциональные возможности push-уведомлений, необходимо реализовать продление регистрации в клиентском приложении.
В этой статье описаны два решения, которые соответствуют официальным рекомендациям Apple. Мы рекомендуем реализовать оба решения вместе, чтобы повысить их эффективность.
Примечание.
Многие факторы могут повлиять на эффективность любого решения. Например, состояние батареи устройства, условия сети и ограничения для iOS могут повлиять на способность приложения выполнять фоновые задачи. Дополнительные сведения см. в видео «Улучшения в фоновом выполнении приложений» и в статье «Фоновое обновление вашего приложения» от Apple.
Решение 1. Фоновые задачи
Фоновые задачи предлагают способ выполнения действий, даже если приложение не на переднем плане. При реализации фоновой задачи приложение может запросить больше времени для выполнения конкретной задачи, например возобновления регистрации push-уведомлений.
В следующих разделах описано, как использовать фоновые задачи для продления регистрации.
Настройка автоматического обновления маркеров доступа пользователей
Чтобы обеспечить непрерывный доступ к службам чата, необходимо поддерживать действительные токены доступа пользователей. Токены обычно имеют время действия по умолчанию 24 часа, по истечении которого они истекают и требуют продления. Реализация механизма автоматического обновления помогает гарантировать, что маркер действителен при активации приложения чата.
Пакет SDK чата упрощает управление токенами, автоматизируя процесс их обновления при реализации пользовательского обновителя токенов доступа. Настройте приложение чата для поддержки автоматического обновления токенов, выполнив следующие действия:
Чтобы убедиться, что приложение чата поддерживает непрерывный и безопасный доступ пользователей, необходимо реализовать уровень служб, выделенный для выдачи маркеров. Одним из вариантов является использование Функции Azure для этой цели.
Чтобы создать функцию Azure, см. статью «Создание доверенной службы доступа пользователей с помощью Azure Functions». В нем описывается, как настроить функциональное приложение и развернуть код, необходимый для выпуска токенов.
После настройки функции Azure:
Получите URL-адрес издателя токена из портала Azure. Приложение чата использует этот URL-адрес для запроса новых маркеров.
Создайте и интегрируйте средство обновления токенов в ваше чат-приложение. Этот компонент запрашивает новые маркеры и инициализирует клиент чата для простого автоматического обновления маркеров.
Пример кода для средства обновления маркера и его интеграция с клиентом чата доступна в репозитории GitHub для примеров приложений.
Включение и планирование фоновых задач
Чтобы активировать и запланировать фоновые задачи в вашем приложении iOS, выполните действия, описанные в статье Apple "Использование фоновых задач для обновления вашего приложения".
Практическая реализация см. в статье GitHub Azure Samples Add Chat to your app. Предоставленный пример использует BGProcessingTask
, настроенный для запуска не ранее чем через одну минуту, демонстрируя, как эффективно получать данные в фоновом режиме.
Решение 2. Удаленное уведомление
Удаленное уведомление — это механизм запуска фоновых задач приложений iOS в ответ на внешние триггеры. Вы можете использовать удаленные уведомления для таких задач, как обновление регистраций без вмешательства пользователя.
Чтобы использовать удаленные уведомления для выполнения фоновой задачи:
Реализуйте механизм активации.
Например, в качестве механизма активации можно использовать приложение-функцию Azure. Он позволяет запускать код в ответ на различные триггеры, включая HTTP-запросы, поэтому это полезно для запуска автоматических push-уведомлений. Не забудьте реализовать реестр устройств на вашем конце, чтобы функциональное приложение знало, куда доставлять уведомления.
Настройка концентратора уведомлений.
Служба Центров уведомлений Azure предоставляет масштабируемую инфраструктуру push-уведомлений, которая может отправлять уведомления на любую платформу (iOS, Android, Windows и т. д.) из любой серверной части (облачной или локальной).
Вы можете повторно использовать тот же центр уведомлений, который используется для обычных push-уведомлений. Если вы хотите настроить новую, ознакомьтесь с документацией по Центрам уведомлений Azure.
Настройте приложение-функцию Azure для регулярных уведомлений.
Настройте приложение-функцию для периодической отправки удаленных уведомлений через центр уведомлений. Эти уведомления перенаправляются в APN и направляются на указанное устройство. Дополнительные инструкции см. в разделе "Выходные привязки Центров уведомлений" для Функции Azure.
Обработка уведомлений в приложении.
В вашем iOS приложении реализуйте метод экземпляра приложения, чтобы запустить автоматическое обновление регистрации при получении тихого уведомления.
Дополнительные сведения см. в статье Apple о настройке удаленного сервера уведомлений.