背景転送を使用してギャラリーからアセットをアップロードする最良の方法は何ですか? 「:「ファイルからでなければならない背景セッションでタスクをアップロードキャッチされない例外により 『NSGenericException』、理由にアプリを終了:」NSURLSession:バックグラウンド転送によるアセットのアップロード
は、例外が発生するのでbackgroundSessionConfiguration
で作成NSURLSession
では動作しませんuploadTaskWithRequest:fromData:
ように思えます。例外の説明から判断すると、バックグラウンド転送はストリーミングアップロードタスクでは機能しません。
十分に適切です。 uploadTaskWithRequest:fromFile:
は、既にディスクに保存されているデータをアップロードすることを考えるとき、まず気になるものです。しかし、NSURLSessionクラスリファレンスは、このメソッドはファイルurlでのみ機能することを示していますが、アセットのURLパスを取得すると「assets-library:// asset/...」から始まり、このパスを指定しても機能しません。
残っている唯一のオプションは、ファイルを資産ライブラリから一時ディレクトリにコピーし、ファイルURLをuploadTaskWithRequest:fromFile:
にすることです。しかし、すでにアセットファイルがディスクに保存されているので意味がありません。 何か不足していますか?
更新:
テックトークイベントで、アップルのエンジニアと話をし、彼は背景NSURLSessionのみファイルのURLをサポートしていることを確認しました。実際には、アセットライブラリを一時ディレクトリにコピーし、そのファイルのURLをuploadTaskWithRequest:fromFile:
に渡してバックグラウンドNSURLSessionでアップロードする必要があります。 この動作は将来変更される可能性があります。
まあ、そうです。ファイルのコピーは基本的に私が今やっていることです。どのようにあなたは養子縁組で進歩していますか? –
あなたの推測は正しいと思われました。 –
@RobertGeifmanだから基本的にuploadTaskWithRequest:fromData:は動作しませんか? – marciokoko