2010-01-25 63 views
0

我正在構建一個應用程序,在這裏我們爲圖像和視頻進行更新,並想知道是否可以從Web服務下載視頻/圖像,以便將這些資產託管在iphone上的某個地方?是否可以將圖像,視頻下載到iPhone上?

也許通過curl服務或ftp?

回答

1

你可以在手機上下載任何你喜歡的東西(當然,主題是帶寬和存儲限制)。但是,只有特定格式的電影(例如m4v,而不是wmv文件)實際上可以在設備上播放。

0

是的,這是可能的,有多個地方(tmp和Documents)可以寫入文件 - 如果您將下載的文件寫入Documents目錄,該文件將在下次啓動應用程序時可用,並且甚至會在升級版本的應用程序之間持續存在。與安裝後無法更新的應用程序的Resource目錄中的文件不同,您也可以在Documents目錄中寫入和編輯文件。這對你來說會很棘手,因爲對於任何給定的文件,應用程序安裝隨附的版本(在參考資料中)是無法覆蓋或編輯的,然後是文檔中的新版本,因此您的邏輯生病需要查看如果文檔中有更新版本的內容,並播放該內容,並且在應用程序的資源目錄上進行回退。

對於下載,我建議使用可愛的所有看到我ASIHTTPRequest lib進行文件到磁盤的良好的異步/後臺下載,進度信息和帶寬限制(這是關鍵)。

http://allseeing-i.com/ASIHTTPRequest/

這樣做的其他部分要考慮的是,蘋果將拒絕過多的帶寬使用當不上無線網絡的應用程序,所以無論您需要大的下載量限制爲只能通過WiFi,或者你需要使用帶寬到約1mb /分鐘。 ASIHTTPRequest很好地完成了這個任務,雖然它不能保證不被蘋果拒絕,但它比不節流更好。

另外值得一提的是,對於流式視頻,您現在必須使用http實時流式傳輸,但如果您未在下載時播放,並且僅在稍後播放時才播放,我認爲您只需要擔心不會超出帶寬限制,使用適用的格式,並將文件寫入文檔,以便在啓動和應用程序更新之間保留文件。

2

有很多方法可以將文件從遠程服務器下載到iPhone,有些甚至只需要一行代碼。

最簡單的方法可能是:

[NSData dataWithContentsOfURL:fileURL] 

但是,這將阻止你的代碼,直到文件下載,更實用的解決方案可能是使用NSURLConnection的

NSURLRequest *request = [NSURLRequest requestWithURL:fileURL]; 
[NSURLConnection connectionWithRequest:request delegate:self]; 

而且實現委託NSURLConnection的方法

保存文件也可以用多種方法完成,最簡單的可能是:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *localFilePath = [documentsDirectory stringByAppendingPathComponent:@"newFileName.ext"]; 
[NSData writeToFile:localFilePath atomically:YES]; 

將數據保存到應用程序的文檔目錄中

相關問題