2013-12-14 2 views
13

나는 OS X 응용 프로그램에서 MobileDevice.framework을 사용하고 있는데 나는 keydomain"BatteryCurrentCapacity"의 인수 "com.apple.mobile.battery"으로 AMDeviceCopyValue(device, domain, key) 기능을 사용 USB를 통해 연결된 iOS 장치의 배터리를 충전하는 방법을 얻을 수있었습니다.연결된 iOS 기기에서 배터리 충전주기를 얻으려면 어떻게해야하나요?

배터리의 충전주기 수를 얻고 싶습니다. iBackupBot이 해당 데이터를 가져올 수 있기 때문에 가능하다고 생각합니다. 아무도 그것이 어떻게하는지 알고 있습니까? 프로그램의 무료 사본을 다운로드하고 iPhone 3GS, iPhone 4SiPhone 5에 테스트했습니다. 세 장치 모두에 대한 데이터를 수집 할 수있었습니다.

저는 LLDB를 통해 iBackupBot를 실행하고 모든 사용법을 AMDeviceCopyValue()로 기록했습니다. 그렇게하면서, 나는 그것으로부터 Charge Cycles 카운트를 얻지 못한다고 결정했다.

+0

나는 그것이 낭비되는 것을보고 싶지 않았기 때문에 현상금을 수여 받았다. (물론 나는 그가 알지 못했던 많은 관련 정보를 제공했다.) 그러나 정말로 질문에 답하지 않는다. 누군가 대답 할 때까지 대답을하지 않고이 질문을 남기고 있습니다. 나는 더 많은 시간이있을 때 나중에 Hopper Decompiler로 iBackupBot (이미이 작업을 수행하는 응용 프로그램)을 공격 할 계획입니다 ... 누군가가 나보다 먼저 나오지 않으면 찾으면 해결책을 게시 할 것입니다. . – ArtOfWarfare

+0

안녕하세요, iPhone에서이 업데이트를 받고 싶습니다. 감사. – flypig

+0

@flypig - 개인 프레임 워크를 사용해도 괜찮다면, 내가 현상금을 수여 한 답을 확인해보십시오. 그렇지 않다면, 나는 당신이 IOS에서 그것을 할 수 있는지 의심 스럽다. – ArtOfWarfare

답변

3

내가 당신은 장치의 배터리 상태를 얻을 수에 대한 이야기 ​​추측 후, UIDevice의 batteryMonitoringEnabled 당신이 현재 상태와 배터리의 수준을 얻을 수있는 객체

등을 사용할 수

UIDevice *device = [UIDevice currentDevice]; 
device.batteryMonitoringEnabled = YES; 
NSLog(@"State: %i Charge: %f", device.batteryState, device.batteryLevel); 

다른 UIDeviceBatteryState있다

  • UIDeviceBatteryStateUnplugged를 얻을 수 있습니다 당신의 장치의
  • UIDeviceBatteryStateCharging,
  • UIDeviceBatteryStateFull, 당신은 CycleCount 잡을 수
+0

1 - 배터리의 충전주기가 필요합니다. 즉, 배터리가 처음 장치에 놓인 이후 배터리가 가득 찬 상태에서 비어있는 상태로 몇 번이나 돌아 왔는지를 나타냅니다. 배터리가 영구적으로 수명이 다할 때까지 얼마나 오래 걸릴지를 알기위한 좋은 측정 기준입니다. 2 - iOS 기기 자체에서 실행중인 앱이 아니라 iOS 기기에 연결된 컴퓨터에서 실행중인 앱에서이 번호에 액세스하고 싶습니다. 솔직히 비록 주말에 jailbreaking이 필요한 경우에도 누군가가 온 - 장치 앱으로 충전주기를 얻는 방법을 말해 줄 수 있다면 해결할 것입니다. – ArtOfWarfare

+0

@ArtOfWarfare, 지금 해결책을 찾았습니까? 같은 일을하고 싶습니다. – jimwan

+0

@jimwan - 죄송합니다. 나는이 문제를 2014 년 초에 포기했습니다. – ArtOfWarfare

16

및 장치의 ioreg (IORegistry) 덤프를 사용하여 다른 정보의 무리. 예를 들어, iPhone 5S의 IORegistry 덤프에 대해서는 here을 참조하십시오. 이 섹션 참고 : 프로그래밍 방식으로 액세스 할 수 있도록 iOS의 개인 IOKit.framework이 모든 정보를 액세스하기위한 API를 가지고

+-o AppleD2045PMUPowerSource <class AppleD2045PMUPowerSource, busy 0, retain count 10> 
    | | | | | { 
    | | | | |  "battery-data" = { 
          ..... 
          "CycleCount" = 1 
     | | | | |  "ChargerConfiguration" = 960 
     | | | | |  "DesignCapacity" = 1550 
     | | | | |  "BatteryData" = {"BatterySerialNumber"="C0133237ALXFHCWBP","ChemID"=4484,"Flags"=256,"QmaxCell0"=1619,"Voltage"=4051,"CycleCount"=1,"StateOfCharge"=72,"DesignCapacity"=1550,"FullAvailableCapacity"=1573,"MaxCapacity"=1517,"MfgData"=<4330313333323337414c58464843574250000000000000010000010000000100>,"ManufactureDate"="1332"} 
     | | | | |  "AtCriticalLevel" = No 

을 (당신은 순서 등 속성 이름을 알아 내기 위해 덤프를 볼 수 있습니다). Erica Sadun은 일부 장치 하드웨어 정보 (탈옥, IIRC없이)에 액세스하기 위해 개인 IOKit 기능을 사용하는 다소 open source code을 가지고 있으므로 도움이 될 것입니다.

Mac에서이 정보를 얻는 방법에 대해서는 알지 못합니다. IORegistry에서 정보를 가져와 USB를 통해 Mac으로 전송할 수있는 장치 응용 프로그램이있는 경우 작동합니다. 장치에 추가 소프트웨어를 설치하지 않고이 소프트웨어를 원한다면 ioreg 덤프를 원격으로 얻을 수있는 방법을 찾아야합니다.

희망이 있으면 어딘가에 있습니다.

+0

이 코드는 MacBook 배터리에서 충전 사이클을 수행 한 코드와 기본적으로 같습니다. 지금 당장 +1하겠습니다. 일주일에 더 나은 것이 없으면 현상금을 드리겠습니다. Mac에서 데이터를 얻기 위해 실행할 수있는 코드를 선호합니다. 어쩌면 정보가 내가 끌어 당길 수있는 iOS 장치의 파일에 저장되어 있을까요? 탈옥 커뮤니티에있는 누군가가 iOS의 숨겨진 파일 디렉토리에있는 모든 종류의 것들을 알아야한다고 상상해보십시오. – ArtOfWarfare

+0

OSK 버전의 IOKit에 관한 Apple의 문서에서 "I/O Kit의 동적 인 부분 인 레지스트리는 저장되지 않습니다. 디스크에 저장되거나 부츠 사이에 보관되는 대신 시스템 부팅마다 만들어져 메모리에 상주합니다. " (출처 : https://developer.apple.com/library/mac/documentation/DeviceDrivers/Conceptual/IOKitFundamentals/TheRegistry/TheRegistry.html#//apple_ref/doc/uid/TP0000014-TP9) – ArtOfWarfare

+0

좋아, 그렇게 들리네. 추가 소프트웨어를 설치하지 않고 Mac에서 가져 오는 한 가지 방법은 장치에서 원격으로 ioreg를 호출하여 레지스트리 덤프를 생성하는 방법을 찾는 것입니다. SSH는 한 가지 방법이지만 탈옥이 필요합니다. – indragie