2012-04-12 59 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

相關問題