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