SwiftUI DocumentPicker: iCloud не вошел в систему и не показывает никаких документов? - PullRequest
0 голосов
/ 08 мая 2020

Я хочу разрешить пользователю загружать файл .mp3 из iCloud, где я смогу сохранить его в FirebaseStorage. Однако с помощью следующего кода я не могу выбрать какие-либо файлы в предварительном просмотре (iCloud говорит, что не выполнен вход, и нажатие кнопки входа не имеет никакого эффекта) и в симуляторе (я могу войти в систему в iCloud, но по-прежнему не показывает документов).

import SwiftUI
import MobileCoreServices
import Firebase

struct DocumentPickerTestView: View {
    @State var showDocumentPicker:Bool = false

    var body: some View {
        Button(action: {
            self.showDocumentPicker.toggle()
            }) {

                Text("Hello World")
        }.sheet(isPresented: self.$showDocumentPicker) {
            DocumentPicker()
        }
    }
}

struct DocumentPicker : UIViewControllerRepresentable {

    let docTypes = [String(kUTTypeBMP)]

    func makeCoordinator() -> DocumentPicker.Coordinator {
        return DocumentPicker.Coordinator(parent1: self)
    }

    func makeUIViewController(context: UIViewControllerRepresentableContext<DocumentPicker>) -> UIDocumentPickerViewController {
        let picker = UIDocumentPickerViewController(documentTypes: docTypes, in: .open)
        picker.allowsMultipleSelection = false
        picker.delegate = context.coordinator
        return picker
    }

    func updateUIViewController(_ uiViewController: UIDocumentPickerViewController, context: UIViewControllerRepresentableContext<DocumentPicker>) {

    }

    class Coordinator : NSObject, UIDocumentPickerDelegate {

        var parent: DocumentPicker

        init(parent1: DocumentPicker) {
            parent = parent1
        }

        func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
            print(urls)

//            let bucket = Storage.storage().reference()
//            
//            bucket.child((urls.first?.deletingPathExtension().lastPathComponent)!).putFile(from: urls.first!, metadata: nil) { (_, err) in
//                if err != nil {
//                    print(err!.localizedDescription)
//                    return
//                }
//                print("Successfully uploaded to Firebase!")
//                
//            }
        }
    }

}

Следует ли мне выполнить некоторые действия по настройке, прежде чем я смогу разрешить пользователям загружать документы? Или есть способ загрузить файлы в симулятор / предварительный просмотр, чтобы я мог проверить эту функциональность? Если это поможет, моя цель - платформа iPad. Спасибо!

...