我正在为客户研究一个潜在的应用程序,但我有一个问题无法找到答案。我想做的是自动打印,而不显示 UIPrintInteractionController
。我应该指出的重要一点是,这不会成为生产应用程序。我知道否则这可能会侵犯用户的隐私,未经用户同意就打印,但同样这不会成为 App Store 上的公共(public)应用程序。我发现一款似乎能够做到这一点的应用程序是 Printer Pro
。系统会提示用户打印测试页,并且页面打印时没有 UIPrintInteractionController
出现 - 这个应用程序在商店中,所以我假设有一种合法的方式来做到这一点。有人知道这是怎么做到的吗?
最佳答案
据我所知,如果不调用 UIPrintInteractionController
并显示系统打印对话框,就无法在 iOS7 中进行打印。
但是,iOS8 现在提供了直接打印到打印件而不显示对话框的规定。基本思想是您获得一个 UIPrinter
对象,并将其与 UIPrintInteractionController
的新 - printToPrinter:completionHandler:
方法结合使用以打印不显示对话框。
可以通过多种方式为您的打印机获取 UIPrinter
对象。
最直接的方法是使用新的 UIPrinterPickerController
。但这会显示一个对话框,因此不符合您的需求。
替代方法是使用 UIPrinter
方法通过其 URL 创建打印机
+ printerWithURL:
。我不完全清楚如何获取此 URL,但它可能包含在打印机的 HTML 管理页面中。我相信您可以使用 Bonjour API 以编程方式获取它。更多信息在这里:
Bonjour 是一种服务发现 API,其中包括 IPP 打印机的发现,这是 AirPrint 使用的协议(protocol)。
至于 Printer Pro 应用程序如何能够在 iOS7 中不使用对话框进行打印,我猜想它们是在非常低的级别上与打印机进行交互(例如原始 HTTP 帖子等)。
关于iphone - iOS 打印不允许 UIPrintInteractionController 出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145724/