```swift func downloadData(key: String, identityId: String) { let options = StorageDownloadDataRequest.Options(accessLevel: .protected, targetIdentityId: identityId) Amplify.Storage.downloadData( key: key, options: options, progressListener: { progress in print("Progress: \(progress)") }, resultListener: { (event) in switch event { case let .success(data): print("Completed: \(data)") case let .failure(storageError): print("Failed: \(storageError.errorDescription). \(storageError.recoverySuggestion)") } }) } ``` ```swift var progressSink: AnyCancellable? var resultSink: AnyCancellable? func downloadData(key: String, identityId: String) { let options = StorageDownloadDataRequest.Options(accessLevel: .protected, targetIdentityId: identityId) let storageOperation = Amplify.Storage.downloadData(key: key, options: options) progressSink = storageOperation.progressPublisher.sink { progress in print("Progress: \(progress)") } resultSink = storageOperation.resultPublisher.sink { if case let .failure(storageError) = $0 { print("Failed: \(storageError.errorDescription). \(storageError.recoverySuggestion)") } } receiveValue: { data in print("Completed: \(data)") } } ```