배터리 수명은 모바일 장치 사용성에서 가장 중요한 요소 중 하나이며 특히 하루 동안 iOS 애플리케이션에 의존하는 사용자를 위해 사용됩니다. 앱은 더 많은 기능을 갖춘, 지속적인 처리, 네트워크 활동 및 고해상도 그래픽 증가를위한 수요가 증가하여 배터리 하수구에 대한 더 빠른 속도를 제공합니다. 이 뿐만 아니라 사용자가 실망시키지 않고 유지율과 부정적인 리뷰로 이어질 수 있습니다. 다행히도, 잘 설치 된 모범 사례와 현대 iOS API의 조합은 개발자가 크게 에너지 소비를 줄이기 위해 개발자가 될 수 있습니다. iOS 애플리케이션의 기본 사용성에 대한 최적화 된 사용성에 대한 기본적 인 이점을 제공합니다.

iOS 앱의 배터리 소비 이해

배터리 수명을 최적화하려면 개발자는 iOS 애플리케이션이 전력을 소비하는 방법을 먼저 이해해야합니다. 거의 모든 작업은 배터리에서 에너지를 끌어 들일뿐만 아니라 다른 것보다 더 까다로운 활동이 있습니다. 배터리 소비의 주요 범주는 다음과 같습니다.

  • Display and Backlight: 화면은 종종 최대 전력 소비입니다. 높은 밝기, 긴 화면에 시간, 애니메이션 또는 효율적인 UI 업데이트에서 빈번한 철회는 모든 증가 배수.
  • Network Activity: Cellular Modems 및 Wi-Fi 라디오는 데이터를 전송하거나 수신할 때 상당한 전력을 사용합니다. 주파수, 작은 네트워크 통화는 특히 무선이 전원을 켜야하기 때문에, 연결 및 전원이 각 세션에 대해 다시 전원을 켜야 합니다.
  • Background Tasks: 위치 업데이트, 배경 fetch, 또는 VoIP 연결과 같은 배경에서 프로세스를 계속 실행하는 앱은 저전력 상태에 입력하여 장치를 방지할 수 있습니다.
  • CPU 및 GPU Load:] Complex 계산, 무거운 그래픽 렌더링, 과도한 루프는 프로세서 활성화를 유지, 로드에 대한 그림 전력 비율.
  • Sensor 사용법: GPS, 가속도계, 또는 마이크와 같은 센서에 대한 연속 액세스는 배터리를 신속하게 배수 할 수 있습니다, 특히 응용 프로그램은 샘플링 속도를 관리하지 않거나 올바른 정확도 수준을 사용하지 않는 경우.

이 구성 요소의 식별은 응용 프로그램의 기본 culprit은 Xcode의 에너지 진단 탭과 같은 도구와 프로파일링을 요구합니다. 에너지 로그는 CPU 사용, 네트워크 활동 및 시간 동안 위치 사용의 상세한 고장을 보여줍니다. 대상 최적화를 가능하게합니다.

개발자를위한 중요한 전략

효과적인 배터리 최적화는 계층화된 접근법을 포함합니다: 에너지 효율적인 API를 사용하여 불필요한 일을 줄이고, 체계적인 전력 상태를 존중합니다. 아래는 지속적인 사용법을 요구하는 앱을 위한 가장 충격적인 기술입니다.

배경 활동 최소화

배경 실행은 주요 배터리 드레인입니다. iOS는 배경 작업에 대한 여러 메커니즘을 제공하지만, 각은 배심적으로 사용되어야한다. 백 지상 fetch] 앱은 작은 양의 데이터를 정기적으로 다운로드 할 수 있지만, 주파수는 시스템 관리입니다. 가장 큰 허용 간격 (예를 들어, 에 ]를 설정하면, 실제로는 진정한 배경을 필요로하는 경우 ]를 설정한다. ]]는, ]]를 설정할 때, 이 작업은 충분하다. [FLT:]

앱이 위치 서비스를 사용한다면 적절한 정확도 수준을 선택하십시오. 일정한 높은 정확도 GPS 업데이트 대신 ]region monitoring 또는 significant-change Location service]를 사용하여 공동 위치 추적을 가능하게 합니다. 예를 들어, 사용자가 입력하거나 공원이 지속 가능한 지역 모니터링을 사용할 수 있을 때만 알아야 하는 피트니스 앱은, 이는 연속적으로 지속 가능한 GPS]를 최적화하는 것이 좋습니다. ]는 이 영역의 최적화를 고려해야 합니다. ]

Optimize Network 사용

네트워크 운영은 특히 셀룰러에 거대한 배터리 배수입니다. 이러한 모범 사례를 구현하십시오.

  • Batch 네트워크 요청: 많은 작은 API 호출을 만드는 대신, 더 큰 요청으로 집계 데이터. 라디오는 데이터의 파열을 보낼 수 있을 때 고출력 전송 모드에서 시간을 덜 지출하고 그 후 유휴.
  • 사용 진보적인 다운로드: 이미지 또는 비디오 파일과 같은 큰 자산에 대한, 즉시 필요한 데이터를 다운로드. 사용 범위 (HTTP 범위 요청) 또는 크기 인식 API.
  • HTTP / 2 또는 QUIC: 이 프로토콜은 연결 오버 헤드를 줄이고 다중 스트림을 허용하며, 요청당 에너지 소비를 낮춘다.
  • NSURLSession을 제대로 채택: 앱이 중단되는 경우에도 계속되는 전송에 대한 배경 세션을 사용합니다. 전장 세션의 경우, 를 적절하게 설정하고 를 사용하여 가난한 연결 중에 retries를 피하십시오.
  • 압축 탑재량: gzip 또는 Brotli 압축을 서버 측에 사용합니다. 작은 데이터는 전송 시간과 라디오 전력을 감소시킵니다.

]push notifications을 polling 대신 사용합니다. 시스템은 모든 앱에 대한 단일 지속적 연결을 유지하기 때문에 시스템의 에너지 효율이 더 높으며, 새로운 데이터가 도착했을 때 앱이 일어나고 있습니다. 비-critical 업데이트의 경우, ]]]를 원격 알림으로 밀어 (silent Pushes)는 여전히 전력을 처리하기 위해 전력을 소비합니다.

효율적인 코드 실행

효율적인 알고리즘과 과도한 CPU 사용은 숨겨진 배터리 배수구입니다. Xcode의 시간 프로파일러]를 사용하여 핫스팟을 식별합니다. 일반적인 문제는 다음과 같습니다.

  • 필수 오염 루프: 비폭력할 때만 타이머를 사용; delegate 콜백을 선호하거나, 시스템의 화재가 상태 변경 될 때 콜백.
  • 본문에 무거운 계산:] 백그라운드 큐에 오프로드 작업 (]] 또는 ]) UI 업데이트에 대한 메인 실행 루프를 유지.
  • Lazy 로딩: Load resource (images, data model, view controller)는 앱 출시에 모든 것을 미리 로드해야만 합니다.
  • Reduce object create overhead: 꽉 루프에서 가능한 재사용 객체 (예를 들어, 센서에서 데이터를 처리 할 때).

Core ML inference 또는 Metal 셰이더 실행과 같은 고주파 작업에 대해 iOS 기기는 CPU보다 훨씬 강력한 동력 효율 인 전용 하드웨어 (Neural Engine, GPU)가 있습니다. 작업 부하에 가장 적합한 API를 사용하여 유지하십시오. 예를 들어, Device Check 또는 ]ARKit 하드웨어 가속을 사용하여 CPU 기반 솔루션보다 더 나은 것입니다.

전력 효율 API

iOS는 저전력 소비를 위해 특별히 디자인된 몇몇 APIs를 제안합니다. 이 사용은 사용자 정의 최적화 없이 건전지를 자동적으로 저장할 수 있습니다:

  • ]삼색 구성: 언급된대로, 이 지상 활동보다 적은 전력 집중적 인 별도의 공정에서 전송을 처리한다.
  • AVCaptureSession – .photo output:] 카메라를 사용 하면, 비디오 대신에 이미지를 위한 ] 미리 설정 - 비디오는 연속 센서 읽기 및 처리가 필요합니다.
  • Core Location – deferred update:] 배경에서 실행할 때, 위치 업데이트는 ]를 사용하여 방어할 수 있습니다. 이 일괄 업데이트는 더 적은 깨어나게 업데이트됩니다.
  • Energy 대시보드: ]]를 사용하여 앱 동작을 조절할 수 있습니다. 애니메이션, 낮은 프레임 속도, 비-essential 동기화 또는 낮은 품질의 리소스로 전환합니다.

Hardware Optimizations를 활용

현대 iPhone은 ]M-series 모션 coprocessors 및 전용 인코딩/디코더와 같은 전원 관리 하드웨어를 포함합니다. 가능한 한 이 단위로 처리하는 오프로드 데이터. 예를 들어, 를 소프트웨어 인코딩 대신 하드웨어 가속 H.264/H.265 인코딩으로 사용합니다. 마찬가지로, Core ML 모델은 Neural Engine에서 실행할 수 있습니다. 장치 유형의 GPU, CPU 또는 CPU의 CPU의 사용을 위한 장치 유형.

또한 고려 금속 성능 쉐이더] 이미지 처리에 대한 - 그들은 GPU에 실행, 병렬 작업 부하 CPU보다 더 에너지 효율. 항상 물리적 장치에 테스트, 시뮬레이터는 정확하게 모델의 파워 동작하지 않습니다.

사용자 선택 팁 및 설정

개발자가 전력 소비의 많은 것을 통제하는 동안, 사용자는 또한 무거운 앱 사용법 도중 건전지 생활을 연장하는 선택권이 있습니다. In-app는 사용자가 더 나은 조정을 인도할 수 있습니다:

  • Lower Screen brightness: 밝기를 수동으로 밝기를 줄이고 자동 광도를 활성화하기 위해 Encourage 사용자는 (설정 > 디스플레이 & 광도).
  • 저전력 모드 사용 가능: 지속적인 사용량 (설정 > 배터리)를 기대할 때 저전력 모드를 활성화하는 것을 제안한다. 이 시스템은 자동으로 배경 활동과 성능을 감소한다.
  • Reduce 새로 고침 빈도:] ProMotion(120Hz display)를 가진 장치를 위해 사용자는 설정 > Accessibility > Motion > Limit Frame Rate에서 60Hz의 프레임 속도를 제한할 수 있습니다. 앱은 120Hz 애니메이션을 비활성화하여 이를 존중할 수 있습니다.
  • Close 불필요한 앱: iOS는 여러 가지 리소스를 효율적으로 처리하지만, 배경 앱은 여전히 일부 리소스를 소비합니다. 사용자가 앱을 swipe로 묶어도 적극적으로 사용하지 않습니다.
  • 불필요한 서비스를 끄십시오:] Bluetooth, Wi-Fi 및 위치 서비스는 필요할 때 꺼질 수 있습니다. 위치의 경우, 사용자는 “Always” 대신 “While Use”에 앱 권한을 설정할 수 있습니다.

또한 Low Power Mode detection 를 추가할 수 있습니다. 앱에서 자원 사용량 (예를 들어, 낮은 비디오 품질, 일시동화, 오염 빈도 감소)를 자동으로 줄일 수 있습니다. 이러한 변경을 사용자들에게 전달하기 때문에 거래가 계속됩니다.

관련 기사

iOS 애플리케이션의 최적화 배터리 수명은 한 번의 작업이 아니지만 하드웨어, 시스템 서비스 및 앱 코드 간의 상호 작용을 이해하는 데 필요한 지속적인 프로세스가 아닙니다. 초기 프로파일링으로, 전력 효율적인 API를 사용하여, 최소화 된 배경 작업을 수행하고, 사용자 전력 관리 선택에 대한 사용자의 전력 관리 선택, 개발자는 배터리를 배수하지 않고 우수한 지속적인 사용 경험을 제공 할 수 있습니다. 이러한 관행은 사용자 만족을 개선하고, churn을 줄이고, 디바이스가 더 이상 충전 할 수 있도록 도와줍니다. 자세한 내용은 Apple 'LT'LT [FLT]:[F]:F]