#ios #swift #iphone
#iOS #swift #iPhone
Вопрос:
У меня есть старая карта памяти (или инструмент, который работает так же) со старой файловой системой (fat12).На этом устройстве есть несколько файлов, сохраненных в формате pdf, png или любом другом, не имеет значения. Целью приложения должно быть считывание всех файлов с устройства, подключенного через адаптер порта lightning, загрузка файлов и сохранение их, чтобы либо просмотреть их через приложение, либо загрузить их куда-нибудь. (Аналогично встроенному приложению files от Apple).
Первая проблема, с которой я сталкиваюсь, — как мне проверить, подключено ли что-то к моему iPhone? Я видел поток, в котором предлагается проверить, заряжается ли телефон, что, к сожалению, не работает, потому что gadged не заряжает телефон, пока он подключен.
Один из подходов, который был опробован, заключался в работе с UIDocumentPicker. Это сработало, поскольку я мог получить доступ к файлам с usb, но проблема здесь в том, что я не хочу, чтобы пользователь мог просматривать все файлы на телефоне, только через файлы, подключенные к адаптеру lightning, и это должно происходить автоматически, когда пользователь подключает телефон и нажимает на кнопку.Кнопка «Загрузить файлы».
У меня не так много кода, который я могу показать, только четыре строки касаются UIDocumentPicker:
@IBAction func getFilesButtonClicked(_ sender: Any) {
let documentPicker =
UIDocumentPickerViewController(documentTypes: ["public.data"],
in: .open)
documentPicker.delegate = self
documentPicker.modalPresentationStyle = .fullScreen
self.present(documentPicker, animated: true, completion: nil)
}
Комментарии:
1. Приложение не может напрямую обращаться к устройству через порт lightning, если устройство не сертифицировано mfi и не связано с вашим приложением. Вы должны использовать контроллер просмотра средства выбора документов, или пользователь может использовать приложение files.
Ответ №1:
Существует внешняя среда для аксессуаров, в руководстве по программированию указано, что можно получать уведомления о подключении или отключении аксессуара.