В настоящее время я занимаюсь разработкой приложения с использованием прямой печати методом UIPrintInteractionController
printToPrinter
, но когда я запускаю заказ на печать, появляется всплывающее сообщение:
Печать на «my-printer».local. "
Обращение к принтеру ...
Но у меня нет принтера на принтере, и приложение зависло в этом всплывающем окне (нажмите кнопку" Отмена ", ничего не делайте).
Вот мой метод печати:
- (void)directPrint:(nonnull NSString*)name withPrinter:(NSURL*)printerURL {
UIPrintInteractionController* controller = [UIPrintInteractionController sharedPrintController];
[controller setDelegate:self];
UIPrintInfo* printInfo = [UIPrintInfo printInfo];
printInfo.jobName = name;
printInfo.outputType = UIPrintInfoOutputGeneral;
controller.printInfo = printInfo;
renderer = [[PdfPrintPageRenderer alloc] init:channel];
[controller setPrintPageRenderer:renderer];
UIPrintInteractionCompletionHandler completionHandler =
^(UIPrintInteractionController* printController, BOOL completed, NSError* error) {
NSLog(@"Handler completed: %d", completed);
if (!completed && error) {
NSLog(@"FAILED! due to error in domain %@ with error code %u", error.domain, (unsigned int)error.code);
}
self->renderer = nil;
};
UIPrinter* printer = [UIPrinter printerWithURL:printerURL];
BOOL status = [controller printToPrinter:printer completionHandler:completionHandler];
NSLog(@"Print status: %d", status);
}
* printerURL
исходит из UIPrinterPickerController
presentAnimated
метода.
status
переменная true
.
Я пытался использовать iPhone Simulator + Printer Simulator, вот журналы принтера для одного вызова метода:
[21/Feb/2019:14:40:49 +0100] [Client 46] Accepted connection from 192.168.1.131:57092 (IPv4)
[21/Feb/2019:14:40:49 +0100] [Client 46] Encrypting connection.
[21/Feb/2019:14:40:49 +0100] [Client 46] Connection from 192.168.1.131 now encrypted.
[21/Feb/2019:14:40:49 +0100] [Client 47] Accepted connection from 192.168.1.131:57093 (IPv4)
[21/Feb/2019:14:40:49 +0100] [Client 47] Encrypting connection.
[21/Feb/2019:14:40:49 +0100] [Client 47] Connection from 192.168.1.131 now encrypted.
ПРИМЕЧАНИЕ 1: печать с использованием UIPrintInteractionController
presentAnimated
отлично работает (с помощью симулятора или реального устройства).
ПРИМЕЧАНИЕ 2: следующий код используется внутри плагина Flutter.