从Url创build一个可用的UIPrinter对象以进行无对话打印

场景:引导模式locking的应用程序接受一些用户input(名称等),并打印出一张票。 用户不能select打印机。

我计划的解决scheme是保存打印机的URL,我有以下forms:

ipp://<hostname>.local.:5001/<printername> 

从这个存储的string构buildUIPrinter对象:

 var printerURL = NSUrl.FromString(SettingsService.OptPrinterUrl); var printer = UIPrinter.FromUrl(printerURL); 

然后我打电话给:

 printer.ContactPrinter((available) => { if (available) { // } }); 

要么

 var printInterface = UIPrintInteractionController.SharedPrintController; printInterface.PrintToPrinter(printer, (handler, completed, error) => { if (!completed && error != null) { UIAlertView alert = new UIAlertView("Guest Check-In App", "Print Error", null, "Ok", null); alert.Show(); } }); 

没有积极的结果。

但是,使用从UIPrinterPickerController(如下所示)返回的UIPrinter对象时,它都可以工作。

 var printerPicker = UIPrinterPickerController.FromPrinter(null); printerPicker.PresentFromRect(new CGRect(0,0,100,100),this.View,true, delegate(UIPrinterPickerController handler, bool completed, NSError error) { printer = printerPicker.SelectedPrinter; }); 

我甚至尝试从PrinterPicker获取UIPrinter对象,并尝试使用从PrinterPicker获取的UIPrinter对象的URL,使用UIPrinter.FromUrl构build新的UIPrinter。

我只能够创build一个工作的UIPrinter对象,而不需要像UIPrinterPickerController那样直接使用它:

 var printerPicker = UIPrinterPickerController.FromPrinter(null); printerPicker.PresentFromRect(new CGRect(0,0,100,100),this.View,true, delegate(UIPrinterPickerController handler, bool completed, NSError error) { printerPickerPrinter = printerPicker.SelectedPrinter; }); var printer = (UIPrinter)UIPrinter.FromObject(printerPickerPrinter); 

总结我需要的是一种“记住”打印机的方法,并使用该打印机在xamarin构build的iOS应用程序中自动打印。