iOS UIFileSharingEnabled,

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.