«`swift
import UIKit
// URL scheme for opening files
private let fileURLScheme = «your-file-url-scheme»
class OpenFilesViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Register the URL scheme with the system
URLProtocol.registerClass(FileURLProtocol.self)
// Create a button to open the file picker
let openFileButton = UIButton(type: .system)
openFileButton.frame = CGRect(x: 20, y: 100, width: 100, height: 50)
openFileButton.setTitle(«Open File», for: .normal)
openFileButton.addTarget(self, action: #selector(openFilePicker), for: .touchUpInside)
view.addSubview(openFileButton)
}
@objc func openFilePicker() {
// Create a file picker controller
let documentPicker = UIDocumentPickerViewController(documentTypes: [«public.text», «public.image», «public.audio», «public.video»], in: .import)
documentPicker.delegate = self
// Present the file picker
present(documentPicker, animated: true)
}
}
extension OpenFilesViewController: UIDocumentPickerDelegate {
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
// If the URL scheme matches, open the file in the app
guard let fileURL = urls.first, fileURL.scheme == fileURLScheme else {
showAlert(message: «Invalid file»)
return
}
// Create a file provider to access the file contents
let fileProvider = FileProvider(fileURL: fileURL)
// Open the file with the file provider
let documentViewController = DocumentViewController(fileProvider: fileProvider)
navigationController?.pushViewController(documentViewController, animated: true)
}
func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
controller.dismiss(animated: true)
}
}
«`