2011-11-10 115 views
0

有沒有方法可以確定智能手機或平板電腦(iOS或Android)是否插入計算機?智能手機和平板電腦 - 插入計算機

無論是手機/平板電腦的角度(即isConnectedToComputer)還是計算機的角度(即connectedDevices)都可以。

如果是從計算機的角度來看,它特別需要通過Mac OS X應用程序。 如果是從手機/平板電腦的角度來看,它將需要區別於charging

一般的想法是確定用戶何時在他們的計算機上。

注意:爲了做出這個決定,我需要識別設備。對於iOS,使用設備UUID(與APNS中使用的類似)。在Android中,組合硬件和軟件ID被組合在一起。所以如果從計算機的角度來看解決方案,我需要能夠獲得這些字符串。否則,我需要能夠將它們傳遞給計算機。

獎勵:如果Wi-Fi同步也可以考慮爲「連接」,那將是太棒了。

回答

1

簡單的解決方案

考慮使用system_profiler SPUSBDataType通過NSTask
當我的iPhone連接包括在結果如下:

iPhone: 

Product ID: 0x1292 
Vendor ID: 0x05ac (Apple Inc.) 
Version: 0.01 
Serial Number: 
Speed: Up to 480 Mb/sec 
Manufacturer: Apple Inc. 
Location ID: 0xfa140000/6 
Current Available (mA): 500 
Current Required (mA): 500 
Extra Operating Current (mA): 500 

使用system_profiler SPUSBDataType -xml輸出結果XML格式:

<dict> 
    <key>_name</key> 
    <string>iPhone</string> 
    <key>a_product_id</key> 
    <string>0x1292</string> 
    <key>b_vendor_id</key> 
    <string>apple_vendor_id</string> 
    <key>c_bcd_device</key> 
    <string> 0.01</string> 
    <key>d_serial_num</key> 
    <string></string> 
    <key>e_device_speed</key> 
    <string>high_speed</string> 
    <key>f_manufacturer</key> 
    <string>Apple Inc.</string> 
    <key>g_location_id</key> 
    <string>0xfa140000/6</string> 
    <key>h_bus_power</key> 
    <string>500</string> 
    <key>j_bus_power_used</key> 
    <string>500</string> 
    <key>k_extra_current_used</key> 
    <string>500</string> 
</dict> 

簡單解析XML確定閹感興趣的設備連接與否。

+0

關於iPhone/iPad:有沒有辦法從這個應用程序獲取硬件UUID? –

+1

運行'system_profiler SPHardwareDataType -xml'顯示Mac本身的UUID,查找' platform_UUID'鍵。不幸的是'system_profiler'不能提供連接的iDevices的UUID。 – Anne

+0

儘管我非常喜歡這個答案的簡單性,但它並不能完全從我的設備中獲得所需信息。我在這個問題中增加了更多的上下文,並且暫時讓它無法解決。不過謝謝你! –

相關問題