Поскольку вы даже не показываете начальную точку или заглушку своего кода, здесь есть другой совет: вы можете смоделировать действующее рабочее объявление службы AirPrint в вашей локальной сети LAN / WLAN, что позволит вашим клиентам iOSУспешная печать на существующем принтере (AirPrint или нет).
Требования: Mac с OS X.
После того, как вы все заработаете, теперь вы можете использовать что-то вроде Wireshark или tcpdump
длязахватывайте пакеты по проводам или из эфира и сохраняйте и анализируйте их.
Затем начните кодировать свое собственное приложение и сделайте так, чтобы оно испускало те же пакеты, что и симуляция.
Известно, что следующие действия работают в OS X Yosemite (10.10.x).
Предполагается, что ...
- у вас Mac (Book) под управлением OS X,
- имя этого компьютера Mac
mymac
, - его IP-адрес
192.168.111.111
, - на нем установлен общий принтер с именем
abcd
( НЕ должен быть с поддержкой AirPrint!), и - общий ресурс принтера не требует аутентификации (поместите
DefaultAuthType none
в /etc/cups/cupsd.conf
),
... тогда вы можете сделать очередь abcd
доступной для клиентов iOS.
Чтобы проверить это, просто выполните следующую команду в окне Terminal.app (внимание, командане вернется - если вы закроете окно Terminal.app, эффект от команды пропадет!):
dns-sd \
-P AirPrint-abcd \
_ipp._tcp,_universal \
local. \
631 \
mymac.local. \
192.168.111.111 \
pdl="application/pdf,image/urf" \
kind="document" \
priority="1" \
product="Model Name of my Printer" \
rp="printers/abcd" \
URF="DM3" \
Duplex="T" \
Color="T" \
note="Testing AirPrint via MacBook"\
txtvers="1" \
qtotal="1" \
printer-type="0x0480FFFC" \
printer-state="3" \
air="none" \
UUID="54321abc-1234-1234-abcd-1238e4babcd8"
Если это работает (как и должно быть), вы можете легко придуматьсценарий или задание cron, которое выполняет эту команду (и позволяет запускать ее в фоновом режиме) каждый раз при загрузке Mac.Это оставлено читателю в качестве упражнения.
(Вы можете выполнить эту же команду без изменений даже со второго, совершенно другого Mac, если первый Mac предоставляет общую очередь печати и всеприведенные выше данные соответствуют настройкам первого Mac ...)
Справочная информация:
dns-sd
командная строкаУтилита предназначена в качестве инструмента тестирования и разработки для всех, кто интересуется Bonjour, mDNS (многоадресная DNS) и DNS-SD (обнаружение служб на основе DNS).Это часть каждой системы OS X с тех пор, как появился Bonjour.
Параметр -P
для dns-sd
сделает Bonjour "прокси-объявлением" для вашей локальной LAN / WLAN.Объявление сообщит потенциальным клиентам AirPrint следующую информацию:
- В вашем домене
.local.
есть устройство AirPrint. - Его имя
Airprint-abcd
. - Это может быть достигнуто через IP-адрес
192.168.111.111
и порт 631
. - Используйте имя очереди печати
printers/abcd
для печати на него. - Может принимать PDF и URFрастровые документы.
- Не требует аутентификации.
- Может выводить дуплексные и цветные документы.
Подробнее об этой утилите см. man dns-sd
.Для получения дополнительной информации см. dns-sd.org и эти другие ответы .