【问题标题】:A background URLSession with identifier already exists具有标识符的后台 URLSession 已存在
【发布时间】:2019-05-14 19:19:43
【问题描述】:

我有一个 S3Service,它是一个管理所有与 S3 相关的上传和下载的单例。 当我上传第一张图片时,它工作正常,但如果我尝试连续上传一张图片,它会给我这个警告,并且永远不会调用完成块。

标识符为 com.amazonaws.AWSS3TransferUtility.Identifier.TransferManager 的后台 URLSession 已存在。

这是我上传方法的样子:

if let data = image.jpegData(compressionQuality: 0.5) {
        let transferUtility = AWSS3TransferUtility.s3TransferUtility(forKey: S3Service.TRANSFER_MANAGER_KEY)
        transferUtility.uploadUsingMultiPart(data: data, bucket: EnvironmentUtils.getBucketName(), key: filename, contentType: "image/jpg", expression: nil, completionHandler: { task,error in

            if let error = error {
                print(error.localizedDescription)
            } else {
                print("Image upload success")
            }
        })
}

【问题讨论】:

  • 你的单身财产是什么样的?
  • @CalebKleveter 在上传方法、注册 AWSS3 Transfer 实用程序的方法和注销它的方法中有上述代码。

标签: swift amazon-s3 nsurlsession awss3transferutility aws-sdk-ios


【解决方案1】:

对注册转移实用程序AWSS3TransferUtility.register(with: serviceconfig, forKey: KEY) 的调用导致了上述问题。有两点需要牢记。

  • AWSS3TransferUtility 在每个应用程序会话中只能注册一次。然后我们可以使用AWSS3TransferUtility.S3TransferUtilityForKey 在任何需要的地方获取实例。

  • 如果这些是针对应用程序内的不同用户(例如注册),并且如果我们想为每个用户保留AWSS3TransferUtility,请使用不同的密钥注册AWSS3TransferUtility(最好使用相同的密钥)同一用户)并使用该键查找。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-15
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    相关资源
    最近更新 更多