У меня есть ViewModel
, который прослушивает push-уведомления и устанавливает bool в true, когда он его получает.Когда значение bool равно true, значок в соответствующем представлении становится красным.
Когда приложение находится на переднем плане и получает толчок, оно работает, как и ожидалось.Однако, когда приложение находится в фоновом режиме и открывается через уведомление, цвета значков не меняются.
Здесь код:
Disposables
.Add(pushService
.NewMessage
.SubscribeOn(_schedulerProvider.Background)
.ObserveOn(_schedulerProvider.Foreground)
.Subscribe(_ => HasNewMessages = true, LogError));
В попытке понять, что происходитЯ сделал:
Disposables
.Add(pushService
.NewMessage
.SubscribeOn(_schedulerProvider.Background)
.ObserveOn(_schedulerProvider.Foreground)
.Subscribe(async _ =>
{
await _navigationService.DisplayAlert("push", "push", "ok");
HasNewMessages = true;
}, LogError));
Теперь, когда приложение работает в фоновом режиме и открывается через уведомление, появляется предупреждение, а значок становится красным.
ОБНОВЛЕНИЕ
Я подумал, что, возможно, по причинам, которые я не мог понять, когда приложение было открыто из уведомления, наблюдение за событием не происходило в потоке пользовательского интерфейса, поэтому я попробовал следующее, но, конечно, это не было проблемой.
Disposables
.Add(pushService
.NewMessage
.SubscribeOn(_schedulerProvider.Background)
.Subscribe(_ => Device.BeginInvokeOnMainThread(() => HasNewMessages = true), LogError));
Также обратите внимание, что после того, как приложение было открыто с помощью уведомления, оно больше не «реагирует» на уведомление, когда находится на переднем плане.