iphone - iOS 打印不允许 UIPrintInteractionController 出现

标签 iphone ios ipad printing airprint

我正在为客户研究一个潜在的应用程序,但我有一个问题无法找到答案。我想做的是自动打印,而不显示 UIPrintInteractionController。我应该指出的重要一点是,这不会成为生产应用程序。我知道否则这可能会侵犯用户的隐私,未经用户同意就打印,但同样这不会成为 App Store 上的公共(public)应用程序。我发现一款似乎能够做到这一点的应用程序是 Printer Pro。系统会提示用户打印测试页,并且页面打印时没有 UIPrintInteractionController 出现 - 这个应用程序在商店中,所以我假设有一种合法的方式来做到这一点。有人知道这是怎么做到的吗?

最佳答案

据我所知,如果不调用 UIPrintInteractionController 并显示系统打印对话框,就无法在 iOS7 中进行打印。

但是,iOS8 现在提供了直接打印到打印件而不显示对话框的规定。基本思想是您获得一个 UIPrinter 对象,并将其与 UIPrintInteractionController 的新 - printToPrinter:completionHandler: 方法结合使用以打印不显示对话框。

可以通过多种方式为您的打印机获取 UIPrinter 对象。

最直接的方法是使用新的 UIPrinterPickerController。但这会显示一个对话框,因此不符合您的需求。

替代方法是使用 UIPrinter 方法通过其 URL 创建打印机 + printerWithURL:。我不完全清楚如何获取此 URL,但它可能包含在打印机的 HTML 管理页面中。我相信您可以使用 Bonjour API 以编程方式获取它。更多信息在这里:

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/NetServices/Introduction.html#//apple_ref/doc/uid/10000119i

Bonjour 是一种服务发现 API,其中包括 IPP 打印机的发现,这是 AirPrint 使用的协议(protocol)。

至于 Printer Pro 应用程序如何能够在 iOS7 中不使用对话框进行打印,我猜想它们是在非常低的级别上与打印机进行交互(例如原始 HTTP 帖子等)。

关于iphone - iOS 打印不允许 UIPrintInteractionController 出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145724/

相关文章:

iphone - 模拟器、设备和应用商店的行为测试有什么区别

iPhone卡片像翻转动画

iphone - 以时间间隔链接 UIView 动画

ios - 使用 AFNetworking 解析 JSON 响应

ios - 标签栏重叠 View 后面

iphone - 智能手机可以从几英尺的距离(不是 NFC)读取 RFID 标签吗?

ios - UIScrollView 中的核心文本段落模糊

iphone - Xcode,只检索带有字母 A 的地址簿姓氏(依此类推)

iphone - 格式化 NSDate 滞后于我的 UITableVIew

iphone - 更改 UIImageView 模式 iPhone/iPad