Tha*_*mes 11 ios swift firebase-storage
火力地堡存储声称这里的iOS版的文件,它
无论网络质量如何,都会执行上传和下载.上传和下载非常强大,这意味着它们会在停止的地方重新启动
所以人们会期望它在上传时处理连接丢失,但似乎没有.
使用iOS中的以下Swift代码,我可以在有连接时执行上传,但如果设备没有连接或者它与网络断开连接,则会进入故障状态.
let storage = FIRStorage.storage().referenceForURL("VALID_URL_REMOVED")
let imagesRef = storage.child("images/test.jpg")
let data = UIImageJPEGRepresentation(observationImage!, 0.7);
let uploadTask = imagesRef.putData(data!, metadata: nil)
uploadTask.observeStatus(.Progress) { snapshot in
    // Upload reported progress
    if let progress = snapshot.progress {
        let percentComplete = 100.0 * Double(progress.completedUnitCount) / Double(progress.totalUnitCount)
        print("percent \(percentComplete)")
    }
}
uploadTask.observeStatus(.Success) { snapshot in
    // Upload completed successfully
    print("success")
}
uploadTask.observeStatus(.Failure) { snapshot in
    print("error")
    print(snapshot.error?.localizedDescription)
}
此代码的调试输出如下.
/*
percent 0.0
percent 0.0044084949781492
2016-06-30 11:49:16.480 Removed[5020:] <FIRAnalytics/DEBUG> Network status has changed. Code, status: 1, Disconnected
percent 0.0044084949781492
error
Optional("An unknown error occurred, please check the server response.")
*/
Firebase的实时数据库离线存储也使用以下代码进行设置,但我不确定这是否相关.
FIRDatabase.database().persistenceEnabled = true
我还尝试使用以下行手动设置此问题的答案中提到的超时,没有任何更改.
let config = FIRStorage()
config.maxUploadRetryTime = 1000000
有没有办法让它处理这些断开连接而不从头开始实现功能?我错过了什么吗?
你们缺少观察者。现在您只能观察到 .success 和 .failure 事件。尝试为 .resume、.pause、.progress 添加观察者来处理不同的事件。
// Listen for state changes, errors, and completion of the upload.
uploadTask.observe(.resume) { snapshot in
// Upload resumed, also fires when the upload starts
}
uploadTask.observe(.pause) { snapshot in
// Upload paused
}
uploadTask.observe(.progress) { snapshot in
// Upload reported progress
let percentComplete = 100.0 * Double(snapshot.progress!.completedUnitCount)
/ Double(snapshot.progress!.totalUnitCount)
}
uploadTask.observe(.failure) { snapshot in
if let error = snapshot.error as? NSError {
switch (FIRStorageErrorCode(rawValue: error.code)!) {
case .objectNotFound:
  // File doesn't exist
  break
case .unauthorized:
  // User doesn't have permission to access file
  break
case .cancelled:
  // User canceled the upload
  break
/* ... */
case .unknown:
  // Unknown error occurred, inspect the server response
  break
default:
  // A separate error occurred. This is a good place to retry the upload.
  break
  }
 }
}
| 归档时间: | 
 | 
| 查看次数: | 976 次 | 
| 最近记录: |