Могу ли я использовать действия Firebase в фоновом режиме приложения (когда приложение закрыто), iOS, Swift - PullRequest
0 голосов
/ 07 апреля 2019

Я хотел бы загрузить изображение и некоторые данные в Firebase Storage и Firebase Firestore. У меня весь код работает, но когда я покидаю приложение, загрузка останавливается. Есть ли какой-нибудь способ сохранить задачу в фоновом режиме?

Я знаю, что это возможно с URLSession, но я не знаю, как это сделать с помощью Firebase.

Резюме:

Я хотел бы загрузить данные в Firebase в фоновом режиме (когда приложение закрыто) в Swift.

Заранее спасибо!

1 Ответ

0 голосов
/ 07 апреля 2019

Казалось, этот код работает:

class PhotoUploadManager {
  static var urlSessionIdentifier = "photoUploadsFromMainApp"  // Should be changed in app extensions.
  static let urlSession: URLSession = {
    let configuration = URLSessionConfiguration.background(withIdentifier: PhotoUploadManager.urlSessionIdentifier)
    configuration.sessionSendsLaunchEvents = false
    configuration.sharedContainerIdentifier = "my-suite-name"
    return URLSession(configuration: configuration)
  }()

  // ...

  // Example upload URL: https://firebasestorage.googleapis.com/v0/b/my-bucket-name/o?name=user-photos/someUserId/ios/photoKey.jpg
  func startUpload(fileUrl: URL, contentType: String, uploadUrl: URL) {
    Auth.auth().currentUser?.getIDToken() { token, error in
      if let error = error {
        print("ID token retrieval error: \(error.localizedDescription)")
        return
      }
      guard let token = token else {
        print("No token.")
        return
      }

      var urlRequest = URLRequest(url: uploadUrl)
      urlRequest.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
      urlRequest.setValue(contentType, forHTTPHeaderField: "Content-Type")
      urlRequest.httpMethod = "POST"
      let uploadTask = PhotoUploadManager.urlSession.uploadTask(with: urlRequest, fromFile: fileUrl)
      uploadTask.resume()
    }
  }
}

Спасибо @Gagan_iOS! Источник: https://github.com/firebase/firebase-ios-sdk/issues/147

...