轉:http://www.xiaoyaoli.com/?p=368
就像很多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());
/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往項目里放素材什么的都在這里,后兩個不知道有什么具體作用。