我一直在使用托管的应用内可购买内容,但遇到了问题。我已经能够下载内容等,但有时会遇到错误。这是我用来访问下载的代码:
if let hostedContentPath = contentURL?.appendingPathComponent("Contents", isDirectory: true) {
do {
try FileManager().moveFileToLibrary(hostedPath: hostedContentPath)
onSuccess(contentIdentifier)
} catch let err as NSError {
onError(contentIdentifier, err)
}
}
}
此代码是 StoreKit 提供的 SKDownload 对象扩展的一部分。我有 FileManager 的扩展名:
func moveFileToLibrary(hostedPath: URL) throws {
let fileManager = FileManager.default
let files = try fileManager.contentsOfDirectory(atPath: hostedPath.relativePath)
for file in files {
let sourcePath: URL = hostedPath.appendingPathComponent(file)
var destinationPath: URL = fileManager.getLibraryPath(folders: [file])
if fileManager.fileExists(atPath: destinationPath.path) {
print("[FileManager] File already present")
return
}
// Move file to Library
try fileManager.moveItem(at: sourcePath, to: destinationPath)
// Set removal from backup
var resourceValues = URLResourceValues()
resourceValues.isExcludedFromBackup = true
try destinationPath.setResourceValues(resourceValues)
print("[FileManager] File moved")
}
}
getLibraryPath
只需返回应用程序库目录中的应用程序内下载路径。但有时我会收到错误消息:'文件夹“目录”不存在'。但是,下载已经完成。以前有人处理过这个问题吗?我处理错了吗?
非常感谢,
布伦丁
编辑:当 SKDownload 的下载状态失败时,我经常会收到此错误:'“mzafbenc.16634573027684271354”无法移动到“StoreKit”,因为已经存在同名项目'。有谁知道这是相关的还是我可以解决的问题?