iOS UIFileSharingEnabled


一、讓iOS App通過iTunes進行文件交換Documents

讓iOS App通過iTunes進行文件交換

有一些App需要通過使用iTunes讓用戶上傳和下載文檔。要讓iOS程序支持iTunes文件交換其實很簡單,

只需要在程序的Info.plist里增加一個鍵:UIFileSharingEnabledApplication supports iTunes file sharing),賦值YES

這樣,編譯之后進行機上運行的時候,連接設備到iTunes,就能進行文件交換了。

如果是在iOS Simulator中進行測試,可以把文件放到應用程序的“用戶目錄”的“Documents”下。要知道用戶目錄在OSX下的路徑,

可以NSLog(@"%@", NSHomeDirectory());運行一下就知道了,

用戶家目錄在OSX下的路徑類似這個:

/Users/venj/Library/Application Support/iPhone Simulator/4.3.2/Applications/158C149B-FF57-4C62-AEDB-DFB7A3BD8AFB

我做了一個簡單的程序進行測試,在Simulator中運行的時候,把文件放到用戶目錄下,下圖是用戶目錄在OSX下的內容,

把文件放到Documents下就可以了:

然后在程序中測試文件有沒有成功被程序識別:

   

NSFileManager *manager = [NSFileManager defaultManager];    NSString *dbPath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"db.sqlite"];

    if ([manager fileExistsAtPath:dbPath]) {        self.navigationItem.title = @"Ready To Go";    }    else {        self.navigationItem.title = @"No DB File";    }

下面是程序在添加文件前后的運行情況:

 

二、App與iTunes文件傳輸的方法和對iOS App文件結構的說明

就像很多iOS上面的播放器App一樣,本文編寫一個程序可以通過iTunes往里面放文件,比如編寫一個音樂播放器程序,通過itune往里面放歌曲文件,然后通過這個App來播放這首歌曲,首先我創建了一個普通的SingleView程序,叫做FileShareDemo。下面是通過iTunes往App傳輸文件的截圖:

可以看到像GPlayer,AcePlayer播放器,視頻資源通過這種方式傳輸是很普遍的(很多蘋果用戶確實不知道這樣可以傳輸數據),這里我創建了一個App叫做FileShareDemo,可以看到,也可以往里面拖拽數據,這里拖拽了一首歌2.mp3,但是默認情況下創建的App是不可以出現在左邊欄的,需要按下圖在plist里面加一行:

接下來的工作是判斷有沒有導入進去,下面的代碼我寫在了viewdidload里:

 NSFileManager *manager=[NSFileManager defaultManager];

NSString *path=[[NSHomeDirectory() stringByAppendingPathComponent:@”Documents”] stringByAppendingPathComponent:@”2.mp3″];

if ([manager fileExistsAtPath:path]) {

showLabel.text=@”have file”;

}else {

showLabel.text=@”have no file”;

}

NSLog(@”NSHomeDirectory %@”,NSHomeDirectory());

 這里有幾點要說明,首先NSHomeDirectory()打印出來是

/var/mobile/Applications/8F01293C-C02D-4EF8-A9F7-1A7B10944F33

這個是程序的路徑,8F01293C-C02D-4EF8-A9F7-1A7B10944F33是每個App獨特的標記,比如憤怒的小鳥會是另一串信息,具體干嘛的不清楚。然后我在后面添加了/Documents和/2.mp3,通過[manager fileExistsAtPath:path]來判斷這個路徑存不存在,用一個label打印出來。如果拖拽進去了可以看到label的內容是“have file”,通過程序運行的label信息可以看到/var/mobile/Applications/8F01293C-C02D-4EF8-A9F7-1A7B10944F33/Documents/2.mp3就是導入的文件的路徑。

之后我們可以通過這段代碼來播放歌曲:

 NSError* err;

player = [[AVAudioPlayer alloc]

initWithContentsOfURL:[NSURL fileURLWithPath:path]

error:&err ];

player.volume=0.7;

[player play];

之前的path直接在這里可以用。

下面再次補充一下文件的結構問題:

每個程序都會包含這幾個文件,Documents就是iTunes導入的文稿存儲的地方,FileShareDemo是Xcode項目包,如果通過Xcode往項目里放素材什么的都在這里,后兩個不知道有什么具體作用。

特別提醒:

如果app不涉及文檔的上傳和下載,Application supports iTunes file sharing應設置為NO或刪除此key,否則會被拒.

 

參考鏈接:

https://my.oschina.net/hmj/blog/112592


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM