Я реализовал привод icloud с помощью swift. код выглядит хорошо, как указано в официальном документе, и отлично загружает / скачивает файлы с одного устройства. Теперь при загрузке файла на другое устройство с тем же пользователем облака. невозможно найти файл на этом устройстве. теперь через некоторое время я отключил / включил icloud из настроек облака устройства, затем попытался снова, и он заработал (теперь нашел файл на этом устройстве).
, поэтому здесь возникает несколько вопросов, касающихся этого ниже.
- isloud не синхронизирует c файлы мгновенно между устройствами (если нет, то как мы можем синхронизировать c файлы между устройствами мгновенно)
- есть ли способ уведомить устройство о синхронизации c новые созданные файлы в облаке?
- в настоящее время скопированные файлы в облачный документ, отсутствующий на cloud.com. Итак, как мы можем показать / скрыть скопированные файлы на icloud?
вот код для загрузки / скачивания файлов:
копирование файла в облако
if let cloudURL = FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents") {
let file = cloudURL.appendingPathComponent("file.txt")
if (FileManager.default.fileExists(atPath: file.path, isDirectory: nil)) {
do{
try FileManager.default.removeItem(at: file)
}catch let error as NSError {
print("error",error)
}
}
let localDocumentsURL = DocumentsDirectory.localDocumentsURL.appendingPathComponent("file.txt")
do {
try FileManager.default.copyItem(at: localDocumentsURL, to: file)
} catch let error as NSError{
print("can not copy file",error)
}
}
скачать файл из облачного каталога
let fileManager = FileManager.default
if let cloudURL = fileManager.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents") {
let file = cloudURL.appendingPathComponent("file.txt")
do{
var downloded = false
try fileManager.startDownloadingUbiquitousItem(at: file)
while(!downloded){
if(fileManager.fileExists(atPath: file.path, isDirectory: nil)){
downloded = true
}
}
let filePath = DocumentsDirectory.localDocumentsURL.appendingPathComponent("file.txt")
try fileManager.copyItem(at: file, to: filePath)
}catch let error as NSError {
print("error",error)
}
}