Поделиться через


Руководство. Отправка push-уведомлений в приложения Xamarin.iOS с помощью Центров уведомлений Azure

Обзор

В этом учебнике показано, как использовать Центры уведомлений Azure для отправки push-уведомлений в приложение на платформе iOS. Вы создадите пустое приложение Xamarin.iOS, получающее push-уведомления с помощью Службы push-уведомлений Apple (APNs).

По завершении вы сможете рассылать push-уведомления на все устройства, где запущено ваше приложение, с помощью центра уведомлений. Готовый код доступен в примере приложения NotificationHubs.

В рамках этого руководства создается или обновляется код для выполнения следующих задач:

  • Создание файла запроса на подпись сертификата
  • Регистрация приложения для работы с push-уведомлениями
  • Создание профиля подготовки для приложения
  • настройка push-уведомлений iOS в центре уведомлений;
  • Отправка тестовых push-уведомлений

Необходимые компоненты

  • Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

  • последняя версия Xcode;

  • устройство под управлением iOS 10 (или более поздней версии);

  • программе для разработчиков на платформе Apple .

  • Visual Studio для Mac

    Примечание.

    Из-за требований к конфигурации push-уведомлений для устройств iOS развертывание и тестирование примера приложения необходимо выполнять на физическом устройстве iOS (iPhone или iPad), а не в симуляторе.

Изучение этого руководства важно для понимания всех других руководств, посвященных Центрам уведомлений для приложений Xamarin.iOS.

Создание файла запроса на подписывание сертификата

Служба push-уведомлений Apple (APNs) использует сертификаты для аутентификации push-уведомлений. Следуйте приведенным указаниям, чтобы создать сертификата push-уведомлений, необходимый для отправки и получения уведомлений. Дополнительные сведения об этих понятиях см. в официальной документации по Службе push-уведомлений Apple.

Создайте файл запроса на подписывание сертификата (CSR), используемый Apple для создания подписанного сертификата push-уведомлений.

  1. На компьютере Mac запустите средство Keychain Access. Его можно запустить из папки Служебные программы или Другое на панели запуска.

  2. Нажмите Связка ключей, разверните Помощник по сертификатам, а затем выберите Запросить сертификат в центре сертификации.

    Use Keychain Access to request a new certificate

    Примечание.

    По умолчанию при осуществлении доступа к цепочке ключей выбирается первый элемент списка. Это может вызвать проблемы, если у вас открыта категория сертификатов и центр сертификации Apple Worldwide Developer Relations не указан в списке первым. Прежде чем создавать CSR (запрос на подписывание сертификата), убедитесь, что выбран элемент, не являющийся ключом, или ключ центра сертификации Apple Worldwide Developer Relations.

  3. Заполните поля Адрес электронной почты пользователя и Личное имя, выберите Сохранено на диск, а затем — Продолжить. Оставьте поле Адрес электронной почты ЦС пустым, так как оно является необязательным.

    Required certificate information

  4. Задайте имя CSR-файлу в поле Сохранить как, выберите расположение в поле Где и нажмите кнопку Сохранить.

    Choose a file name for the certificate

    Это действие сохраняет CSR-файл в выбранном месте. Расположением по умолчанию является рабочий стол. Запомните расположение, выбранное для файла.

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

Регистрация приложения для работы с push-уведомлениями

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

  1. Если вы еще не зарегистрировали свое приложение, перейдите на портал подготовки iOS в центре разработчиков Apple. Войдите на портал с помощью идентификатора Apple ID и выберите Identifiers (Идентификаторы). Затем выберите +, чтобы зарегистрировать новое приложение.

    iOS Provisioning Portal App IDs page

  2. На экране Register a New Identifier (Зарегистрировать новый идентификатор) выберите переключатель App IDs (Идентификаторы приложений). Затем выберите Continue (Продолжить).

    iOS Provisioning Portal register new ID page

  3. Обновите следующие три значения для нового приложения и нажмите кнопку Continue (Продолжить).

    • Описание. Введите описательное имя приложения.

    • Идентификатор пакета. Введите идентификатор пакета идентификатора формы Идентификатор организации.Имя продукта, как упоминание в руководстве по распространению приложений. Значения Organization Identifier (Идентификатор организации) и Product Name (Имя продукта) должны соответствовать идентификатору организации и имени продукта, указанным при создании проекта Xcode. На следующем снимке экрана значение NotificationHubs используется как идентификатор организации, а значение GetStarted — как название продукта. Убедитесь, что значение Bundle Identifier (Идентификатор пакета) совпадает со значением из проекта Xcode, чтобы в Xcode использовался правильный профиль публикации.

      iOS Provisioning Portal register app ID page

    • Push-уведомления. Проверьте параметр push-уведомлений в разделе "Возможности ".

      Form to register a new App ID

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

      Confirm new App ID

      После выбора Register (Зарегистрировать) вы увидите новый идентификатор приложения в виде элемента строки на странице Certificates, Identifiers & Profiles (Сертификаты, идентификаторы и профили).

  4. На странице Certificates, Identifiers & Profiles (Сертификаты, идентификаторы и профили) в разделе Identifiers (Идентификаторы) перейдите к только что созданному элементу строки идентификатора приложения и выберите соответствующую строку, чтобы отобразить окно Edit your App ID Configuration (Изменить конфигурацию идентификатора приложения).

Создание сертификата для Центров уведомлений

Сертификат нужен для того, чтобы центр уведомлений мог работать с APNs. Создать его можно двумя способами:

  1. Создайте сертификат .p12, который можно отправить прямо в концентратор уведомлений.
  2. Создайте сертификат .p8, который можно использовать для проверки подлинности на основе токена (новый подход).

Новый подход имеет ряд преимуществ по сравнению с подходом на основе сертификатов (см. сведения о проверке подлинности на основе токена (HTTP/2) для APNs). В этой статье приводятся инструкции, применимые в рамках обоих подходов.

ВАРИАНТ 1. Создание push-сертификата P12, который можно отправить непосредственно в Центр уведомлений

  1. Прокрутите вниз до отмеченной опции Push Notifications (Push-уведомления), а затем выберите Configure (Настроить), чтобы создать сертификат.

    Edit App ID page

  2. Откроется окно Apple Push Notification service SSL Certificates (SSL-сертификаты службы push-уведомлений Apple). Нажмите кнопку Create Certificate (Создать сертификат) в разделе Development SSL Certificate (SSL-сертификат разработки).

    Create certificate for App ID button

    Появится экран Create a new Certificate (Создать новый сертификат).

    Примечание.

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

  3. Нажмите Choose File (Выбрать файл), перейдите к папке, в которой сохранен CSR-файл, созданный в первом задании, и дважды щелкните по имени сертификата, чтобы загрузить его. Затем выберите Continue (Продолжить).

  4. После того как сертификат будет создан на портале, нажмите кнопку Download (Скачать). Сохраните сертификат и запомните расположение, в котором он сохранен.

    Generated certificate download page

    При этом сертификат будет скачан и сохранен на вашем компьютере в папке Загрузки.

    Locate certificate file in the Downloads folder

    Примечание.

    Скачанному сертификату разработки по умолчанию задано имя aps_development.cer.

  5. Дважды щелкните скачанный сертификат push-уведомлений aps_development.cer. При этом новый сертификат устанавливается в Keychain, как на следующем изображении.

    Keychain access certificates list showing new certificate

    Примечание.

    Имя вашего сертификата может отличаться, но оно будет начинаться с префикса Apple Development iOS Push Services.

  6. В программе Keychain Access щелкните правой кнопкой мыши новый сертификат push-уведомлений, созданный в категории Certificates (Сертификаты). Щелкните Export (Экспорт), укажите имя файла, выберите формат P12 и нажмите кнопку Save (Сохранить).

    Export certificate as p12 format

    Вы можете выбрать защиту сертификата с помощью пароля, но это необязательно. Нажмите кнопку ОК, если хотите обойти создание пароля. Запишите имя файла и расположение экспортируемого сертификата в формате P12. Они нужны для аутентификации с помощью APNs.

    Примечание.

    Имя файла в формате P12 и его расположение могут отличаться от изображенных в этом учебнике.

ВАРИАНТ 2. Создание P8-сертификата, который можно использовать для проверки подлинности на основе токенов

  1. Запишите следующие значения:

    • значение App ID Prefix (Префикс идентификатора приложения) — это Team ID (Идентификатор команды);
    • идентификатор пакета;
  2. Вернитесь на страницу Certificates, Identifiers & Profiles (Сертификаты, идентификаторы и профили), щелкните Keys (Ключи).

    Примечание.

    Если вы уже настроили ключ для APNs, можете повторно использовать сертификат .p8, который вы скачали после его создания. В таком случае можно пропустить шаги 35.

  3. Чтобы создать ключ, нажмите кнопку + (кнопка Create a key (Создать ключ)).

  4. Укажите подходящее значение в поле Key Name (Имя ключа), установите флажок Apple Push Notifications service (APNs) (Служба push-уведомлений Apple (APNs)), щелкните Continue (Продолжить) и на следующем экране нажмите кнопку Register (Зарегистрировать).

  5. Щелкните Download (Скачать), переместите файл с расширением .p8 (с префиксом AuthKey_) в защищенный локальный каталог и нажмите кнопку Готово.

    Примечание.

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

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

  7. Запишите значение Key ID (Идентификатор ключа).

  8. Откройте файл сертификата с расширением .p8 в подходящем приложении, например Visual Studio Code, и запишите значение ключа. Это значение находится между строками -----BEGIN PRIVATE KEY----- и -----END PRIVATE KEY-----.

    -----BEGIN PRIVATE KEY-----
    <key_value>
    -----END PRIVATE KEY-----
    

    Примечание.

    Это значение токена, которое понадобится позже для настройки концентратора уведомлений.

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

  • идентификатор команды (см. шаг 1);
  • идентификатор пакета (см. шаг 1);
  • идентификатор ключа (см. шаг 7);
  • значение токена, то есть значение ключа из файла с расширением .p8 (см. шаг 8).

Создание профиля подготовки для приложения

  1. Вернитесь на портал подготовки iOS, выберите Certificates, Identifiers & Profiles (Сертификаты, идентификаторы и профили), нажмите Profiles (Профили) в меню слева, а затем выберите +, чтобы создать новый профиль. Откроется окно Register a New Provisioning Profile (Зарегистрировать новый профиль подготовки).

  2. Выберите iOS App Development (Разработка приложений для iOS) в разделе Development (Разработка) в качестве типа профиля подготовки и нажмите кнопку Continue (Продолжить).

    Provisioning profile list

  3. Затем в раскрывающемся списке App ID (Идентификатор приложения) выберите созданный идентификатор приложения и нажмите кнопку Continue (Продолжить).

    Select the App ID

  4. В окне Select certificates (Выбор сертификатов) выберите сертификат для разработки, используемый для подписывания кода, и нажмите кнопку Continue (Продолжить). Это не созданный сертификат push-уведомлений. Если он не существует, создайте его. Если сертификат существует, перейдите к следующему шагу. Выполните приведенные ниже действия, чтобы создать сертификат разработки, если он не существует.

    1. Если вы видите No Certificates are available (Нет доступных сертификатов), выберите Create Certificate (Создать сертификат).
    2. В разделе Software (Программное обеспечение) выберите Apple Development (Разработка Apple). Затем выберите Continue (Продолжить).
    3. Перейдите к экрану Create a new Certificate (Создать новый сертификат) и нажмите Choose File (Выбрать файл).
    4. Перейдите к сертификату Certificate Signing Request (Запрос на подпись сертификата), который вы создали ранее, выберите его, а затем нажмите Open (Открыть).
    5. Выберите Продолжить.
    6. Скачайте сертификат разработки и запомните расположение, в котором он сохранен.
  5. Вернитесь на страницу Certificates, Identifiers & Profiles (Сертификаты, идентификаторы и профили), нажмите Profiles (Профили) в меню слева, а затем +, чтобы создать новый профиль. Откроется окно Register a New Provisioning Profile (Зарегистрировать новый профиль подготовки).

  6. В окне Select certificates (Выбор сертификатов) выберите сертификат разработки, который вы только что создали. Затем выберите Continue (Продолжить).

  7. Затем выберите устройства для тестирования и нажмите кнопку Continue (Продолжить).

  8. Наконец, выберите имя профиля в поле Provisioning Profile Name (Имя профиля подготовки) и нажмите кнопку Generate (Создать).

    Choose a provisioning profile name

  9. После создания нового профиля подготовки выберите Download (Скачать). Запомните расположение, в котором он сохранен.

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

Создание центра уведомлений

В этом разделе показано, как создать концентратор уведомлений и настроить проверку подлинности с помощью APNs, используя ранее созданный сертификат push-уведомлений (файл .p12) или проверку подлинности на основе токена. Если вы хотите использовать уже созданный центр уведомлений, перейдите к шагу 5.

  1. Войдите на портал Azure.

  2. В меню слева выберите Все службы. A screenshot showing select All Services for an existing namespace.

  3. Введите центры уведомлений в текстовом поле " Службы фильтрации". Щелкните значок звездочки рядом с именем службы, чтобы добавить ее в раздел Избранное в меню слева. Выберите Центры уведомлений.

    A screenshot showing how to filter for notification hubs.

  4. На странице Центры уведомлений выберите Добавить на панели инструментов.

    A screenshot showing how to create a new notification hub.

  5. На вкладке Основные сведения на странице Центр уведомлений выполните следующие действия:

    1. В поле Подписка выберите имя подписки Azure, которую вы хотите использовать, а затем выберите существующую группу ресурсов или создайте новую.

    2. Введите уникальное имя нового пространства имен в разделе Сведения о пространстве имен.

    3. Пространство имен содержит один или несколько концентраторов уведомлений, поэтому укажите имя концентратора в разделе Сведения о Центре уведомлений.

    4. Выберите значение в раскрывающемся списке Расположение. Это значение определяет расположение, в котором создается центр.

      Screenshot showing notification hub details.

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

    6. Выберите вариант аварийного восстановления: Нет, парный регион восстановления или гибкий регион восстановления. При выборе парного региона восстановления отображается регион отработки отказа. Если выбрать гибкий регион восстановления, используйте раскрывающийся список регионов восстановления.

      Screenshot showing availability zone details.

    7. Нажмите кнопку создания.

  6. После завершения развертывания выберите "Перейти к ресурсу".

Добавление данных об APNs в центр уведомлений

В разделе Notification Services выберите Apple (APNS), а затем выполните действия в зависимости от способа, выбранного ранее на этапе создания сертификата для Центров уведомлений.

Примечание.

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

ВАРИАНТ 1. Использование push-сертификата P12

  1. Выберите Сертификат.

  2. Щелкните значок файла.

  3. Выберите экспортированный ранее файл с расширением .p12, а затем нажмите Open (Открыть).

  4. При необходимости укажите пароль.

  5. Выберите режим Песочница.

    Configure APNs certification in Azure portal

  6. Выберите Сохранить.

ВАРИАНТ 2. Использование проверки подлинности на основе токенов

  1. Выберите Токен.

  2. Введите следующие значения, которые вы получили ранее:

    • идентификатор ключа;
    • идентификатор пакета;
    • идентификатор команды;
    • токен.
  3. Выберите Песочница.

  4. Выберите Сохранить.

Вы добавили данные об APNs в центр уведомлений. У вас также есть строки подключения для регистрации приложения и отправки push-уведомлений.

Подключение приложения к центру уведомлений

Создание нового проекта

  1. В Visual Studio создайте проект iOS и выберите шаблон Приложение одного представления, а затем нажмите кнопку Далее.

    Visual Studio - Select Application Type

  2. Введите имя приложения и идентификатор организации, затем нажмите кнопку Далее и Создать.

  3. В представлении решения дважды щелкните Info.plist и убедитесь, что идентификатор пакета соответствует указанному при создании профиля подготовки. Для этого просмотрите сведения в разделе Идентификатор. В разделе Подписи укажите учетную запись разработчика в поле Команда, установите флажок Automatically manage signing (Автоматическое управление подписями) и убедитесь, что сертификат для подписи и профиль подготовки заданы автоматически.

    Visual Studio- iOS App Config

  4. В представлении "Решение" дважды щелкните файл Entitlements.plist и убедитесь, что установлен флажок Включить push-уведомления.

    Visual Studio- iOS Entitlements Config

  5. Добавьте пакет службы сообщений Azure. В представлении решения щелкните проект правой кнопкой мыши и последовательно выберите Добавить>Add NuGet Packages (Добавить пакеты NuGet). Выполните поиск пакета Xamarin.Azure.NotificationHubs.iOS и добавьте его в проект.

  6. Добавьте новый файл в класс и присвойте ему имя Constants.cs. Добавьте указанные далее переменные и замените буквенные заполнители строк на hubname и DefaultListenSharedAccessSignature, записанные ранее.

    // Azure app-specific connection string and hub path
    public const string ListenConnectionString = "<Azure DefaultListenSharedAccess Connection String>";
    public const string NotificationHubName = "<Azure Notification Hub Name>";
    
  7. В AppDelegate.cs добавьте следующую инструкцию.

    using WindowsAzure.Messaging.NotificationHubs;
    using UserNotifications
    
  8. Создайте реализацию MSNotificationHubDelegate в AppDelegate.cs:

    public class AzureNotificationHubListener : MSNotificationHubDelegate
    {
        public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message)
        {
    
        }
    }
    
  9. В файле AppDelegate.cs обновите метод FinishedLaunching(), как в приведенном ниже коде:

    public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
    {
        // Set the Message listener
        MSNotificationHub.SetDelegate(new AzureNotificationHubListener());
    
        // Start the SDK
        MSNotificationHub.Start(ListenConnectionString, NotificationHubName);
    
        return true;
    }
    
  10. В файле AppDelegate.cs реализуйте метод DidReceivePushNotification для класса AzureNotificationHubListener:

    public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message)
    {
        // This sample assumes { aps: { alert: { title: "Hello", body: "World" } } }
        var alertTitle = message.Title ?? "Notification";
        var alertBody = message.Body;
    
        var myAlert = UIAlertController.Create(alertTitle, alertBody, UIAlertControllerStyle.Alert);
        myAlert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
        UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(myAlert, true, null);
    }
    
  11. Запустите приложение на устройстве.

Отправка тестовых push-уведомлений

Можно проверить, поступают ли в приложение уведомления, с помощью параметра Тестовая отправка на портале Azure. Этот параметр позволяет отправить на устройство тестовое push-уведомление.

Azure portal - Test Send

Push-уведомления обычно отправляются во внутренней службе, например мобильных приложениях или службе ASP.NET, с помощью совместимой библиотеки. Если для серверной части библиотека недоступна, для отправки уведомлений также можно напрямую использовать REST API.

Следующие шаги

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