Как включить или отключить автоматическое обновление приложений на iPhone и iPad. Как отключить автоматическое обновление приложений на Андроиде — самый простой способ Что означает обновление контента на айфоне

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

Элементы в исходном коде

- доступ к сетевым ресурсам
- обработка xml
- доступ к файловой системе
- работа с потоками

Требования к приложению

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

Дизайн кода

Для управления всем процессом мы создадим класс UpdateManager, который будет управлять объектами «Updaters». На данный момент нам надо два «Updater"а»: один для чтения списка файлов и второй для работы с файлами. Для них определим единый фасад, что позволит расширять систему в будущем. Этот фасад будет иметь как минимум один метод - start - который будет вызваться UpdateManager"ом для каждого Updater"а по-очереди.

Мы заранее знаем, что будем использовать асинхронное соединение для доступа к сети. Это вынуждает нас явно продолжать работу UpdateManager"а после завершения работы каждого Updater"а.
Объявим два протокола:

@protocol UpdaterProtocol -(void)startUpdate:(id) manager;
end

UpdateManagerProtocol объявляет один метод, который вызывается каждым Updater"ом по завершению работы.

Наши классы выглядит так:

Все Updater"ы работают одинаково:

XMLListUpdater выполняет шаги:
1. Читает xml файл с сервера в буфер
2. Разбирает xml
3. Добавляет каждый файл в очередь

FileUpdater выполняет шаги:
1. Получает следующий файл из очереди
2. Проверяет, если файл уже существует на диске
3. Скачивает файл
4. Повторяет процесс, если очередь не пуста

Исходный код

Для начала напишем код, без упоминания потоков.

UpdateManager.h объявляет один статический метод для старта всего процесса. В конструкторе (init) инстанса происходит создание всех Updater"ов, добавление их в очередь и вызов одного за другим.

Так как каждый Updater читает данные с сети, то общий код можно вынести в отдельный класс - NetworkClient. Он имплементирует UpdaterProtocol вместе с методом для запуска асинхронного соединения (startNetworkCall).

Первый Updater - XMLFileUpdater. При старте, он читает xml в память с заранее известного адреса. По завершению, XMLListUpdater создает xml парсер для обработки данных. Каждый файл из списка добавляется в очередь для обработки следующим Updater"ом.

Второй шаг обновления контента FilesUpdater - он должен прочитать очередь и скачать каждый отсутствующий файл.

Теперь мы можем стартовать процесс UpdateManager, при загрузке главного view - и приложение синхронизирует контент.

View содержит только одну кнопку, без каких либо действий. При обновлении контента интерфейс будет блокироваться и нажатие на кнопку это выявит. Позже мы избавимся от блокировки добавив новый поток.

Добавление отдельного потока

Так как у нас уже есть весь код работы с данными, то нам остается запустить отдельный поток и в нем выполнить обновление.
Добавим новый метод в UpdateManager - startInThread. С простыми шагами:
1. Создать NSAutoReleasePool
2. Запустить процесс обновления
3. Запустить RunLoop
4. Освободить pool

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

RunLoop более интересная штука. Если закомментировать RunLoop и запустить приложение, то вы увидите сообщение о начале сетевого соединения, но остальные события - как прием данных из сети, завершение соединения - не произойдут. Проблема в раннем завершении потока - который заканчивается при выходе из метода «startInThread». Поэтому мы запускаем RunLoop для того чтобы поток оставался активным.

Теперь инициализацию UpdateManager можно передвинуть в main.m.

Замечания по исходному коду

UpdateManager.h содержит директивы компиляции - WORK_IN_SEPARATE_THREAD. Если она установлена в ноль, то новый поток не будет создаваться и UI будет блокироваться. При единице, обновление будет происходить в отдельном потоке

Исходный текст проекта.

Программисты Apple подготовили десятки новых функций, которые должны сделать использование мобильных устройств еще удобней. Одним из наиболее интересных изменений в iOS 7 стали фоновые обновления приложений. К сожалению, не все понимают, как это устроено, и надеются опробовать настоящую многозадачность в мобильной операционке Apple. К сожалению, а может к счастью, приложения по-прежнему засыпают в фоне и не остаются постоянно работающими. Зато в Купертино придумали способ предоставлять пользователям актуальный контент сразу после запуска, без ожидания обновлений.

В обязанности многозадачности теперь входит отслеживание использования приложений и составление графика обновлений. Иными словами, если каждый день просыпаться в 8 утра и первым делом читать Twitter, обновленная лента будет загружена до того, как пользователь запустит приложение.

Разумеется, фоновая загрузка тратит заряд аккумулятора чуть больше, чем если бы смартфон или планшет лежал в состоянии покоя. Но в Apple постарались минимизировать воздействие на время автономной работы — iOS делает обновления только в периоды пониженного энергопотребления. Например, когда устройство подключено к сети Wi-Fi.

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

Сейчас в App Store очень мало приложений с поддержкой фоновых обновлений. Например, у меня на iPad лишь три из тридцати установленных приложений умеют взаимодействовать с улучшенной многозадачностью iOS 7. Узнать это можно в «Обновлении контента» основного раздела настроек. Обратите внимание, что по умолчанию эта функция включена, а значит, смартфоны и планшеты потребляют чуть более энергии.

ОС Android по умолчанию имеет функцию автоматического обновления приложений. Она позволяет пользователю не думать об обновлениях программ в Play Маркете и автоматически скачивает их новые версии в фоновом режиме. В целом, автообновление во многом облегчает жизнь, но иногда от навязчивой опции лучше отказаться. Как отключить автоматическое обновление приложений на Андроиде? Читайте ниже.

Почему обновления нужно отключать

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

Во-вторых, обновления иногда бывают «шагом назад». К примеру, разработчики могут тестировать новую функцию на Android в только выпущенной версии приложения, вряд ли эта функция в большинстве случаев будет работать на 100% корректно. Поэтому с обновлениями лучше всего не спешить, так как в ручном режиме намного легче мониторить нововведения от разработчиков.

Отключение обновления всех приложений

Для того, чтобы выключить функцию автоматического обновления абсолютно всех установленных приложений на телефоне самсунг, выполните следующие действия:

  1. Откройте Play Маркет. Свайпом влево откройте меню с основными настройками Маркета и выберите меню настроек;

  1. Убедитесь, что флажок напротив пункта «Уведомления» активен. Так вы сможете оперативно получать сообщения о выходе новых обновлений. Теперь откройте «Автообновление приложений»;

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

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

Отключение автообновлений отдельного приложения

Некоторые программы (вроде карт или навигаторов) незачем оставлять без автоматической установки новых модулей. В таком случае лучше всего выборочно включить в список автоматического обновления только определенные приложения. Для этого в пункте «Автообновление приложений» установите режим «Только через Wi-Fi». Затем откройте страницу нужной программы и снимите флажок с пункта во всплывающем меню.

Если некоторые нежелательные обновления всё же были установлены, ситуацию всё еще можно исправить. Для этого придется зайти в настройки Android смартфона и перейти на вкладку «Приложения».

24 апреля 2010 в 21:22

Обновление контента IPhone приложения

  • Разработка под iOS

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

Элементы в исходном коде

- доступ к сетевым ресурсам
- обработка xml
- доступ к файловой системе
- работа с потоками

Требования к приложению

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

Дизайн кода

Для управления всем процессом мы создадим класс UpdateManager, который будет управлять объектами «Updaters». На данный момент нам надо два «Updater"а»: один для чтения списка файлов и второй для работы с файлами. Для них определим единый фасад, что позволит расширять систему в будущем. Этот фасад будет иметь как минимум один метод - start - который будет вызваться UpdateManager"ом для каждого Updater"а по-очереди.

Мы заранее знаем, что будем использовать асинхронное соединение для доступа к сети. Это вынуждает нас явно продолжать работу UpdateManager"а после завершения работы каждого Updater"а.
Объявим два протокола:

@protocol UpdaterProtocol -(void)startUpdate:(id) manager;

UpdateManagerProtocol объявляет один метод, который вызывается каждым Updater"ом по завершению работы.

Наши классы выглядит так:

Все Updater"ы работают одинаково:

XMLListUpdater выполняет шаги:
1. Читает xml файл с сервера в буфер
2. Разбирает xml
3. Добавляет каждый файл в очередь

FileUpdater выполняет шаги:
1. Получает следующий файл из очереди
2. Проверяет, если файл уже существует на диске
3. Скачивает файл
4. Повторяет процесс, если очередь не пуста

Исходный код

Для начала напишем код, без упоминания потоков.

UpdateManager.h объявляет один статический метод для старта всего процесса. В конструкторе (init) инстанса происходит создание всех Updater"ов, добавление их в очередь и вызов одного за другим.

Так как каждый Updater читает данные с сети, то общий код можно вынести в отдельный класс - NetworkClient. Он имплементирует UpdaterProtocol вместе с методом для запуска асинхронного соединения (startNetworkCall).

Первый Updater - XMLFileUpdater. При старте, он читает xml в память с заранее известного адреса. По завершению, XMLListUpdater создает xml парсер для обработки данных. Каждый файл из списка добавляется в очередь для обработки следующим Updater"ом.

Второй шаг обновления контента FilesUpdater - он должен прочитать очередь и скачать каждый отсутствующий файл.

Теперь мы можем стартовать процесс UpdateManager, при загрузке главного view - и приложение синхронизирует контент.

View содержит только одну кнопку, без каких либо действий. При обновлении контента интерфейс будет блокироваться и нажатие на кнопку это выявит. Позже мы избавимся от блокировки добавив новый поток.

Добавление отдельного потока

Так как у нас уже есть весь код работы с данными, то нам остается запустить отдельный поток и в нем выполнить обновление.
Добавим новый метод в UpdateManager - startInThread. С простыми шагами:
1. Создать NSAutoReleasePool
2. Запустить процесс обновления
3. Запустить RunLoop
4. Освободить pool

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

RunLoop более интересная штука. Если закомментировать RunLoop и запустить приложение, то вы увидите сообщение о начале сетевого соединения, но остальные события - как прием данных из сети, завершение соединения - не произойдут. Проблема в раннем завершении потока - который заканчивается при выходе из метода «startInThread». Поэтому мы запускаем RunLoop для того чтобы поток оставался активным.

Теперь инициализацию UpdateManager можно передвинуть в main.m.

Замечания по исходному коду

UpdateManager.h содержит директивы компиляции - WORK_IN_SEPARATE_THREAD. Если она установлена в ноль, то новый поток не будет создаваться и UI будет блокироваться. При единице, обновление будет происходить в отдельном потоке

Исходный текст проекта.

Функция автоматического обновления приложений впервые была представлена в iOS 7. Как только выходит новая версия какой-либо программы, система загружает и устанавливает ее, не запрашивая разрешения пользователя. С одной стороны, автоматическое обновление очень удобно, так как не нужно постоянно выполнять одну и ту же процедуру.

Вконтакте

С другой стороны, некоторым владельцам iPhone и iPad может не нравиться отсутствие чувства контроля над тем, что загружается на устройство. При желании пользователь может отключить возможность автоматического обновления. Сделать это довольно просто.

Как включить / отключить функцию автоматического обновления в iOS

1 . Откройте приложение «Настройки ».

2 . Перейдите в раздел iTunes Store и App Store .

3 . Пролистайте до подраздела «Автоматические загрузки » и в зависимости от необходимости активируйте или деактивируйте пункты «Программы » и «Обновления ».

Решение имеется и для тех, кто хочет использовать функцию автоматического обновления, но не желает расходовать мобильный трафик. Разработчики предусмотрели возможность автоматического обновления только при активном подключении к сети Wi-Fi.

Примечание: Автоматическое обновление приложений производится при подключении iPhone или iPad к зарядному устройству.

Настроить автоматическое обновление по Wi-Fi можно следующим образом: ниже в этом же разделе необходимо отключить тумблер «Сотовые данные ». Теперь при подключении смартфона к Wi-Fi приложения будут автоматически обновляться, и лишний раз думать о сохранности мобильного трафика не придется.

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

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