iOS UIFileSharingEnabled,
一、讓iOS App通過iTunes進行檔案交換Documents
讓iOS App通過iTunes進行檔案交換
有一些App需要通過使用iTunes讓使用者上傳和下載文檔。要讓iOS程式支援iTunes檔案交換其實很簡單,
只需要在程式的Info.plist裡增加一個鍵:UIFileSharingEnabled(Application 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