バックグラウンド転送を使用してギャラリーからアセットをアップロードする最良の方法は何ですか?
「キャッチされていない例外 'NSGenericException' が原因でアプリを終了しています。理由: 'バックグラウンド セッションでのタスクのアップロードはファイルから行う必要があります」という例外が発生するため、createduploadTaskWithRequest:fromData:
では機能しないようです。例外の説明から判断すると、バックグラウンド転送はストリーミング アップロード タスクでも機能しないはずです。NSURLSession
backgroundSessionConfiguration
けっこうだ。uploadTaskWithRequest:fromFile:
ディスク上に既にあるデータをアップロードすることを考えるとき、最初に頭に浮かぶのは. しかし、NSURLSession クラス リファレンスは、このメソッドがファイルの URL でのみ機能することを示していますが、アセットの URL パスを取得すると、「assets-library://asset/...」から始まり、このパスを指定しても機能しません。
したがって、残っている唯一のオプションは、ファイルをアセット ライブラリから一時ディレクトリにコピーし、そのファイルの URL を に提供することですuploadTaskWithRequest:fromFile:
。しかし、既にアセット ファイルがディスクに保存されているため、意味がありません。何か不足していますか?
アップデート:
Tech Talks イベントで Apple エンジニアと話し、バックグラウンド NSURLSession がファイル URL のみをサポートすることを確認しました。実際、アセット ライブラリを一時ディレクトリにコピーし、そのファイルの URL を提供しuploadTaskWithRequest:fromFile:
て、バックグラウンド NSURLSession でアップロードする必要があります。ただし、この動作は将来変更される可能性があります。