Методы наиболее успешной практики для разработки сотовых приложений

Инженеры Apple проанализировали производительность многих сторонних приложений, включенной потоковой передачи, игр, обмена сообщениями и приложений производительности. Анализ использовал больше чем 50 метрик, включая:

Анализ, включая опыт с собственными приложениями Apple, привел к нескольким «методам наиболее успешной практики» для разработки приложений.

Данные пакета запрашивают ограничить фоновое действие

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

Фоновое действие не на основе взаимодействий с пользователем, а скорее на некотором другом желаемом образце коммуникации. Вот два примера.

Фон «Ping»

Пример на рисунке 3-1 показывает чрезмерный, низкий объем, фоновый трафик из-за текущей проверки активности сигнализируют, что выполнения, даже когда приложение в фоновом режиме, неоднократно инициирует новое соединение для передачи очень мелкой суммы данных. Несмотря на то, что этот вид проверки с помощью ping-запросов обычно является не проблемой в Ethernet и приложениях Wi-Fi, повторенные, независимые соединения, даже с мелкими суммами данных, могут создать большие суммы издержек с сотовыми соединениями.

Рисунок 3-1  представление фоновых «ping», которые должны быть устранены

В этом случае фоновые ping должны быть устранены или связаны другими соединениями.

Платформы объявления

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

Рисунок 3-2  представление несвязанных объявлений, приводящих к высоким издержкам

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

Соединения пакета для сокращения трафика управляющей плоскости

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

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

Реорганизация процесса загрузки может сделать более эффективное использование соединения наверху.

Рисунок 3-3  представление чрезмерных, низкого объема, приоритетного трафика

Сохранение данных приложения к облаку в режиме реального времени

Рисунок 3-4 показывает шестиминутный журнал приложения, сохраняющего данные к облаку в режиме реального времени. Этот пример показывает приложение, которое является в активном употреблении. Пользователь неоднократно касается экрана и вводит, чтобы выбрать и отредактировать исходный ввод при создании текста. Каждый раз пользовательские касания или типы, данные сохраняются к облаку, как будто пользователь не использует приложение на устройстве, но взаимодействует с облаком непосредственно.

Рисунок 3-4  представление приложения, сохраняющего данные к облаку, в режиме реального времени делающему многочисленные новые соединения

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

Сохраните батарею, когда не будет никакого ввода данных пользователем

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

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

Рисунок 3-5 показывает пример игры, переопределяющей функциональность экрана Auto-Lock и сохраняющей экран на том, пока батарея не высушивает полностью. Баланс должен быть найден между раздражением пользователем излишне и хранением экрана на без любых проверок на действие.

Рисунок 3-5  игра, переопределяющая автоматическое потускнение экрана с неутешительными результатами

К счастью, эта ситуация проста идентифицировать использование яркости дисплея и инструментов сна/следа.

Уважайте пользовательские планы данных

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

Рисунок 3-6 показывает очень популярное приложение VoIP, использующее оперативную транспортную модель, использование в своих интересах любых соединений доступно. Когда это открыто на сотовом устройстве в фоновом режиме, гибкая транспортная модель данных приложения использует сотовое устройство в качестве маршрутизатора для данных других пользователей. Таким образом это отправляет данные, никогда не порождавшиеся (преднамеренно или иначе) пользователем устройства и разъедающие план данных этого пользователя. Хуже, это инициирует много новых соединений для этого дальнейшее увеличение издержек, использующих допуск данных пользователя.

Рисунок 3-6  приложение VoIP с помощью данных планирует транспортировать данные других пользователей

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

Переключение воспроизведения видео от Wi-Fi до сотовой связи

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

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

  Загрузка Воспроизведения видео рисунка 3-7 на Wi-Fi и бессознательно перемещение в сотовую связь

Управляйте образцами загрузки данных

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

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

Рисунок 3-8  колеблющийся образец загрузки приложения, показывающий новые соединения

Этот колеблющийся образец является более тонкой служебной проблемой, чем простое создание новых соединений. Сотовый трафик работает в различном питании и уровнях данных в единственном непрерывном соединении. Выбором скоростей передачи данных управляет сотовая сеть в согласовании с мобильным устройством. Даже в единственном соединении, управляя переходами между низкими, средними, и высокими скоростями передачи данных требует коммуникации наверху, как проиллюстрировано на рисунке 3-9.

Рисунок 3-9  коммуникация, наверху следующая из изменений состояния в единственном соединении

На рисунке 3-10 Apple внутренний аналитический инструмент показывает фактическое питание Wideband Code Division Multiple Access (WCDMA) и состояния данных, используемые устройством. Они колеблются вместе с пакетами данных с короткими периодами высокой мощности и высокой передачи данных между более длительными периодами среднего питания и небольших данных. Несмотря на то, что новые соединения не создаются, существует тяжелая коммуникация наверху и потерянная энергия без передаваемых данных.

Рисунок 3-10  данные загружает уровень, влияющий на состояние электропитания, создавая колебание

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

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

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

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

Управляйте генерацией данных, кэшем и запросами данных

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

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

Использование кэша. Используйте кэш эффективно для предотвращения ненужной загрузки тех же данных много раз.

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

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