Отмена или сброс заданий AirPrint из приложения iOS

В iOS есть функция печати, известная как AirPrint, которая не требует установки специального драйвера устройства. Мое приложение для iOS печатает данные изображения через AirPrint, но иногда очередь печати AirPrint зависает. Очередь печати AirPrint — это FIFO, и если первое задание остается по каким-либо причинам, таким как временный сбой сети, следующее задание не будет отправлено на принтер.

Таким образом, я хочу сбросить очередь печати или отменить мертвое задание в случае застревания в очереди печати. Я знаю, что мы можем отменить задания на печать в Центре печати (фоновое приложение системы печати iOS), но я хочу сделать это в своем собственном приложении iOS.

Вопросы:

(1) Можем ли мы отменить или очистить задания на печать в очереди печати приложения AirPrint из приложения iOS? (Я очень признателен, если у вас есть пример кода Swift, чтобы сделать такую ​​вещь!)

(2) Кто-нибудь знает, сколько времени требуется для истечения времени ожидания заданий печати?

Любое предложение будет приветствоваться.

Ссылка на AirPrint: https://developer.apple.com/library/archive/documentation/2DDrawing/Conceptual/DrawingPrintingiOS/Printing/Printing.html#//apple_ref/doc/uid/TP40010156-CH12-SW2< /а>


person moslee    schedule 09.01.2020    source источник


Ответы (1)


В iOS доступен пользовательский интерфейс для управления заданиями печати. Таким образом, может быть доступен API.

Если iOS-PrintJob возвращает ipp job-uri, вы можете реализовать управление заданиями печати в своем приложении. Вам нужно будет реализовать протокол ipp и поддерживать операцию Cancel-Job.

iOS использует CUPS в качестве клиента ipp. Я проанализировал поведение iOS, запустив тесты с моей собственной реализацией AirPrint. Используемый HTTP User-Agent: CUPS/2.3.4 (iOS 14.4.2; iPad8,3) IPP/2.0

iOS заботится только об успешной отправке задания на печать. Однако он запрашивает состояние задания с помощью операции Get-Job-Attributes. Было бы разумно, если бы iOS представила пользовательский интерфейс, который позволяет пользователю отслеживать (и контролировать) задание на печать. Мы должны отправить запрос об ошибке или функцию для iOS @Apple.

iOS также запрашивает состояние принтера. В моих тестах, когда я останавливаю свой сервер AirPrint, я получаю уведомление о том, что принтер находится в автономном режиме, и мне предоставляется возможность отменить или повторить попытку.

Когда состояние принтера «остановлено» и причина «приостановлена», центр печати доступен!

Резюме: Мониторинг и управление заданиями доступны через центр печати. От реализации AirPrint зависит, появится ли центр печати.

person IPP Nerd    schedule 31.03.2021