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
其實在這裏我張貼的問題尋求幫助開發應用程序自己。在問題的最後,我提到,是否有任何API可用於開發這樣的應用程序。所以我發誓,這不是關於編程問題的話題。這完全是編程問題。 – 2013-02-19 00:50:58
我會建議移動開發人員的問題(有人可能只讀過一半。 – 2013-02-19 01:18:40
http://osxdaily.com/2010/05/18/password-protect-iphone-and-ipad-backups/ – sosborn 2013-02-19 01:19:20