UIPrinterPickerController, UIPrintInteractionController, UIPrinter do not work on macOS Catalyst

On iOS emulator :
  • I can select a printer from the UIPrinterPickerController dialog and retrieve the printer

  • I can connect to that printer with UIPrinter.contactPrinter

  • I can send multiple jobs to that printer silently (no dialog) with UIPrintInteractionController

Same code or any similar code on macOS Catalyst :
  • Absolutely nothing is working. I see nothing, no dialog, no errors in the log.

Replies

Same problem here. I guess Apple forgot about Catalyst printing functionality. Our office app does not print on macOS, but it does on iPhone???

On Mac Catalyst, always use UIPrintInteractionController to present a print dialog. This is bridged to the Mac print dialog.

The Mac print dialog already includes its own Mac-style UI to select the printer, so showing a separate printer picker dialog is not necessary.

In fact, the UIPrinter and UIPrinterPickerController APIs are only shims, and they are mostly ignored in Catalyst. Do not attempt to print silently to a UIPrinter instance.

Apple please implement in Mac Catalyst apps like with iOS… There are proper use cases where the user has already selected a printer and we don’t want to keep asking for which printer for subsequent prints. That being said, we need to be able to print silently to UIPrinter with a printer that was already captured/selected by the user. Please implement as a lot of us developers need this feature like in iOS!

Make sure you have "Printing" turning on in "App Sandbox".

Probably still need UIPrintInteractionController, though.

Yes my Printing is allowed in app sandbox.