Using the UIDocumentPickerViewController, is it possible to show a default service (Dropbox, Google Drive, etc) on first open like in Slack? Using the UIDocumentPickerViewController, is it possible to show a default service (Dropbox, Google Drive, etc) on first open like in Slack? ios ios

Using the UIDocumentPickerViewController, is it possible to show a default service (Dropbox, Google Drive, etc) on first open like in Slack?


Instead of using a UIDocumentPickerViewController, try using a UIDocumentMenuViewController. Here is the relevant documentation.

UIDocumentMenuViewController *documentProviderMenu =[[UIDocumentMenuViewController alloc] initWithDocumentTypes:[self UTIs]                                                     inMode:UIDocumentPickerModeImport];documentProviderMenu.delegate = self;[self presentViewController:documentProviderMenu animated:YES completion:nil];

By default, this will display apps that include a Document Provider extension (such as Dropbox, Google Drive, iCloud, etc.). So if a user has Dropbox or Google Drive installed on their device, these options would show up automatically.

You can also add custom options to the menu by calling the addOptionWithTitle:image:order:handler: method.


Swift code example:

let documentProvider = UIDocumentMenuViewController(documentTypes: ["public.image", "public.audio", "public.movie", "public.text", "public.item", "public.content", "public.source-code"], in: .import) documentProvider.delegate = selfself.present(documentProvider, animated: true, completion: nil)


This isn't specifically about Google Drive but at a past job I needed to display Facebook when Apple SDK wasn't showing me Facebook. (The edge case here was the user's Facebook account wasn't in Settings.)

So I grabbed their icon and made a custom entry.

I suspect that you could do the same here. Grab the Google Drive icon and make that a custom Document. And when the user selects it, you hand them off to Google.

This is just a guess since I've not used UIDocumentPicker. And also, it is quite hackish.