4

そのためにGoogleドライブやOneドライブのクラウドサービスからファイルを選択したい 利用しているUIDocumentPickerViewController

ここに画像の説明を入力

元:

func didPressOneDriveChoose() {
    let importMenu = UIDocumentPickerViewController(documentTypes: [(kUTTypePDF as String), (kUTTypeJPEG as String), (kUTTypePNG as String)], in: .import)
    importMenu.delegate = self
    importMenu.modalPresentationStyle = .formSheet
    self.show(importMenu, sender: nil)
}

デリゲート メソッドでコールバックを受け取りました:

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

    var arrFiles = [Dictionary<String, AnyObject>]()
    for url in urls {
        // returns local document directory URL
        // needs original GoogleDrive or OneDrive URL
    }
}

しかし、ユーザーが選択したクラウド サービスを取得する方法はありますか? また、その URL を指す元の URL が必要ですか? 現在、クリックでそのファイルをダウンロードした後、ローカル ドキュメント ディレクトリの URL を返します。

4

2 に答える 2

3

次のように初期化します。

let importMenu = UIDocumentPickerViewController(documentTypes: [(kUTTypePDF as String), (kUTTypeJPEG as String), (kUTTypePNG as String)], in: .import)

この特定のピッカー モードに関するドキュメントを読むと、.import次のように記載されています。

URL は、選択したドキュメントのコピーを参照しています。これらのドキュメントは一時ファイルです。これらは、アプリケーションが終了するまでのみ使用できます。永続的なコピーを保持するには、これらのファイルをサンドボックス内の永続的な場所に移動します。

.openユースケースにより適しているようです。

URL は、選択したドキュメントを参照します。指定された URL はセキュリティ スコープであり、アプリのサンドボックス外のファイルを参照しています。セキュリティ スコープの外部 URL の操作の詳細については、「要件」を参照してください。

ただし、サービスを識別するために URL を監視しているだけであり、実際にこれらのドキュメントに手動でアクセスしようとしているわけではないため、要件に違反することを心配する必要はありません。したがって、UIDocumentPickerViewController初期化を次のように変更します。

let importMenu = UIDocumentPickerViewController(documentTypes: [(kUTTypePDF as String), (kUTTypeJPEG as String), (kUTTypePNG as String)], in: .open)

そして、それはうまくいくはずです!

于 2018-04-11T15:38:16.327 に答える