iOS UIPrintInteractionController printToPrinter Связь с принтером - PullRequest
0 голосов
/ 21 февраля 2019

В настоящее время я занимаюсь разработкой приложения с использованием прямой печати методом 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.

1 Ответ

0 голосов
/ 25 марта 2019

Проблема не связана с функциональностью печати iOS, а связана с реализацией плагина прямой печати. ​​
Для получения дополнительной информации см. Здесь: https://github.com/DavBfr/dart_pdf/issues/37

Это текущее использование обратного вызова и потокачто делает пользовательский интерфейс невосприимчивым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...