我发现打印机从iPad设置打印可以找到我的兄弟打印机。
但是当我尝试代码时,我得到了空的设备列表,我不知道为什么。
我不熟悉斯威夫特。我只是尝试一下官方文档中的示例代码。https://support.brother.com/g/s/es/htmldoc/mobilesdk/guide/discover-printer.html
这是我的代码:
func getPrinter() {
let printerManager = BRPtouchNetworkManager()
printerManager.setPrinterName("Brother QL-720NW")
printerManager.startSearch(5)
printerManager.getPrinterNetInfo()
print("start")
let testFind = YourClass()
print("1")
testFind.startSearchWiFiPrinter()
testFind.didFinishSearch(printerManager)
print("2")
}
class YourClass: NSObject, BRPtouchNetworkDelegate {
private var networkManager: BRPtouchNetworkManager?
func startSearchWiFiPrinter() {
print("3")
let manager = BRPtouchNetworkManager()
manager.delegate = self
manager.startSearch(5)
self.networkManager = manager
}
// BRPtouchNetworkDelegate
func didFinishSearch(_ sender: Any!) {
print("4")
guard let manager = sender as? BRPtouchNetworkManager else {
print("5")
return
}
guard let devices = manager.getPrinterNetInfo() else {
print("6")
return
}
print(devices)
print("7")
for deviceInfo in devices {
print("8")
if let deviceInfo = deviceInfo as? BRPtouchDeviceInfo {
print("Model: \(deviceInfo.strModelName), IP Address: \(deviceInfo.strIPAddress)")
}
}
}
}我调用函数getPrinter(),这是我的打印日志:

发布于 2019-10-29 14:32:25
SDK文档给出了两个方法的示例实现:
func startSearchWiFiPrinter() {}和
func didFinishSearch(_ sender: Any!) {}在要执行搜索的类中,必须实现这些。您还需要声明类来参加协议BRPtouchNetworkDelegate。最后一件事是拥有一个能够容纳网络管理器的属性(在行:private var networkManager: BRPtouchNetworkManager?中完成)
但是,您不应该单独调用"didFinishSearch“方法。当您调用startSearchWiFiPrinter时,搜索就开始了,BRPtouchNetworkManager实例本身也调用了didFinishSearch方法。它能够这样做,因为您在行:manager.delegate = self中设置了委托。
你不应该需要两个类来完成这个任务。您也不应该使用两个BRPtouchNetworkManager实例。
尝尝这个。记住,作为startSearchWiFiPrinter参数的数字意味着搜索在几秒钟内会持续多久。
class EXAMPLEClass: NSObject, BRPtouchNetworkDelegate {
private var networkManager: BRPtouchNetworkManager?
func getPrinter() {
self.startSearchWiFiPrinter()
}
func startSearchWiFiPrinter() {
let manager = BRPtouchNetworkManager()
manager.delegate = self
manager.setPrinterName("Brother QL-720NW")
manager.startSearch(5)
self.networkManager = manager
}
// BRPtouchNetworkDelegate
func didFinishSearch(_ sender: Any!) {
print("4")
guard let manager = sender as? BRPtouchNetworkManager else {
print("5")
return
}
guard let devices = manager.getPrinterNetInfo() else {
print("6")
return
}
print(devices)
print("7")
for deviceInfo in devices {
print("8")
if let deviceInfo = deviceInfo as? BRPtouchDeviceInfo {
print("Model: \(deviceInfo.strModelName), IP Address: \(deviceInfo.strIPAddress)")
}
}
}
}https://stackoverflow.com/questions/57250005
复制相似问题