2012-04-12 89 views
3

我想从Windows(c#)将文件推送到iPad并稍后恢复。我没有网络连接,所以我需要通过USB电缆进行连接。如何使用C#访问iOS应用程序的Documents文件夹

我已经找到Manzana,但似乎不支持iTunes FileSharing。

任何提示?我GOOGLE了很多,但找不到任何有用的东西。

有一些功能,如“AMDeviceStartHouseArrest”,但我不知道如何使用它们来获取我的文件。

+4

AFAIK不可能 – 2012-04-12 10:16:43

回答

5

有一种方法可以完成此操作。

感谢来自Simon的博客(http://blog.victornet.de/2011/04/10/c-manzana-iphoneipad-hausarrest/)和一些邮件,它终于工作。

现在,我使用曼扎纳与西蒙展开:

MobileDevice.AMDeviceStartHouseArrestService(iPhoneHandle,  
MobileDevice.CFStringMakeConstantString(bundleIdentifier), null, ref hService, 0); 

启动“Housearrest”为特定的应用程序(由bundleIdentifier)使得它的“/文档”文件夹通过默认曼扎纳方法访问。所以没有必要越狱iDevice。最后,我可以将文件推送到iDevice并将其读回。

再次感谢西蒙的大力支持!

+0

如果您仍在身边,我的问题是您的解决方案无法正常工作。我已经定义了方法public static extern unsafe int AMDeviceStartHouseArrestService(void * device,void * identifier,void * unknown,ref void * handle,uint what);但是,当我要求一个目录列表,它的行为就像我在媒体/而不是文档/。你有什么建议吗? – David 2013-08-26 18:23:55

+0

我已经快速浏览了我使用过的代码。以下方法用于将名为“somefilename.ext”的路径为'targetPath'的文件写入devices文件夹。我希望你可以复制它(厌倦标记),它会回答你的问题。随时跟进。 'string pathOnDevice = @“/ Documents/somefilename.ext”; ... public bool readFromDevice(string targetPath) if(_myIP.ReConnect(“com.bundle.identifier”)) Console.WriteLine(“## Some debug output”); else return false; _myIP.getFile(_myIP,pathOnDevice,targetPath); 返回true; }' – phhe 2013-08-26 21:54:25

+1

感谢您的回复。对于后人,我在GitHub上分发了这个库,并发布了一个使用软禁服务将目录推送到应用程序沙箱(而不是媒体文件夹)的示例。 https://github.com/ImagineLearning-Public/MobileDevice – David 2013-08-27 22:36:48

0

林不知道你在问什么。如果您想访问ipad上的标准文件,可将其设置为USB大容量存储设备。我相信如果你传递正确的路径,标准的IO方法(System.IO)就可以读写设备。如果您正在讨论访问应用程序文件,我不相信这是可能的,因为iOS的安全问题(至少不是以标准的,非越狱的方式)

+0

我正在谈论一个符合SDK的方式:iTunes文件共享访问应用程序的文档 - 文件夹。我在itunesmobiledevice.dll和提到的'HouseArrest'上找到了一些有希望的信息,这似乎是该文件共享服务的内部名称。我会尽快回复... – phhe 2012-04-17 15:03:33

相关问题