Уведомления Xamarin iOS Push не работают в Production, но работают нормально в Development - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть веб-API, размещенный в Azure. Веб-API имеет метод POST, и при использовании Postman для отправки сообщения со строковым телом в URL веб-API, сообщение отправляется на мобильные устройства идеально в Development . Вот код для этого:

[Authorize]
        [HttpPost, Route("send")]
        public async Task<NotificationOutcome> Post([FromBody]string message)
        {

            string hubName = "hubname";
            string hubNameDefaultShared = "endpointAddress";

            NotificationHubClient hub = NotificationHubClient
                            .CreateClientFromConnectionString(hubNameDefaultShared, hubName, enableTestSend: true);

            string installationId = string.Empty;

            var templateParams = new Dictionary<string, string>
            {
                ["messageParam"] = message
            };

            NotificationOutcome result = null;
            if (string.IsNullOrWhiteSpace(installationId))
            {
                result = await hub.SendTemplateNotificationAsync(templateParams).ConfigureAwait(false);
            }
            else
            {
                result = await hub.SendTemplateNotificationAsync(templateParams, "$InstallationId:{" + installationId + "}").ConfigureAwait(false);
            }

            return result;
        }

Когда я переключаюсь на Производство и загружаю приложение из магазина, при использовании Postman для отправки в Web API выше не получаются push-уведомления:

Шаги, которые я уже выполнил:

  1. Идентификатор приложения для мобильного приложения и расширения службы уведомлений.
  2. Включение push-уведомлений для обоих и создание сертификата SSL-уведомления для разработчиков и производственного Push-уведомления на веб-сайте Apple для разработчиков.
  3. В моей связке ключей я щелкнул правой кнопкой мыши на «Apple Push Services: MyMobileApp» (Production) и экспортировал p12.
  4. Загрузите сертификат p12 в Azure Notification Hub в APNS и установите переключатель Notification Hub из Sandbox в Production.
  5. Созданы профили обеспечения для разработки и производства как для мобильного приложения, так и для расширения службы уведомлений.
  6. Отредактировал список Entitlement.p как для мобильного приложения, так и для службы расширений уведомлений и установил для "aps-environment" значение "production"
  7. В info.plist выбраны производственный сертификат и подготовка производства для каждого.
  8. Создан файл ipa и загружен в магазин.

Что мне нужно сделать с веб-API, чтобы настроить его на работу с концентратором уведомлений? Это все шаги по настройке Notification Hub на работу с сертификатом p12 или я что-то пропустил?

1 Ответ

0 голосов
/ 03 ноября 2018

Думаю, я понял это. Проблема в том, что я использовал свой телефон для тестирования в режиме разработки. Мой телефон зарегистрирован с токеном устройства разработки. При загрузке приложения из магазина в производственном режиме этот токен больше не действителен, и мой телефон не получает уведомление. Каким-то образом мое устройство оставалось связанным с маркером разработки даже после удаления приложения, установленного вместе с Visual Studio, и загрузки приложения из магазина.

Я нашел это по ссылке на веб-сайт документации Azure:

https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-push-notification-faq

"Если ваш концентратор был изначально настроен с сертификатом изолированной программной среды Apple, а затем был переконфигурирован для использования производственного сертификата Apple, исходные токены устройства являются недопустимыми. Недопустимые токены приводят к сбоям push-уведомлений. Разделите производственную и тестовую среды, и использовать разные концентраторы для разных сред. "

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

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