私のアプリの機能の 1 つは、mp4 ファイルをダウンロードしてローカルの電話アルバムに保存することです。
それ以来、いくつかのアプローチを試しましたが、結果は常に同じです。シミュレーターでは機能しましたが、実際の iPhone では機能しませんでした。Xcode はバージョン 5.0.1、iPhone 4 です。
以下は、ASIHttpRequest ライブラリを使用してここに投稿する前に最後の試行で適用したコードであり、結果は同じです。シミュレーターでは機能しましたが、電話自体では機能しませんでした。
ダウンロード:
ASIHTTPRequest* request = [ASIHTTPRequest requestWithURL:url]; // url is the address to the mp4 file NSString* filePath = [NSString stringWithFormat:@"%@%@", NSTemporaryDirectory(), filename]; //filename is the file I save to, e.g. xxx.mp4 [request setDownloadDestinationPath:filePath]; [request setDelegate:self]; [request setDidFinishSelector:@selector[ASIRequestDone:)]; [request setDidFailSelector:@select[ASIRequestFail:)];
ダウンロードが終わったらフォトアルバムに保存(
ASIRequestDone
デリゲート中)if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(filePath)) { //comes to here when running in simulators UISaveVideoAtPathToSavedPhotosAlbum(filePath, self, @selector(video:didFinishSavingWithError:cotextInfo:),nil); } else { //always comes to here when running on the actual iPhone. }
pathFile を確認しました。これです
/private/var/mobile/Applications/xxxxxxxxxx/tmp/xxxxx.mp4
これは私には問題ありません。私が得ていないのは、シミュレーターで実行すると正常に動作するため、次に何をすべきかわからないということです。(写真アルバムへのアクセス許可も確認しましたが、アプリには許可されています)。
また、互換性のチェックを削除しようとし、メソッドに直接進みましたがUISaveVideoAtPathToSavedPhotosAlbum
、デリゲートでエラーはスローされませんでしたdidFinishSavingWithError
。ただし、ビデオはフォトアルバムにも表示されませんでした. 電話はビデオがアルバムに表示される互換性がないと言っているように見えるので、それは正しいと思います. 繰り返しますが、私の問題は、シミュレーターで動作し、実際の iPhone でこれを修正するにはどうすればよいかということです。たとえば、ビデオに互換性がないと考えるのはなぜですか? mp4自体と関係がありますか、それともダウンロード段階で関係がありますか? 問題を解決するために次に何ができますか? (ps。私はmp4ファイルも管理しています。あなたが知っているiphoneでのmp4互換性のリストはありますか?ファイルが電話で互換性がないのはおそらく本物だと思います(しかしシミュレーターでは!?))