Создание рабочего объекта UIPrinter из Url для печати без диалогов
Сценарий: заблокированное приложение в управляемом режиме принимает некоторые пользовательские данные (имя и т. Д.) И распечатывает их. Пользователь не может выбрать принтер.
Моим запланированным решением было сохранить URL-адрес принтера, который у меня есть и имеет вид:
ipp://<hostname>.local.:5001/<printername>
Чтобы построить объект UIPrinter из этой сохраненной строки:
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();
}
});
Без положительного результата.
Однако при использовании объекта 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) {
printer = printerPicker.SelectedPrinter;
});
Я даже пытался получить объект UIPrinter из PrinterPicker и пытался создать новый UIPrinter с UIPrinter.FromUrl, используя URL-адрес из объекта UIPrinter, взятого из PrinterPicker.
Я смог создать работающий объект 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);
Резюме Мне нужен способ «запомнить» принтер и использовать этот принтер для автоматической печати в приложении iOS, построенном на xamarin.