Термін служби акумулятора залишається одним з найбільш критичних чинників у мобільній системі, особливо для користувачів, які спираються на свої додатки iOS протягом дня. Як додатки стають більш функціональними, попит на безперервну обробку, мережеву активність, а також високорозрядну графіку зростає, що призводить до більш швидкого зливу акумулятора. Це не тільки розчарування користувачів, але також може призвести до зниження частоти зберігання і негативних відгуків. На щастя, поєднання добре налагоджених кращих практик і сучасних iOS API дозволяє розробникам значно зменшити споживання енергії без компромації продуктивності додатків. Ця стаття досліджує основні джерела акумулятора зливу в додатках iOS і забезпечує дієві стратегії оптимізації життя батареї під час використання.

Розуміння споживання акумуляторів у додатках iOS

Для оптимізації життя акумулятора розробники повинні спочатку зрозуміти, як споживає iOS програми. Практично кожна операція на пристрої виводить енергію від акумулятора, але деякі дії набагато більш затребувані, ніж інші. Основні категорії споживання акумулятора включають:

  • Display and Backlight: Екран часто є найбільшим споживачем електроенергії. Висока яскравість, довгий час екран-на час і часті червоні від анімації або неефективні оновлення UI все збільшення стоку.
  • Network активність: Cellular modems and Wi-Fi радіо використовують значну потужність при передачі або отримання даних. Часто, маленькі мережеві дзвінки особливо неефективні, оскільки радіо повинно живлення, підключення та живлення знову для кожного сеансу.
  • Background Завдання: Додатки, які продовжують виконувати процеси на фоні — такі як оновлення місця, фоновий fetch або VoIP з'єднання — може запобігти пристрою від введення малопотужного стану.
  • CPU і GPU Load: Комплексні розрахунки, важка графіка рендерингу, а зайві петлі зберігають активні процесори, потужність креслення пропорційно навантаження.
  • Sensor Використання: Безперервний доступ до датчиків, таких як GPS, акселерометр, або мікрофон може швидко злити акумулятор, особливо якщо додаток не керується тарифами відбору проб або використовувати рівні правильної точності.

Виявлення, яке з цих компонентів є основним кульпритом у вашому додатку, вимагає профілювання з інструментами, такими як вкладка ЕНЕРГЕТИЧНОЇ діагностики Xcode в Instruments. У журналі енергії відображається докладні поломки використання процесора, мережевої активності та використання місця з часом, що дозволяє цільову оптимізацію.

Ключові стратегії для розробників

Ефективна оптимізація акумулятора передбачає шарований підхід: використання енергоефективних API, зменшення зайвої роботи та повагу системних електростанцій. Нижче наведено найбільш ефективні методики для додатків, які вимагають безперервного використання.

Мінімізація фонової активності

Виконання фону є великим акумуляторним зливом. iOS забезпечує кілька механізмів для фонової роботи, але кожен повинен бути використаний належним чином. Background fetch] дозволяє додатки для завантаження невеликих обсягів даних періодично, але частота системного управління. Встановлення до найбільш прийнятного інтервалу (наприклад, ]], якщо не потрібні оновлення фону). Для завдань, які дійсно вимагають завершення фону, скористайтеся Background Завдання (BGTaskScheduler) замість цього додатка має достатню кількість робочих значень.

Якщо Ваш додаток використовує послуги місцезнаходження, виберіть відповідний рівень точності. Замість постійних високоточних GPS оновлення, використання контроль за реченням або / послуги розташування локації для відстеження місця розташування грубого місця. Наприклад, додаток для фітнесу, який потрібно знати, коли користувач входить або залишає парк може використовувати моніторинг регіону, який набагато ефективніше, ніж безперервне GPS опитування. Також розглянемо налаштування майно to - це говорить про можливість оптимізації їзду або оптимізації їзду.

Оптимізуйте мережевий канал

Мережеві операції є величезним акумулятором, особливо над стільниковим. Впроваджувати ці кращі практики:

  • Запити мережі: Замість створення багатьох малих викликів API, сукупних даних в меншу кількість, більших запитів. Радіо витрачає менше часу в режимі передачі високої потужності, коли він може надсилати лопець даних, а потім і свічку.
  • Використовувати прогресивні завантаження: Для великих активів, таких як зображення або відео файли, скачати тільки дані, необхідні відразу. Використовуйте діапазони (HTTP Range Запити) або Size-aware API.
  • Enable HTTP / 2 або QUIC: Ці протоколи знижують з'єднання накладних і дозволяють багаторазово заглиблювати струмки, знижуючи споживання енергії за запитом.
  • Adopt NSURLSession правильно: Використання фонових сесій для переказів, які повинні продовжувати навіть якщо додаток підвішений. Для передових сесій, набір ] належним чином і використання , щоб уникнути рети при поганій підключеності.
  • Компресні навантаження: Використання стиснення gzip або Brotli на серверній стороні. Менше даних зменшує час передачі та радіоенергетика.

push повідомлень замість опитування. Push є більш енергоефективним, оскільки система підтримує єдиний стійкий зв'язок для всіх додатків, а додаток тільки прокидається, коли нові дані прибувають. Для некритичних оновлень використовуйте , штовхайтефон з дистанційними сповіщеннями (силітні штути) непристойно, оскільки вони все ще споживають потужність для обробки.

Виконання ефективного коду

Неефективні алгоритми та надмірне використання процесора приховані зливи акумулятора. Профілактика вашого коду Xcode's Time Profiler] для виявлення гарячих точок. Загальні питання включають:

  • Необхідні петлі опитування: Використовуйте таймери тільки при нездійсненні; віддайте перевагу делегувати зворотні дзвінки або зворотнього зв'язку, що система вогневих систем при зміні умов.
  • Гайовий розрахунок на головній нитки: Овантаження роботи на фонові черги (напруга або ) для збереження головної петлі запуску безкоштовно для оновлення UI.
  • Завантажити: (зображення, моделі даних, перегляд контролерів) тільки при необхідності, а не перевантажувати все на запускі програми.
  • Розробляємо об'єкт накладної: Змикаємо об'єкти, де можливо, особливо в щільних петлях (наприклад, при обробці даних від датчиків).

Для високочастотних операцій, таких як Core ML, інфункція або виконання металевих шейдерів, пристрої iOS мають виділені апаратні (Neural Engine, GPU), які набагато більш ефективніше, ніж процесор. Забезпечити вам використання найбільш відповідного API для вашого робочого навантаження — наприклад, використовуючи Device Check або ARKit з прискоренням обладнання краще, ніж користувацькі рішення на основі процесора.

Потужні API

iOS пропонує кілька API, розроблених спеціально для низького споживання енергії. Використовуючи ці дані можна автоматично зберігати акумулятор без індивідуальної оптимізації:

  • NSURLSession з фоновою конфігурацією: Як згадувалося, вона ручить передачу в окремому процесі, що менша потужність, ніж передземна активність.
  • AVCaptureSession – .photo вихід: При використанні камери виберіть для зображень, замість відео — відео вимагає безперервного зчитування датчиків та обробки, що швидко зливається.
  • Core Location – deferred update: При роботі на фоні оновлення розташування можна відредагувати за допомогою . Ці партії оновлюються на кілька пробок.
  • Енергетичні прилади: Використання для адаптації поведінки додатків, коли користувач ввімкнув режим низької потужності. Зменшити анімації, низькі частоти кадрів, відключити не-essential sync або переключати на менші ресурси.

Лаверження Оптимізація обладнання

Сучасні iPhones включають в себе обладнання для управління потужністю, як M-серії, копроцесори руху і виділені кодери / декодери. Обробка даних навантаження на ці одиниці, коли це можливо. Наприклад, використання з апаратно-прискорених кодування H.264 / H.265 замість кодування програмного забезпечення. Аналогічно, моделі Core ML можуть працювати на Neural Engine через тип пристрою для інференції, який використовує частку потужності GPU або CPU.

Також розглянемо Метальні шейдери продуктивності] для обробки зображень — вони працюють на GPU, що є більш енергоефективним, ніж процесор для паралельних робочих навантажень. Завжди тестуйте на фізичні пристрої, оскільки Симулятор не моделює поведінку енергії точно.

Поради та налаштування користувачів

Хоча розробники контролюють багато споживання електроенергії, користувачі також мають можливість продовжити термін служби батареї під час використання важких додатків. У додатку передбачено можливість керувати користувачами для поліпшення параметрів:

  • Задоволення екрана яскравість: Заохочувати користувачів вручну зменшити яскравість або включити авто-брайтність (Налаштування> Display & Brightness).
  • Включний режим низької потужності: Суггест дозволяє режим низької потужності, коли вони очікують безперервного використання (Налаштування > Акумулятор). Система автоматично знизить фонову активність та продуктивність.
  • Reduce ставка оновлення: Для пристроїв з ProMotion (120 Гц дисплей), користувачі можуть обмежити частоту кадрів до 60 Гц в налаштуваннях > Доступність > Motion > Лімітовий частота кадрів. Додатки також можуть поважати це відключення 120 Гц анімації, коли не потрібно.
  • Застосувати непотрібні програми: Хоча iOS ручить багатозадачний ефект, фонові програми все ще споживають деякі ресурси. Перевага користувачів, щоб закрутити додатки, які вони не активно використовують.
  • Turn off непотрібні послуги: Bluetooth, Wi-Fi, а також послуги розміщення може бути вимкнено, коли не потрібно. Для розміщення користувачі можуть налаштувати дозвіл на додаток до "While Use" замість "Always".

Ви також можете додати Low Power Mode виявлення у додатку для автоматичного зменшення використання ресурсів (наприклад, низька якість відео, синхронізація паузи, зменшення частоти опитування). Приєднання цих змін чітко до користувачів, так що вони розуміють торговельні точки.

Висновок

Оптимізація життя батареї в додатках iOS не є важливим завданням, але постійний процес, який вимагає розуміння між апаратними, системними послугами та кодом додатків. За допомогою профілювання рано, використання потужних API, мінімізації фонової роботи, а також щодо вибору користувачів управління живленням, розробники можуть створювати додатки, які забезпечують відмінний досвід безперервного використання без зливу акумулятора. Ці практики покращують задоволення користувачів, зменшують churn, а також допомагають пристрої довше між зарядами. Для подальших деталей, відносяться до офіційної документації Apple на Енергія діагностики та App Life цикл[F[F:3]