Блестящее уведомление о том, что полученное сообщение не вызывается на iOS

#xamarin.forms #xamarin.forms.shiny

Вопрос:

Мы использовали блестящую платформу для локальных уведомлений, и она сделала то, что нам было нужно, а именно сделала так, чтобы на iOS и Android появлялось уведомление, которое при нажатии откроет приложение.

Однако метод onReceived в INotificationDelegate никогда не вызывается в iOS. Это было в случае с IIRC, но не вызывало особого беспокойства, так как нам не нужно было ничего делать с полученным, кроме как отслеживать его в AppCenter. Поэтому его исправление никогда не было приоритетным.

В последнее время мы рассматриваем возможность использования Push-уведомлений. Мы не используем push от Shiny и вместо этого регистрируем устройство, используя наш собственный серверный веб-интерфейс.

Я вижу проблему, из-за которой наше переопределение AppDelegate ReceivedRemoteNotification не вызывается, если я вызываю UseNotifications расширение в нашем ShinyStartup ConfigureServices . Мы хотим продолжать использовать Shiny для локальных уведомлений, так что это проблема.

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

Ответ №1:

Вы используете ReceivedRemoteNotification, который предназначен для «старого» способа получения удаленных уведомлений на переднем плане. Блестящий.Уведомления используют UNUserNotificationCenterDelegate, который, как я полагаю, перехватывает и останавливает этот метод. Вы можете реализовать делегат Shiny notification для работы с уведомлением или использовать Shiny.Push.Азуринотификация.

Вы также можете использовать: didReceiveRemoteNotification(приложение UIApplication, NSDictionary userInfo, Action completionHandler), который в любом случае является лучшим методом обработки удаленных уведомлений, поскольку он необходим для фоновой обработки

Комментарии:

1. Я включил INotificationDelegate, так как мы уже использовали его для LocalNotifcations, однако у нас была давняя проблема с тем, что onReceived никогда не вызывался на iOS только на Android. OnEntry работает, как и ожидалось, на обеих платформах

2. Пробовали ли вы какие-либо другие предложения, которые я сделал, например, вместо этого использовать didReceiveRemoteNotification? Ты на самом деле не помогаешь мне помочь тебе здесь. Пожалуйста, предоставьте какой-нибудь воспроизводимый образец на github. Обратите внимание, что в блестящих образцах используются как уведомления, так и механика нажатия, и оба работают нормально.

3. Извините, я команда из 1 человека, и вчера меня утащили на что-то другое. Я реализовал didReceiveRemoteNotification в нашем AppDelegate, и он тоже не вызывался. tbh Я склоняюсь к использованию Shiny как для Push, так и для локальных. Кажется глупым использовать собственную реализацию локального кода только для того, чтобы я мог зарегистрировать устройство в WebAPI. Я постараюсь собрать образец вместе в понедельник