Как настроить токен-аутентификацию в NotificationHub для iOS - PullRequest
0 голосов
/ 25 марта 2020

Моя цель - установить режим аутентификации токена в Azure NotificationHub без использования сертификата на iOS. Я сгенерировал токен, как он описан здесь . Затем я поместил токен, идентификатор ключа, идентификатор пакета и идентификатор команды в раздел NotificationHub Apple (APNS) (я уверен, что это работает, потому что я пытался изменить токен на другое значение, и произошла ошибка: «Ошибка обновления уведомления hub ". Это означает, что все значения были сохранены правильно.

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

Foundation.NSErrorException: Error Domain=NSURLErrorDomain Code=-1012 "(null)" 
UserInfo={NSErrorFailingURLStringKey=https://dev...NotificationHub/Registrations/?
$filter=deviceToken+eq+''&api-version=2013-04, NSUnderlyingError=0x2811b89c0 
{Error Domain=kCFErrorDomainCFNetwork Code=-1012 "(null)" 
UserInfo={_kCFURLErrorAuthFailedResponseKey=<NSHTTPURLResponse: 0x281903cc0> 
{ URL: https://dev...hubnamespace.servicebus.windows.net/dev...NotificationHub/Registrations/?
$filter=deviceToken+eq+''&api-version=2013-04 } { Status Code: 401, Headers {
    "Content-Length" =     (
        0
    );
    Date =     (
        "Wed, 25 Mar 2020 11:51:09 GMT"
    );
    Server =     (
        "Microsoft-HTTPAPI/2.0"
    );
    "Strict-Transport-Security" =     (
        "max-age=2592000"
    );

Это означает, что существует проблема с аутентификацией. До этого у меня было другое решение для тестирования с другим NotificationHub. Что я делал по-другому, я создал сертификат в apple.developer.com и использовал метод проверки подлинности сертификата, а затем переключился to Token Authentication Method. В этом примере проекта тестирования все работало без проблем. В моем текущем проекте я не создавал сертификат для APNS.

У меня вопрос, нужно ли мне создавать сертификат, даже если я хочу использовать Токен? Если да, то какой смысл создавать Кен, если я должен создать сертификат тоже?

Ответы [ 2 ]

1 голос
/ 25 марта 2020

Извините за проблемы, с которыми вы сталкиваетесь.

Вы правы - если Портал позволяет вам сохранять учетные данные, значит, он настроен правильно. Notification Hub фактически выполняет аутентификацию с APNS при сохранении для проверки.

Получение ошибки аутентификации при регистрации устройства указывает на наличие проблемы аутентификации между вашим приложением iOS и самим Notification Hub. Не было соответствующего вызова из Notification Hubs SDK в сам APNS, чтобы получить этот отказ. Я бы порекомендовал дважды проверить, как вы проходите аутентификацию на своем хабе, поскольку для аутентификации и успешной регистрации необходимо указать Listen Политика доступа / Строка подключения и имя хаба.

Это графическое изображение c из документации Центра уведомлений (https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-push-notification-registration-management#registration -management-from-the-device ) показывает, что я имею в виду под этим: Registration from device

0 голосов
/ 26 марта 2020

Прежде всего, я хотел бы поблагодарить Кайла Кампершроера за помощь.

Чтобы ответить на мой вопрос - вам не нужно создавать сертификат, если вы используете аутентификацию на основе токенов.

Моя строка подключения и azure имя концентратора были правильными. Моя проблема заключалась в том, что метод RegisteredForRemoteNotifications в AppDelegate не был вызван. Тогда токен был пуст, и это вызвало проблему аутентификации в NotificationHub.

Я решил это на developer.apple.com. Я отредактировал профиль обеспечения и выбрал соответствующие сертификаты. enter image description here

Есть также одна вещь, которая, возможно, исправит это. В разделе «Идентификатор» я проверил PushNotifications и прошел настройку, не выбрав сертификат.

enter image description here

...