I am building a file picker using UIDocumentPickerViewController and I want to pick the following file types only (others needs to be disabled),
- doc
- docx
- gdoc (Google doc file format)
- txt
- rtf
The code I have so far is as follows,
import UIKit
import MobileCoreServices
class DocumentPickerVC: UIViewController {
@IBAction func btnLocalTapped(sender: UIButton) {
let types: [String] = [kUTTypeText as String, kUTTypePDF as String, "com.microsoft.word.doc", "org.openxmlformats.wordprocessingml.document"]
let documentPicker = UIDocumentPickerViewController(documentTypes: types, in: .import)
documentPicker.delegate = self
documentPicker.modalPresentationStyle = .formSheet
documentPicker.allowsMultipleSelection = true
self.present(documentPicker, animated: true, completion: nil)
}
}
extension DocumentPickerVC: UIDocumentPickerDelegate {
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
// you get from the urls parameter the urls from the files selected
for url in urls {
print(url)
}
}
}
I can't seem to figure out what is the UTCoreType for Google docs.
I went through the list found here https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html, but no luck.
As a second attempt to find the UTCoreType I tried the following,
Made all the files unlocked for the picker by changing the types as follows,
let types = [kUTTypeItem as String]
Downloaded file using the picker and moved it to the documents directory
Enabled iTunes file sharing and made a copy to my desktop
Ran the 'mdls' tool against the file
Command:
$ mdls doc2.gdoc
Output:
kMDItemContentCreationDate = 2018-10-15 23:07:02 +0000
kMDItemContentCreationDate_Ranking = 2018-10-15 00:00:00 +0000
kMDItemContentModificationDate = 2018-10-15 23:07:05 +0000
kMDItemContentType = "dyn.ah62d4rv4ge80s3dtqq"
kMDItemContentTypeTree = (
"dyn.ah62d4rv4ge80s3dtqq",
"public.data",
"public.item"
)
kMDItemDateAdded = 2018-10-15 23:07:12 +0000
kMDItemDateAdded_Ranking = 2018-10-15 00:00:00 +0000
kMDItemDisplayName = "doc2.gdoc"
kMDItemFSContentChangeDate = 2018-10-15 23:07:05 +0000
kMDItemFSCreationDate = 2018-10-15 23:07:02 +0000
kMDItemFSCreatorCode = ""
kMDItemFSFinderFlags = 0
kMDItemFSHasCustomIcon = (null)
kMDItemFSInvisible = 0
kMDItemFSIsExtensionHidden = 0
kMDItemFSIsStationery = (null)
kMDItemFSLabel = 0
kMDItemFSName = "doc2.gdoc"
kMDItemFSNodeCount = (null)
kMDItemFSOwnerGroupID = 20
kMDItemFSOwnerUserID = 501
kMDItemFSSize = 16848
kMDItemFSTypeCode = ""
kMDItemInterestingDate_Ranking = 2018-10-15 00:00:00 +0000
kMDItemKind = "Document"
kMDItemLogicalSize = 16848
kMDItemPhysicalSize = 20480
- Tried out the kMDItemContentType of the file but didn't work
Right now I'm out of ideas. Any thoughts?