Создание рабочего объекта 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.

Ответы на вопрос(1)

Ваш ответ на вопрос