1.8.3 — Кнопка «обновить» из виджета

В версии 1.8.3 добавлена кнопка «обновить» для виджета «Состояние счетов». Операционная система имеет ряд ограничений, поэтому важно понимать как происходит обновление данных.

В iOS виджет — это отдельное приложение, которое может обмениваться информацией с основным приложением только через файлы, т.е. чтобы заставить виджет не только отображать информацию, но и сделать что-либо полезное можно пойти двумя путями:
1. Добавить весь полезный функционал в виджет. Так работает «Баланс+», всё делает виджет, а основное приложение просто сохраняет настройки в файл.
2. Обмениваться данными через интернет использую ipn. Таким образом виджет остаётся маленьким, не ест лишние ресурсы. Так как основное приложение «Байбаланс» достаточно большое, то данный вариант является предпочтительным.

По нажатию «обновить» виджет делает запрос в интернет на получение ipn сообщения от сервера Apple. Ipn сообщение приходит на телефон и поступает на обработку в основное приложение «Байбаланс», и собственно проиcходит считывание свежих данных. Эта схема такая же, как проверка по расписанию, когда пользователь задаёт хотя бы один аккаунт проверять например каждые 2 часа, то ему будут посылаться такие же ipn сообщения.

В итоге у подобной схемы работы возможны следующие недостатки:
— Кнопка «обновить» может вообще ничего не делать, например нет интернета, сервера apple слишком заняты и прочие неполадки косвенно связанные с вашим интернет каналом. Просто нажмите «обновить» немного позже ещё разок.
— Кнопка «обновить» может всё таки отправить запрос, но никаких видимых изменений может не происходить, на самом деле данные обновляются, просто ipn сообщение придёт с задержкой, например 30 секунд, когда пользователь уже устал ждать и закрыл экран. Если вы откроете экран с виджетом через пару минут, скорее всего данные уже будут обновлены.
— «Крутилка» показывающая о состоянии процесса обновления может остановиться раньше, чем проверятся все ваши аккаунты, добавленные в виджет. На самом деле все аккаунты проверятся, просто «прогресс» обновления невозможно гарантированно контролировать (см. оговорку о передаче данных между основным приложением и виджетом через файлы).
— Если у вас в виджете добавлено много аккаунтов или очень нестабильное интернет соединение, то не все аккаунты будут реально обновлены. Время на работу в фоне при обработке ipn сообщения ограничено, операционная система отключит приложение по превышению лимита времени.

Напоминаю важные замечания по обновлению данных в фоне для «Байбаланса» в частности, и для любого другого приложения iOS в общем:
— Нужно разрешить для приложения push-напоминания (push notifications) на устройстве. Запрос будет дан при первом запуске приложения, или позже это можно разрешить/запретить в настройках iOS.
— Устройство должно иметь постоянный доступ к сети интернет, через сотовую сеть или wifi. Также может быть включено/выключено в настройках iOS.
— Вам следует периодически пользоваться телефоном, любыми приложениями, если телефон просто лежит постоянно на столе вероятность получить push-напоминание и проверить баланс близка к нулю.
— Периодически следует запускать приложение вручную. Хоть «Байбаланс» и просит iOS разрешение работать в фоне, но он всё равно может быть остановлен и выгружен из памяти когда вы загрузите какие-нибудь другие приложения или запустите например «тяжелую» игру. Push-напоминания (ipn сообщения) не могут загружать приложение в память, они могут его только «будить» на короткий промежуток времени. Если напоминание пришло, а приложение уже выгружено — никакого обновления не будет, push будет просто проигнорирован операционной системой. Только пользователь (человек) может загрузить приложение (есть исключения, но для обычных программ сторонних разработчиков они недоступны).

3 комментария на “1.8.3 — Кнопка «обновить» из виджета

    1. bybalance Автор записи

      Попробуйте удалить приложение и установить его с нуля. Я уже получил 2 жалобы, но ошибку пока не нашёл.

Оставьте комментарий