Вызовите Xamarin.Формирует службу зависимостей при закрытом приложении

#android #ios #xamarin #xamarin.forms #xamarin.android

#Android #iOS #xamarin #xamarin.forms #xamarin.android

Вопрос:

Я разработал приложение с использованием Xamarin Forms и пытаюсь обновлять уведомления для каждой платформы на основе некоторых обновленных данных.

Для Android процесс выглядит следующим образом (единственное отличие для iOS заключается в том, что он использует фоновую выборку):

  • Уведомление приходит один раз в день.
  • Это запускает вызов внешнего API для получения некоторого обновленного содержимого.
  • Затем существующие уведомления обновляются с использованием информации, полученной от вызова API. Это делается с помощью службы зависимостей из Xamarin Forms.

Это отлично работает, если приложение открыто или работает в фоновом режиме. Однако, если приложение закрыто, вызов обновления существующих уведомлений завершается неудачей. Это происходит потому, что Xamarin Forms не был инициализирован при закрытии приложения, поэтому служба зависимостей не может быть использована, что приводит к тому, что уведомления не обновляются.

Я хочу использовать службу зависимостей, потому что мое приложение использует Xamarin Forms, и я хотел бы поделиться как можно большим количеством кода между различными платформами. Кто-нибудь знает способ обойти это, все еще используя Xamarin Forms?

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

1. возможно, вы могли бы создать службу (фоновую резидентную службу) на разных платформах с помощью DependencyService, а затем получать обновленное содержимое в службе и уведомления о вызовах на разных платформах

Ответ №1:

Итак, похоже, что нет способа вызвать службу зависимостей Xamarin Form, когда приложение закрыто. Тем не менее, я смог придумать другое решение моей проблемы.

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

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