2013-12-14 4 views
13

मैं एक OS X आवेदन में MobileDevice.framework उपयोग कर रहा हूँ और मैं कैसे एक iOS डिवाइस USB से अधिक जुड़ा हुआ की बैटरी चार्ज domain और "BatteryCurrentCapacity"key के लिए के लिए बहस "com.apple.mobile.battery" साथ AMDeviceCopyValue(device, domain, key) समारोह उपयोग कर रहा है प्राप्त करने में सक्षम किया गया है।मैं एक कनेक्टेड आईओएस डिवाइस से बैटरी चार्ज चक्र कैसे प्राप्त करूं?

मैं बैटरी पर चार्ज चक्रों की संख्या भी प्राप्त करना चाहता हूं। मेरा मानना ​​है कि यह संभव है क्योंकि iBackupBot उस डेटा को लाने में सक्षम है। क्या किसी को पता है कि यह कैसे करता है? मैंने कार्यक्रम की मुफ्त प्रति डाउनलोड की और इसे iPhone 3GS, iPhone 4S, और iPhone 5 पर परीक्षण किया। यह सभी तीन उपकरणों के लिए डेटा को पकड़ने में सक्षम था।

मैंने एलएलडीबी के माध्यम से iBackupBot चलाया है और AMDeviceCopyValue() के हर उपयोग को लॉग किया है। ऐसा करने में, मैंने यह निर्धारित किया कि उसे चार्ज चक्रों की गणना नहीं हो रही है।

+0

मुझे बक्षीस से सम्मानित किया गया क्योंकि मैं इसे बर्बाद करने के लिए नहीं देखना चाहता था (और निश्चित रूप से उसने मुझे बहुत सारी प्रासंगिक जानकारी प्रदान की जो मुझे पता नहीं था) लेकिन यह वास्तव में सवाल का जवाब नहीं देता है, इसलिए मैं मैं इसे एक स्वीकार्य उत्तर के बिना छोड़ रहा हूं जब तक कि कोई व्यक्ति न दे। मैं iBackupBot पर हमला करने की योजना बना रहा हूं (यह एप्लिकेशन जो पहले से ही करता है) हूपर डीकंपलर के साथ बाद में जब मेरे पास अधिक समय लगेगा ... जब मैं इसे पाता हूं तो मैं यहां समाधान पोस्ट करूंगा, अगर कोई मेरे सामने नहीं आया है । – ArtOfWarfare

+0

हाय, मैं इसे आईफोन में प्राप्त करना चाहता हूं, कोई अपडेट? धन्यवाद। – flypig

+0

@flypig - यदि आप निजी ढांचे का उपयोग करने के ठीक हैं, तो मुझे जवाब देने के लिए उत्तर दें। यदि नहीं, तो मुझे संदेह है कि आप इसे आईओएस पर कर सकते हैं। – ArtOfWarfare

उत्तर

3

मुझे लगता है कि आप के बारे में उपकरणों बैटरी की स्थिति प्राप्त करने के लिए बात कर रहे हैं, के बाद, सक्षम UIDevice की batteryMonitoringEnabled आपत्ति आप वर्तमान स्थिति और बैटरी के स्तर पर प्राप्त कर सकते हैं

की तरह,

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

अलग UIDeviceBatteryState नहीं है आप से उपकरण प्राप्त कर सकते हैं

  • UIDeviceBatteryStateUnplugged, की
  • UIDeviceBatteryStateCharging,
  • UIDeviceBatteryStateFull,
+0

1 - मुझे बैटरी पर चार्ज चक्र की संख्या चाहिए। यही है, बैटरी को डिवाइस में पहली बार रखे जाने के बाद बैटरी कितनी बार खाली से खाली और वापस चली गई है। यह जानने के लिए एक अच्छी मीट्रिक है कि आपकी बैटरी स्थायी रूप से मरने तक कितनी देर तक चल रही है। 2 - मैं आईओएस डिवाइस से जुड़े किसी ऐप में नहीं, आईओएस डिवाइस से जुड़े कंप्यूटर पर चल रहे ऐप में इस नंबर तक पहुंचना चाहता हूं। ईमानदारी से हालांकि, सप्ताह के अंत में मैं शायद बस जाऊंगा अगर कोई मुझे बता सकता है कि ऑन-डिवाइस ऐप के साथ चार्ज चक्र कैसे प्राप्त करें, भले ही उसे जेलब्रेकिंग की आवश्यकता हो। – ArtOfWarfare

+0

@ArtOfWarfare, क्या आपको अभी समाधान मिला, मैं भी वही काम करना चाहता हूं – jimwan

+0

@jimwan - क्षमा करें, नहीं। मैंने 2014 की शुरुआत में इसे छोड़ दिया। – ArtOfWarfare

16

आप CycleCount प्राप्त कर सकते हैं और अन्य जानकारी डिवाइस का एक ioreg (IORegistry) डंप का उपयोग करने का एक गुच्छा। उदाहरण के लिए, आईफोन 5 एस के आईओआरजीस्ट्री डंप के लिए here देखें। इस खंड नोट:

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

निजी IOKit.framework iOS पर इस जानकारी के सभी तक पहुँचने के लिए एक API है (आप डंप देख सकते हैं क्रम में संपत्ति आदि के नाम यह पता लगाने की प्रोग्रामेटिक इसे उपयोग करने में सक्षम होने के लिए)। एरिका सदून के पास कुछ open source code है जो कुछ डिवाइस हार्डवेयर जानकारी (जेलबैक के बिना, आईआईआरसी) तक पहुंचने के लिए निजी IOKit फ़ंक्शंस का उपयोग करता है, इसलिए शायद यह सहायक होगा।

मैक से इस जानकारी को पकड़ने के लिए, कोई विचार नहीं। यदि आपके पास डिवाइस ऐप है जो आईओआरजीस्ट्री से जानकारी खींच सकता है और इसे मैक पर यूएसबी पर भेज सकता है जो काम करेगा। यदि आप डिवाइस पर कोई अतिरिक्त सॉफ़्टवेयर इंस्टॉल किए बिना ऐसा करना चाहते हैं, तो आपको दूरस्थ रूप से ioreg डंप प्राप्त करने का तरीका पता लगाना होगा।

आशा है कि यह आपको कहीं और ले जाएगा!

+0

यह कोड मूल रूप से मैकबुक बैटरी से चार्ज चक्र प्राप्त करने के लिए देखे गए कोड के समान दिखता है। मैं इसे अभी +1 कर दूंगा, और अगर एक सप्ताह में कुछ भी बेहतर नहीं होता है तो मैं आपको बक्षीस दूंगा, लेकिन मैं डेटा प्राप्त करने के लिए मैक पर कुछ कोड पसंद करूंगा। हो सकता है कि जानकारी आईओएस डिवाइस पर एक फाइल में संग्रहीत हो जिसे मैं खींच सकता हूं, उदाहरण के लिए? मुझे लगता है कि जेलबैक समुदाय में किसी को आईओएस की छिपी हुई फाइल निर्देशिकाओं में सभी प्रकार की चीजों के बारे में पता होना चाहिए ... – ArtOfWarfare

+0

आईओकेट के ओएस एक्स संस्करण पर ऐप्पल के दस्तावेज से: "आई/ओ किट का एक गतिशील हिस्सा, रजिस्ट्री संग्रहित नहीं है डिस्क पर या बूट के बीच संग्रहीत। इसके बजाय, यह प्रत्येक सिस्टम बूट पर बनाया गया है और स्मृति में रहता है। " (स्रोत: https://developer.apple.com/library/mac/documentation/DeviceDrivers/Conceptual/IOKitFundamentals/TheRegistry/TheRegistry.html#//apple_ref/doc/uid/TP0000014-TP9) – ArtOfWarfare

+0

ठीक है, तो ऐसा लगता है अतिरिक्त सॉफ़्टवेयर स्थापित किए बिना मैक से प्राप्त करने का एक तरीका यह होगा कि रजिस्ट्री डंप का उत्पादन करने के लिए दूरस्थ रूप से डिवाइस पर 'ioreg' को आमंत्रित करने का एक तरीका खोजना होगा। एसएसएच एक तरीका है, लेकिन इसके लिए एक जेलबैक की आवश्यकता है। – indragie

संबंधित मुद्दे