5

バックグラウンド転送を使用してギャラリーからアセットをアップロードする最良の方法は何ですか?

「キャッチされていない例外 'NSGenericException' が原因でアプリを終了しています。理由: 'バックグラウンド セッションでのタスクのアップロードはファイルから行う必要があります」という例外が発生するため、createduploadTaskWithRequest:fromData:では機能しないようです。例外の説明から判断すると、バックグラウンド転送はストリーミング アップロード タスクでも機能しないはずです。NSURLSessionbackgroundSessionConfiguration

けっこうだ。uploadTaskWithRequest:fromFile:ディスク上に既にあるデータをアップロードすることを考えるとき、最初に頭に浮かぶのは. しかし、NSURLSession クラス リファレンスは、このメソッドがファイルの URL でのみ機能することを示していますが、アセットの URL パスを取得すると、「assets-library://asset/...」から始まり、このパスを指定しても機能しません。

したがって、残っている唯一のオプションは、ファイルをアセット ライブラリから一時ディレクトリにコピーし、そのファイルの URL を に提供することですuploadTaskWithRequest:fromFile:。しかし、既にアセット ファイルがディスクに保存されているため、意味がありません。何か不足していますか?

アップデート:

Tech Talks イベントで Apple エンジニアと話し、バックグラウンド NSURLSession がファイル URL のみをサポートすることを確認しました。実際、アセット ライブラリを一時ディレクトリにコピーし、そのファイルの URL を提供しuploadTaskWithRequest:fromFile:て、バックグラウンド NSURLSession でアップロードする必要があります。ただし、この動作は将来変更される可能性があります。

4

1 に答える 1