Получение списка доступных принтеров AirPrint

Я хотел бы показать список со всеми принтерами, доступными для устройства через AirPrint.

Я работаю с использованием UIPrinterPickerController.

Есть ли способ отображения этого PickerController нестандартным способом, скажем, для передачи данных в UITableView?

Также обратите внимание, что я планирую использовать это приложение на iPad, который поддерживает только UIPrinterPickerController.presentFromRect(CGRect)

Вот как это выглядит сейчас. Вместо этого всплывающего окна должно быть UITableView

Всплывающее окно принтера


person smnk    schedule 15.08.2016    source источник
comment
Мне интересно, можете ли вы с помощью printerPickerController:shouldShowPrinter: получить все UIPrinter, так как он должен вызываться для каждого принтера. Возможно, вам придется вызвать показ UIPrinterPickerController (и скрыть его, или в невидимой части экрана быстро закрыть, я не знаю, когда должен вызываться метод делегата, т.е. если ячейка будет показывать, или уже установлена) в порядок вызова предыдущего метода UIPrinterPickerControllerDelegate.   -  person Larme    schedule 01.09.2016


Ответы (1)


NSNetServiceBrowser именно для этого.

Вкратце, что вам нужно сделать, это:

1) установите объект как NSNetServiceBrowserDelegate 2) создайте объект NSNetServiceBrowser 3) назначьте делегата 4) используя browserObject.searchForServices(ofType: "_printer._tcp.", inDomain: "") получите различные отзывы делегату.

Простой тест с моей стороны получил:

didFind: Samsung C460 Series (SEC001174EDCB63)

для метода делегата:

func netServiceBrowser(_ browser: NetServiceBrowser, didFind service: NetService, moreComing: Bool) {
    print("didFind: \(service.name)")
}
person Adrian Sluyters    schedule 02.09.2016
comment
Это выглядит хорошо до сих пор. Однако проверить смогу только на следующей неделе, так как у меня самого нет принтеров AirPrint. - person smnk; 03.09.2016
comment
Для тех, кто, как и я, пытался понять этот ответ без хорошего знания объективного-c/swift, имейте в виду, что это объясняется более подробно в developer.apple.com/library/content/documentation/Networking/. - person Laurent Michel; 20.08.2017