Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使我的iPhone对iTunes不可见,并使用密码保护连接_Iphone_Ios_Itunes_Jailbreak - Fatal编程技术网

使我的iPhone对iTunes不可见,并使用密码保护连接

使我的iPhone对iTunes不可见,并使用密码保护连接,iphone,ios,itunes,jailbreak,Iphone,Ios,Itunes,Jailbreak,我想知道,App Store中是否有任何应用程序可以让我的iPhone对iTunes不可见?这意味着,当我通过USB电缆将iPhone连接到PC时,iTunes会自动检测到我的iPhone。但是,我想要一个密码保护的连接,因为当iPhone被盗时,任何人都可以将iPhone连接到iTunes并恢复所有数据 所以我想保护自己不受此影响。。。当我的iPhone连接到iTunes时,它应该要求输入密码 有没有办法通过使用私有API或越狱API来实现这一点,或者是否有现成的应用程序可用?iTunes使用

我想知道,App Store中是否有任何应用程序可以让我的iPhone对iTunes不可见?这意味着,当我通过USB电缆将iPhone连接到PC时,iTunes会自动检测到我的iPhone。但是,我想要一个密码保护的连接,因为当iPhone被盗时,任何人都可以将iPhone连接到iTunes并恢复所有数据

所以我想保护自己不受此影响。。。当我的iPhone连接到iTunes时,它应该要求输入密码


有没有办法通过使用私有API或越狱API来实现这一点,或者是否有现成的应用程序可用?

iTunes使用AFC守护进程通过USB与iPhone通信。显然,要做的事情是防止这个守护进程自动启动。可以使用
launchctl
执行此操作

在设备启动时(或在iPhone连接到PC之后),您需要执行

launchctl unload /System/Library/LaunchDaemons/com.apple.afcd.plist
当您将设备连接到PC时,iTunes将显示错误信息,表示无法连接到设备。然后,您的应用程序可以要求输入密码,当密码输入正确时,您可以像这样重新启动AFC守护进程

launchctl load /System/Library/LaunchDaemons/com.apple.afcd.plist
launchctl start com.apple.afcd
这个方法的唯一问题是你需要重新启动iTunes,否则即使在你启动AFC守护进程后,他也不会检测到这个设备

更新

找到了一个合适的解决方案。有IOKit.framework API用于打开/关闭USB-

代码如下:

//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可用于开发这样的应用程序。所以我发誓,这不是编程问题的主题。这完全是编程问题。我建议将开发人员的问题向上移动(有人可能只读了一半。@Victoronin谢谢你,Victor。。我现在就做。@sosborn谢谢你的建议。正如你提到的链接,它只能保护一些合理的数据,对吗?但我想保护整个连接,还需要保护我已经安装的所有应用程序。