2011-09-05 2 views
4

그래서 iOS 장치에 프린터로 게시 (서비스 알리기)하기 위해 NSNetService를 사용하고 형식을 _ipp._tcp으로 설정했습니다.iOS 장치에서 Bonjour AirPrint 서비스 만들기

  • AirPrint를 인쇄 관리를 위해 IPP를 사용

    그러나 순서

    는 요구 사항이 포함 AirPrint가 프린터로 인식합니다.
  • AirPrint는 프린터 검색을 위해 mDNS (Bonjour/Avahi)를 수신합니다.
  • AirPrint에서는 프린터 나열을 고려하기 전에 _ipp 공지에 _universal 하위 유형이 있어야합니다.
  • AirPrint에서는 프린터 나열을 고려하기 전에 추가 TXT 레코드 "URF"가 있어야하며 비어 있지 않아야합니다.
  • 이 URF 형식 (아래 참조)은 Apple의 향후 옵션 인 것으로 보이지만 현재 사용중인 모든 AirPrint 지원 응용 프로그램은 인쇄 데이터를 PDF로 보냅니다.
  • 프린터가 사용자 이름/암호로 보호되면 iTunes/AirPrint 데몬에서 "air = username, password"라는 TXT 레코드를 보냅니다.

Source

그래서 나는 하위 유형을 게시하고 내가 할 수 없었던 NSNetService에서 TXT 레코드를 게시하는 방법을 알아 내려고 노력하고있다. 누구든지 아이디어가 있습니까?

답변

0

This link은 프린터에 액세스 할 수 있도록 avahi를 구성하는 방법을 알려줍니다.

0

를 : 로컬 LAN/WLAN에서 유효한 AirPrint 서비스 발표를 시뮬레이트하여 iOS 클라이언트가 기존 프린터 (AirPrint 여부)로 성공적으로 인쇄 할 수있게 할 수 있습니다.

요구 사항 :이 작업을 가지고 일단 맥 OS X의와 함께

, 당신은 지금 전선 또는 공기에서 패키지를 캡처 와이어 샤크 또는 tcpdump 같은 것을 사용하고 저장하고 분석 할 수 있습니다.

그런 다음 자신의 응용 프로그램을 코딩하여 시뮬레이션과 동일한 패키지를 방출하도록하십시오.


다음은 OS X Yosemite (10.10.x)에서 작동하는 것으로 알려져 있습니다.

가정 할 때 ...

  • 당신은
  • 그것이 을 가지고, 맥 (도서)를 실행 OS X가,
  • 이 맥의 호스트 이름이 mymac,
  • 의 IP 주소가 192.168.111.111이다가 공유 프린터가 설치된 이름

... 그럼 당신은 할 수있다 (/etc/cups/cupsd.confDefaultAuthType none을 넣어)은 (는! AirPrint를 지원해야하지 않습니다), 그리고

  • 는 프린터 공유에는 인증이 필요없는 iOS 고객이 사용할 수있는 대기열은 abcd입니다.

    테스트하려면 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" 
    

    이 방법을 사용하면 Mac을 부팅 할 때마다이 명령을 실행하는 스크립트 나 cron 작업을 쉽게 얻을 수 있습니다 (또한 백그라운드에서 실행할 수 있음). 이것은 독자에게 연습 문제로 남아 있습니다.

    (첫 번째 맥 공유 인쇄 대기열과 일치하는 첫 번째 맥의 설정 위의 모든 세부 사항을 제공하는 경우 ..., 심지어 두 번째, 완전히 다른 맥에서 변경이 매우 동일한 명령을 실행할 수 있습니다)

    배경 정보 :

    dns-sd 명령 행 유틸리티는 모두 봉쥬르, mDNS를로 파고에 대한 테스트 및 개발 도구 (m으로 의미 ulticast DNS) 및 DNS-SD (DNS 기반 서비스 검색)가 있습니다. Bonjour가 생겨난 이래로 모든 OS X 시스템의 일부입니다.

    -P의 매개 변수를 dns-sd으로 변경하면 로컬 LAN/WLAN에 Bonjour "프록시 공지 사항"이 적용됩니다. 이 발표는 잠재적 인 AirPrint 고객에게 다음 정보를 알려줍니다.

    • .local. 도메인에서 사용할 수있는 AirPrint 장치가 있습니다.
    • 이름은 Airprint-abcd입니다.
    • IP 주소는 192.168.111.111이며 포트 번호는 631입니다.
    • 프린트 큐 이름 printers/abcd을 사용하여 인쇄하십시오.
    • PDF 및 URF 래스터 문서를 사용할 수 있습니다.
    • 인증이 필요하지 않습니다.
    • 양면 인쇄 및 컬러 문서를 출력 할 수 있습니다.

    이 유틸리티에 대한 자세한 내용은 man dns-sd을 참조하십시오. 배경에 대한 자세한 내용은 dns-sd.orgthese other answers을 참조하십시오.