Xamarin iOS Приложение не может выполнить код, когда он уже свернут - PullRequest
0 голосов
/ 25 марта 2020

У меня есть приложение чата, разработанное на платформе Xamarin.Forms, в котором пользователи могут общаться друг с другом. Я управлял c# кодом и пользовательским интерфейсом в общем проекте.

Я долго сталкивался с проблемой на платформе iOS. Когда приложение iOS работает на экране и имеет режим переднего плана, оно может успешно получить сообщение, отправленное другим пользователем. Когда приложение работает в фоновом режиме и кто-то отправляет сообщение, я хочу уведомить пользователя с помощью локального уведомления (Нет Pu sh удаленное уведомление - потому что я думаю, что мое приложение уже работает в свернутом режиме, в этом нет необходимости чтобы разбудить приложение с помощью уведомления Pu sh). Даже если я успешно реализовал локальное уведомление, но проблема в том, что

Когда приложение iOS переходит в фоновый режим, основной поток (задача) приостанавливается, поэтому, когда какой-либо пользователь отправляет сообщение, Приложение не может выполнить код (когда приложение свернуто), поэтому оно не сможет отображать локальное уведомление. Но когда приложение возвращается на передний план, поток / задача возобновляется, а затем ie показывает локальное уведомление, а также сообщение.

Я уже выбрал свойство "Фоновая выборка" под режимами фона в Info.plist. Я также добавил ниже строки в моем методе FinishedLaunching

UIApplication.SharedApplication.SetMinimumBackgroundFetchInterval(UIApplication.BackgroundFetchIntervalMinimum);

Я уже работал и реализовал код из ссылок ниже, но у меня не работал.

Я думаю, что моя проблема связана с iOS Фоновая обработка. Итак, есть ли у кого-нибудь идеи, что делать, чтобы выполнить код, когда приложение уже находится в свернутом режиме?

1 Ответ

0 голосов
/ 25 марта 2020

Вообще говоря, фон * очень ограничен iOS. Если ваше приложение относится к определенной категории (например, Навигация, Musi c), вы получите расширенные возможности фонового изображения, но я не верю, что приложения чата делают. В частности, Background Fetch не совсем подходит для вашей проблемы. Он вызывается нерегулярно для извлечения содержимого для кэширования в вашем приложении, чтобы ускорить показ содержимого пользователям. Интервалы фонового извлечения могут варьироваться от 15 минут до нескольких часов (не уверен насчет последнего).

Вам нужно удаленные уведомления .

Удаленные уведомления (также известные как уведомления pu sh) позволяют отправлять sh небольшие объемы данных на устройства, на которых установлено приложение, даже когда приложение не запущено.

Удаленные уведомления передаются через привилегированную службу (Apple Pu sh Служба уведомлений - APN) на устройства Apple и доставляются своевременно (секунды, а не минуты или часы). Обычно вы хотите сохранить как можно меньше полезной нагрузки (например, просто отправьте идентификатор чата) и позволить приложению получать свои данные при получении уведомления.

Basic structure of Apple Remote notifications.

Если говорить о приложении чата, сервер чата будет отправлять удаленные уведомления в APN всякий раз, когда пользователь отправляет сообщение в чат. Приложение получит уведомление, получит дополнительные данные и затем отобразит уведомление пользователю. Если нажать на уведомление, пользователь будет перенаправлен в окно чата для соответствующего чата.

Обратите внимание , что ваше приложение должно быть зарегистрировано с APNs , в противном случае удаленные уведомления не будут работать.

...