私のアプリはかなり大きいファイル(390Mb)をダウンロードしなければなりません。 ダウンロード用にTCBlopDownloadSwiftを使用しています(私はswift 2.0用に変換して正常に動作します)。 アプリが強制的に強制的にダウンロードを再開できるようにしたいと思います。 私は、アプリケーションが終了しても、ダウンロードされたデータを( "com.apple.nsurlsessiond/Downloads /" + bundleIdentifierの)キャッシュにtmpファイルとして見つけることができます。 しかし、私は使用してダウンロードのデータを取得しようとすると:アプリを強制終了するとダウンロードを再開するにはどうすればいいですか?
func dataInCacheForName (name : String) -> NSData? {
let PathToCache = (NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory , .UserDomainMask, true)[0] as NSString).stringByAppendingPathComponent("com.apple.nsurlsessiond/Downloads/" + bundleIdentifier)
let path = (PathToCache as NSString).stringByAppendingPathComponent(name)
let data = NSData(contentsOfFile: path)
print("data : \(data?.length)")
return data
}
それはnilを返しますが、ファイルがnilではありません。私はファイルを移動することができるので、私はドキュメント内のファイルを移動しようとしました。バックグラウンドダウンロードのための
-[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
-[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
-[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
無効なレジュームデータ:私はデータをダウンロードを再開しようとした場合しかし、その後、私はエラーを取得します。バックグラウンドダウンロードはhttpまたはhttpsを使用する必要があり、アクセス可能なファイルにダウンロードする必要があります。
とURLSession
(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError sessionError: NSError?)
error userInfo : Optional([:])
: Optional(Error Domain=NSURLErrorDomain Code=-3003 "(null)")
にエラーコード-3003が
をファイルに書き込むことは不可能を意味し、私は多くの記事を読んで、まだ答え
最も有望を見つけることができませんはhttps://forums.developer.apple.com/thread/24770
単にNSURLSessionを使用し、バックグラウンドタスクでファイルをダウンロードしてみませんか? – Lefteris
バックグラウンドタスクとしてファイルをダウンロードします。アプリが強制的にダウンロードを再開できるようにしたい場合:ユーザーがアプリを再起動した場合、キャッシュ内に保存されたデータを使用してダウンロードが再開されます。 – kholl
バックグラウンドのNSURLSessionタスクでは、ダウンロードはOSで処理され、アプリでは処理されません。あなたのアプリは終了/クラッシュすることができますが、ダウンロードは停止しません。 – Lefteris