Push-уведомления Appcenter, не полученные Xamarin Forms на платформе iOS

Я реализовал push-уведомления с помощью AppCenter в ASP.Net Core Web API. Сервер отправляет HTTP-запросы в AppCenter, который отвечает за отправку уведомлений на каждую платформу Android и iOS.

Мобильные приложения разрабатываются с помощью Xamarin Forms. Я следовал документации Microsoft здесь

Приложение Xamarin для Android получает каждое push-уведомление как шарм.

Проблема связана с приложением Xamarin iOS. Устройства не получают никаких push-уведомлений.

Вот настройки iOS, которые я сделал:

  • Включены push-уведомления в правах для производства (не для разработки).
  • Создал ключ APN для push-уведомлений в моей учетной записи разработчика Apple для производства
  • Предоставлен ключ iOS APN для настроек AppCenter (с идентификатором приложения, префиксом...)
  • Включены удаленные уведомления в фоновом режиме в info.plist
  • Отключил swizzling, добавив ключ AppCenterAppDelegateForwarderEnabled в info.plist.
  • Переопределен DidReceiveRemoteNotification в AppDelegate и реализованы методы RegisteredForRemoteNotifications, FailedToRegisterForRemoteNotifications

Затем я успешно опубликовал приложение в TestFligth в рабочем режиме.

При запуске приложения я получаю InstallId устройства appcenter, вызывая метод AppCenter.GetInstallIdAsync().

Наконец, когда отправляется push-уведомление, ничего не происходит. И у меня нет логов для поиска проблемы.

Есть ли что-то, что я пропустил, чтобы заставить его работать?

Вы пытались отправить Push из консоли App Center вместо вашего бэкэнда с полученным идентификатором установки?

Nirmal Subedi 12.05.2019 01:56

Да, я пробовал все зарегистрированные устройства iOS, но все равно ничего не получил

Ricavir 12.05.2019 21:21

Вы тестируете на реальном устройстве? Проверьте шаги здесь.

nevermore 13.05.2019 05:12

Да, я тестирую реальное устройство через TestFligth. Ссылка, которую вы упомянули, дает шаги при использовании непосредственно APNS, но в моем случае я использую AppCenter, который выполняет все необходимые шаги для регистрации для push-уведомлений... Кроме того, мы запустили приложение iOS, у меня есть всплывающее окно с предупреждением, которое запрашивает чтобы разрешить моему приложению показывать уведомления. Это означает, что AppCenter выполняет свою работу...

Ricavir 14.05.2019 07:53

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

nevermore 15.05.2019 11:04

Да, я в производственном случае (сертификат, права и профиль обеспечения)...

Ricavir 17.05.2019 19:41

Хорошо, я заметил на портале AppCenter, что AppSecret не одинаков для каждой платформы. Это может быть причиной того, что он не работает на iOS. В документах об этом не сказано...

Ricavir 20.05.2019 08:40
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
805
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

AppCenter предоставляет разные AppSecret для каждой платформы. Ты должен сделать :

        if (Xamarin.Forms.Device.RuntimePlatform == Xamarin.Forms.Device.iOS)
        {
            //Start AppCenter Push notification with iOS app secret
            AppCenter.Start("xxxxxxxxxxxxxxxxxxxxxxx", typeof(Push));
        }
        else if (Xamarin.Forms.Device.RuntimePlatform == Xamarin.Forms.Device.UWP)
        {
            //Start AppCenter Push notification with UWP app secret
            AppCenter.Start("xxxxxxxxxxxxxxxxxxxxxxx", typeof(Push));
        }
        else if (Xamarin.Forms.Device.RuntimePlatform == Xamarin.Forms.Device.Android)
        {
            //Start AppCenter Push notification with Android app secret
            AppCenter.Start("xxxxxxxxxxxxxxxxxxxxxxx", typeof(Push));
        }

Другие вопросы по теме