Я получил свою работу сейчас. Что я сделал:
- Сохранить сессию как переменную в классе
- Создать сессию, только если сессия пуста
- Возможно, вы не захотите вызывать session.OutputStream.Close () после каждой печати. По крайней мере, это нужно учитывать при отладке для вашей ситуации.
Это позволит выполнять несколько заданий на печать на одной странице без разрыва. session.OutputStream не был нулевым в этом случае.
Я также обнаружил, что события ViewDidLoad / Unload не были хороши для определения, когда устройство становится доступным / недоступным через наблюдателей EAAccessoryDidConnectNotification и EAAccessory DidDisconnectNotification. Вместо этого я использовал ViewDidAppear / ViewDidDisappear. В этих методах я разрушаю сеанс, и когда я возвращаюсь, чтобы напечатать новое задание, сеанс создается и назначается OutputStream.
Наконец, я не получаю события, запущенные для моего устройства через session.OutputStream.OnEvent. Не уверен, что это мое устройство, ошибка MonoTouch или просто моя общая ошибка.
ОБНОВЛЕНИЕ: ознакомьтесь с этой красиво упакованной реализацией AccessoryAdapter