2013-02-19 27 views
1

我想知道,在App Store中是否有任何可用的應用程序讓我的iPhone對iTunes不可見?這意味着,當我通過USB線將我的iPhone連接到PC時,iTunes會自動檢測我的iPhone。但是,我想要一個密碼保護連接,因爲當iPhone被盜時,任何人都可以將iPhone連接到iTunes並恢復所有數據。使我的iPhone對iTunes無法看到並且密碼保護連接

所以我想從這個保護...當我的iPhone連接到iTunes,它應該要求輸入密碼。

是否有任何方法通過使用私有API或越獄API來做到這一點,或者是現成的應用程序?

+0

其實在這裏我張貼的問題尋求幫助開發應用程序自己。在問題的最後,我提到,是否有任何API可用於開發這樣的應用程序。所以我發誓,這不是關於編程問題的話題。這完全是編程問題。 – 2013-02-19 00:50:58

+2

我會建議移動開發人員的問題(有人可能只讀過一半。 – 2013-02-19 01:18:40

+1

http://osxdaily.com/2010/05/18/password-protect-iphone-and-ipad-backups/ – sosborn 2013-02-19 01:19:20

回答

2

iTunes使用AFC守護進程通過USB與iPhone進行通信。所以顯而易見的事情是阻止這個守護進程自動啓動。您可以使用launchctl來執行此操作。

(iPhone連接到PC或之後)在設備啓動時需要您將設備連接到PC iTunes會顯示錯誤消息,在無法連接到該設備執行

launchctl unload /System/Library/LaunchDaemons/com.apple.afcd.plist 

。然後,您的應用程序可以要求輸入密碼,當它的正確輸入您可以啓動AFC守護回這樣

launchctl load /System/Library/LaunchDaemons/com.apple.afcd.plist 
launchctl start com.apple.afcd 

用這種方法唯一的問題是,你需要重新啓動iTunes的,否則他也不會即使你檢測設備啓動了AFC守護進程。

UPDATE

找到了適當的解決方案。有IOKit.framework API來開啓/關閉USB - http://www.opensource.apple.com/source/IOKitUser/IOKitUser-502/usb_device.subproj/IOUSBDeviceControllerLib.h

下面是代碼:

//Declarations 
IOReturn IOUSBDeviceControllerCreate(CFAllocatorRef allocator, IOUSBDeviceControllerRef* deviceRef); 
IOReturn IOUSBDeviceControllerForceOffBus(IOUSBDeviceControllerRef device, int enable);  

... 

//Create controller 
IOUSBDeviceControllerRef device = NULL; 
IOUSBDeviceControllerCreate(NULL, &device); 

//Turn USB off 
IOUSBDeviceControllerForceOffBus(device, 1); 

//Turn USB on 
IOUSBDeviceControllerForceOffBus(device, 0); 

//Free controller 
CFRelease(device); 

當USB關閉您的Mac/PC將不再看到該設備。它會像你一樣斷開它。 iTunes,Xcode,文件瀏覽器 - 他們都不會再看到它。

當USB打開時,您的Mac/PC將檢測到設備。你不需要重新插入它。所有的軟件會自動檢測到它,就像設備被物理插入一樣。

我應該警告你,當USB關閉時,如果不使用上面的代碼,就不能重新打開它。如果你堅持使用它,只有設備重啓會有幫助。

僅在iOS 7進行測試,但它看起來像這些功能都可以,因爲iOS的4