Как создавать локальные уведомления с локального веб-сервера с помощью фоновых режимов - PullRequest
0 голосов
/ 04 октября 2019

Я разрабатываю приложение, которое связывается с локальным веб-сервером и получает данные от него (через WebSockets или HTTP) без использования интернет-соединения.

Поэтому мне нужно найти способ получения push-уведомлений с сервера без использования службы Apple Push-уведомлений, даже если iPhone находится в режиме ожидания, поэтому уведомления отображаются на Apple Watch. Например, моя идея состоит в том, чтобы отправить данные с сервера клиенту iPhone, а затем создать уведомление локально. Для этого мне нужно запустить приложение в фоновом режиме, но режимы, которые я нашел, не могут мне помочь.

- Запустите произвольный фрагмент кода: я могу запустить приложение в течение максимум 3 минут в фоновом режиме посленапример, нажав Home. Мне нужно, чтобы приложение выполнялось в фоновом режиме "навсегда", если это возможно, чтобы получать данные с сервера и обрабатывать их.

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

Я читал о Silent Push-уведомлениях, VOIP (PushKit), но я не понял, нужны ли вам APN для их работы.

Также эта статья описывает Silent Push-уведомления? https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app#see-also

Если да, то я не могу использовать Silent Push-уведомления более 2/3 раз в час, плюс это считается низким приоритетом, ненадежным ...

Здесь говорится, чтоиз iOS13 я больше не могу использовать режим VOIP для не VOIP-приложений: Могу ли я использовать PushKit, чтобы выполнять обычные push-сообщения без использования VoIP? Позволит ли оно запускать убитое приложение в фоновом режиме, если пользователь не действует по уведомлению?

Существуют ли способы обойти APN, если вы не можете получить доступ к Интернету, и запустить приложение в фоновом режиме? на событие?

Спасибо:)

1 Ответ

0 голосов
/ 04 октября 2019

Все PushNotifications (включая тихие) доставляются через APN, без исключения. Им нужно подключение к интернету, чтобы работать. Все они считаются «Лучшими усилиями» и не дают никаких гарантий. Если клиент не подключен к сети, для каждого приложения будет кэшировано 1 уведомление, и будет предпринята попытка его доставки при следующем подключении пользователя. Если другое уведомление поступает в APN во время его кэширования, первое будет удалено и никогда не будет отправлено пользователю.

Те, которые вы создаете локально, называются LocalNotifications и, очевидно, не требуют подключения к Интернету.

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

Невозможно поддерживать приложение в фоновом режиме вечно. Запуск сетевого кода в фоновом режиме чрезвычайно разряжает батарею и по этой причине блокируется. Режимы, на которые вы ссылаетесь, также являются единственным способом (без джейлбрейка) сделать это. Единственный вариант запуска кода в фоновом режиме - использовать фоновое обновление приложения, запрашивая 30 секунд времени для каждого X (где X определяется системой, может быть минутами, часами, днями ... в зависимости от использования пользователей. вашего приложения и других). Фоновое обновление приложения также можно отключить для каждого приложения в настройках iOS.

Я не уверен, каков ваш вариант использования, но описанная вами функциональность невозможна. Я не знаю, если вместо этого использовать шлюз SMS для отправки текстовых сообщений, так как они будут иметь более высокий SLA и не будут требовать подключения к Интернету. Но в отличие от APN, это не бесплатно.

...