2013-12-14 13 views
13

Bir OS X uygulamada MobileDevice.framework kullanıyorum ve key için domain ve "BatteryCurrentCapacity" için argümanlar "com.apple.mobile.battery" ile AMDeviceCopyValue(device, domain, key) fonksiyonunu kullanıyor USB üzerinden bağlanan bir iOS cihazın pilini şarj nasıl elde edebilmek oldum.Bağlı bir iOS cihazından Pil Şarj Döngülerini nasıl alabilirim?

Ayrıca, pildeki Şarj Döngüleri sayısını almak istiyorum. Bunun mümkün olduğuna inanıyorum çünkü iBackupBot bu verileri alabiliyor. Bunu nasıl yaptığını bilen var mı? Programın ücretsiz kopyasını indirdim ve bir iPhone 3GS, iPhone 4S ve bir iPhone 5 üzerinde test ettim. Her üç cihaz için de veri toplayabilirdi.

LLDB aracılığıyla iBackupBot'u çalıştırdım ve AMDeviceCopyValue() her kullanımını günlüğe kaydettim. Bunu yaparken, Şarj Devirlerinin bundan sayılmadığını belirledim.

+0

Ödülünü ben ödüllendirdim çünkü israfa gitmek istemedim (ve kesinlikle farkında olmadığım pek çok alakalı bilgi sağladı) ama bu soruya gerçekten cevap vermiyor. Birisi verene kadar bunu kabul edilen bir cevap olmadan bırakıyorum. Daha fazla zamanım olduğunda Hopper Decompiler ile daha sonra iBackupBot (zaten bunu yapan uygulama) saldırmayı planlıyorum ... Birisi bana gelmezse, bulduktan sonra çözümü buraya yükleyeceğim. . – ArtOfWarfare

+0

Merhaba, bunu iPhone'da güncellemek ister misin? Teşekkürler. – flypig

+0

@flypig - Özel çerçeveler kullanmayla ilgili sorun yoksa, ödül verdiğim cevabı kontrol edin. Değilse, iOS'ta yapabileceğinizden şüpheliyim. – ArtOfWarfare

cevap

3

Ben Sen cihazlar pil durumunu almak için bahsediyoruz sanırım, sonra UIDevice ait batteryMonitoringEnabled Eğer mevcut durumu ve pil seviyesini alabilirsiniz nesne

Beğen, etkin

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

farklı UIDeviceBatteryState yoktur

  • UIDeviceBatteryStateUnplugged alabilirsiniz sizden cihazının
  • UIDeviceBatteryStateCharging,
  • UIDeviceBatteryStateFull, Sen CycleCount yakalayabilir
+0

1 - Bataryadaki şarj döngü sayısını istiyorum. Yani, batarya ilk kez cihaza yerleştirildiğinden beri bataryanın boş ve geriye kaç kez gittiği. Pilinizin kalıcı olarak ölmesine kadar ne kadar süre olduğunu bilmek için iyi bir ölçüm. 2 - iOS cihazında çalışan bir uygulamada değil, iOS cihazına bağlı bir bilgisayarda çalışan bir uygulamada bu numaraya erişmek istiyorum. Dürüst olmak gerekirse, haftanın sonunda jailbreaking gerektiriyor olsa bile, bir cihaz üzerinde bir cihaz uygulamasıyla şarj döngüsünü nasıl alacağımı söyleyebilecekse, muhtemelen yerleşirim. – ArtOfWarfare

+0

@ArtOfWarfare, şimdi çözümü buldunuz mu, aynı şeyi de yapmak istiyorum – jimwan

+0

@jimwan - Üzgünüm, no. Bunu 2014'ün başında bıraktım. – ArtOfWarfare

16

ve cihazın bir ioreg (IORegistry) dökümü kullanan diğer bilgilerin bir demet. Örneğin, iPhone 5S'nin bir IORegistry dökümü için here'a bakın. Bu bölümü Not: programlama yoluyla erişmek mümkün iOS'ta özel IOKit.framework bu bilgilerin tümünü erişmek için bir API vardır

+-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 

(sırayla vb özellik adları, anlamaya dökümü bakabilirsiniz). Erica Sadun, bazı cihaz donanım bilgilerine (jailbreak, IIRC olmadan) erişmek için özel IOKit işlevlerini kullanan bazı open source code'a sahiptir.

Mac'den bu bilgiyi almayla ilgili olarak, bir fikir yok. IORegistry'den bilgi alıp çalışacak USB üzerinden Mac'e gönderebilecek bir cihaz uygulamanız varsa. Cihaza herhangi bir ek yazılım yüklemeden yapmak istediyseniz, bir ioreg dökümünü uzaktan elde etmenin bir yolunu bulmanız gerekir.

Umut bu sizi bir yere götürür!

+0

Bu kod, bir MacBook bataryasından şarj döngüsünü almak için gördüğüm kodla temel olarak aynı görünüyor. Şimdilik bunu +1'leyeceğim ve eğer bir haftada daha iyi bir şey gelmezse size ödül vereceğim, ama verileri almak için Mac üzerinde çalışabileceğim bazı kodları tercih ederim. Belki bilgi, örneğin alabileceğim iOS cihazındaki bir dosyada saklanır? Jailbreak topluluğundaki birisinin iOS'un gizli dosya dizinlerindeki her tür şeyi bilmesi gerektiğini hayal ediyorum ... – ArtOfWarfare

+0

IOKit'in OS X sürümündeki Apple'ın belgelerinden: "I/O Kitinin dinamik bir parçası, Kayıt Defteri saklanmaz disk üzerinde veya botlar arasında arşivlenir. Bunun yerine, her sistem önyüklemesinde oluşturulur ve bellekte bulunur. " (Kaynak: https://developer.apple.com/library/mac/documentation/DeviceDrivers/Conceptual/IOKitFundamentals/TheRegistry/TheRegistry.html#//apple_ref/doc/uid/TP0000014-TP9) – ArtOfWarfare

+0

Doğru, bu yüzden Ek bir yazılım yüklemeden Mac'ten bunu elde etmenin bir yolu, bir kayıt defteri dökümü oluşturmak için uzaktan aygıtta 'ioreg''i çağırmanın bir yolunu bulmak olacaktır. SSH bir şekilde, ama bu bir jailbreak gerektirir. – indragie