129 lines
3.8 KiB
Swift
129 lines
3.8 KiB
Swift
import Foundation
|
|
import ExternalAccessory
|
|
|
|
/**
|
|
* Please read the Capacitor iOS Plugin Development Guide
|
|
* here: https://capacitor.ionicframework.com/docs/plugins/ios
|
|
*/
|
|
@objc(ZebraPlugin)
|
|
public class ZebraPlugin: CDVPlugin {
|
|
var printerConnection: ZebraPrinterConnection?
|
|
|
|
@objc func echo(command: CDVInvokedUrlCommand) {
|
|
var pluginResult = CDVPluginResult(
|
|
status: CDVCommandStatus_ERROR
|
|
)
|
|
let value = command.arguments[0] as? String ?? ""
|
|
pluginResult = CDVPluginResult(
|
|
status: CDVCommandStatus_OK,
|
|
value: value
|
|
)
|
|
|
|
self.commandDelegate!.send(
|
|
pluginResult,
|
|
callbackId: command.callbackId
|
|
)
|
|
}
|
|
|
|
@objc func discover(command: CDVInvokedUrlCommand){
|
|
|
|
let manager = EAAccessoryManager.shared()
|
|
let accessories = manager.connectedAccessories
|
|
|
|
var devices = [[String:AnyObject]]
|
|
accessories.forEach { (accessory) in
|
|
let name = accessory.name
|
|
var device = [String: AnyObject]
|
|
device["name"] = name
|
|
device["address"] = accessory.serialNumber
|
|
device["manufacturer"] = accessory.manufacturer
|
|
device["modelNumber"] = accessory.modelNumber
|
|
device["connected"] = accessory.isConnected
|
|
devices.append(device)
|
|
}
|
|
pluginResult = CDVPluginResult(
|
|
status: CDVCommandStatus_OK,
|
|
printers: devices
|
|
)
|
|
self.commandDelegate!.send(
|
|
pluginResult,
|
|
callbackId: command.callbackId
|
|
)
|
|
}
|
|
|
|
// @objc func print(_ call: CAPPluginCall) {
|
|
// //TODO
|
|
// let cpcl = call.getString("cpcl") ?? ""
|
|
// if( isConnected()){
|
|
// let data = cpcl.data(using: .utf8)
|
|
// var error: NSError?
|
|
// printerConnection!.write(data, error:&error)
|
|
// if let actualError = error{
|
|
// call.error("An Error Occurred: \(actualError)")
|
|
// }
|
|
// }else{
|
|
// call.error("no printer connected")
|
|
// }
|
|
// call.success()
|
|
// }
|
|
|
|
// @objc func isConnected(_ call: CAPPluginCall){
|
|
// call.success([
|
|
// "connected": isConnected()
|
|
// ])
|
|
// }
|
|
|
|
// private func isConnected() -> Bool{
|
|
// return (printerConnection != nil && printerConnection!.isConnected())
|
|
// }
|
|
|
|
// @objc func printerStatus(_ call:CAPPluginCall){
|
|
// //TODO
|
|
// //let address = call.getString("MACAddress") ?? ""
|
|
// //Return status
|
|
// call.success([
|
|
// "connected": true,
|
|
// "isReadyToPrint": false,
|
|
// "isPaused": false,
|
|
// "isReceiveBufferFull": false,
|
|
// "isRibbonOut": false,
|
|
// "isPaperOut": false,
|
|
// "isHeadTooHot": false,
|
|
// "isHeadOpen": false,
|
|
// "isHeadCold": false,
|
|
// "isPartialFormatInProgress": false,
|
|
// ])
|
|
// }
|
|
|
|
// @objc func connect(_ call:CAPPluginCall){
|
|
// //TODO
|
|
// let address = call.getString("MACAddress") ?? ""
|
|
|
|
// printerConnection = MfiBtPrinterConnection(serialNumber: address)
|
|
// printerConnection?.open()
|
|
// if( isConnected()){
|
|
// let printer = try? ZebraPrinterFactory.getInstance(printerConnection as! NSObjectProtocol & ZebraPrinterConnection)
|
|
|
|
// if(printer == nil)
|
|
// {
|
|
// call.error("Error connecting to printer")
|
|
// }
|
|
// }else{
|
|
// call.error("Could not connect to printer")
|
|
// }
|
|
|
|
// call.success([
|
|
// "success": true
|
|
// ])
|
|
|
|
// }
|
|
|
|
// @objc func disconnect(_ call:CAPPluginCall){
|
|
// //TODO
|
|
// call.success()
|
|
// }
|
|
|
|
|
|
|
|
}
|