Zbieram potencjalną aplikację dla klienta, a ja miałem pytanie, na które nie byłem w stanie znaleźć odpowiedzi. To, co chciałbym zrobić, to drukować automatycznie, bez konieczności wyświetlania UIPrintInteractionController
. Ważnym punktem, który powinienem zrobić jest to, że nie będzie być aplikacją produkcyjną. Wiem, że w przeciwnym razie może to naruszyć prywatność użytkownika, aby drukować bez zgody użytkownika, ale znowu nie będzie to aplikacja publiczna w App Store. Jedna aplikacja, którą udało mi się znaleźć, to Printer Pro
. Użytkownik zostanie poproszony o wydrukowanie strony testowej, a strona zostanie wydrukowana bez pojawienia się UIPrintInteractionController
- ta aplikacja jest w sklepie, więc zakładam, że istnieje legalny sposób na jej wykonanie. Czy ktoś wie, jak to się robi?Wydruk iOS bez zezwolenia UIPrintInteractionController na wyświetlenie
Odpowiedz
O ile mi wiadomo, nie można drukować w systemie iOS7 bez wywoływania UIPrintInteractionController
i wyświetlania okna dialogowego drukowania systemu.
Jednak iOS8 zapewnia teraz możliwość drukowania bezpośrednio na wydruku bez wyświetlania okna dialogowego. Podstawową ideą jest uzyskanie obiektu UIPrinter
i użycie go w połączeniu z nową metodą - printToPrinter:completionHandler:
do drukowania bez pokazywania okna dialogowego.
Uzyskanie obiektu UIPrinter
dla drukarki można zrealizować na kilka sposobów.
Najprostszym jest użycie nowego UIPrinterPickerController
. Ale pokazałoby to okno dialogowe i nie spełnia Twoich potrzeb. Możliwe jest utworzenie drukarki za pomocą adresu URL za pomocą metody . Nie do końca wiadomo, jak uzyskać ten adres URL, ale może on być zawarty na stronach administracyjnych HTML drukarki. Wierzę, że można go uzyskać programowo za pomocą interfejsu API Bonjour. Więcej informacji tutaj:
Bonjour jest usługą odkrycie API, który obejmuje wykrywanie drukarek IPP, którego to protokół używany przez AirPrint.
Jeśli chodzi o to, w jaki sposób aplikacja Printer Pro może drukować bez okna dialogowego w iOS7, domyślam się, że wchodzą one w interakcję z drukarką na bardzo niskim poziomie (np. Nieprzetworzone posty HTTP itp.).
To działa dobrze, pozornie z wyjątkiem drukarki współdzielone przez kubki (np. na ubuntu). Na przykład nie mogę drukować na żadnej z dwóch drukarek udostępnionych przez Ubuntu/CUPS za pośrednictwem printToPrinter: w mojej aplikacji, ale moja aplikacja może drukować bezpośrednio na moich 2 drukarkach Canon CP910. W tym samym czasie natywna aplikacja Zdjęcia może drukować na moich 2 drukarkach udostępnianych przez ubuntu/CUPS. Więc nie wszystko działa z printToPrinter: – xaphod
Aktualizacja: rozwiązaniem, które znalazłem, jest przechowywanie zarówno adresu URL do drukarki, jak i silnego odniesienia do UIPrintera. Jeśli adres URL nie może być połączony, spróbuj bezpośrednio UIPrintera.Niepokojąco to działa ... wygląda jak błąd w systemie iOS 8, ponieważ nie ma powodu, dla którego adres URL nie może być używany AFAIK – xaphod
Wykonaj poniższe kroki, aby wydrukować dokumenty bez monitowania ..
First Search for Devices Korzystanie poniższy kod ...
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1) {
UIPrinterPickerController *printPicker = [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:nil];
[printPicker presentAnimated:YES completionHandler:
^(UIPrinterPickerController *printerPicker, BOOL userDidSelect, NSError *error) {
if (userDidSelect) {
//User selected the item in the UIPrinterPickerController and got the printer details.
[UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:printerPicker.selectedPrinter];
// Here you will get the printer and printer details.ie,
// printerPicker.selectedPrinter, printerPicker.selectedPrinter.displayName, printerPicker.selectedPrinter.URL etc. So you can display the printer name in your label text or button title.
NSURL *printerURL = printerPicker.selectedPrinter.URL;
NSLog(@"printerURL--->%@",printerURL.absoluteString);
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[printerURL absoluteString] forKey:@"printURL"];
[defaults synchronize];
}
}];
}
i drukować dokumenty bez monitowania użytkownika za pomocą poniższego kodu. ..
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1) {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
UIPrinter *currentPrinterObj = [UIPrinter printerWithURL:[NSURL URLWithString:[defaults stringForKey:[defaults stringForKey:@"printURL"]]]];
UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];
if(currentPrinterObj) {
[controller printToPrinter:currentPrinterObj completionHandler:^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
if(completed) {
} else {
NSLog(@"FAILED! due to error in domain %@ with error code %u", error.domain, error.code);
}
}];
}
}
Edytuj wpis i wstaw wcięcie kodu (przycisk kodu) –
- 1. X509TrustManager Override bez zezwolenia na WSZYSTKIE certyfikaty?
- 2. UIPrintInteractionController, wyłączyć opcję dwustronną?
- 3. wydruk śledzenia stosu python bez wyjątku podniesiony
- 4. Wyświetlenie podglądu UIPicker zamiast wprowadzania klawiatury iOS
- 5. Wyświetlenie dzienników aktualizacji hibernacji, ale bez zaznaczenia
- 6. Odmowa zezwolenia: operator otwierający
- 7. C# nie można zweryfikować kodu bez niezarejestrowanego zezwolenia
- 8. Natychmiastowe wyświetlenie autouzupełniania na Androidzie
- 9. Bezpieczne pobieranie plików w PHP, odmawianie użytkownikowi bez zezwolenia
- 10. AirPrint: Ustaw domyślną drukarkę w UIPrintInteractionController
- 11. Plik ZIP i wydruk na stdout
- 12. Wyświetlenie widoku siatki grid.NET ASP.NET
- 13. iOS, CLLocationManager: Wyświetlenie okna "Ponowne włączanie usług lokalizacyjnych"
- 14. Czy potrzebuję zezwolenia na usługi takie jak Fabric Crashlytics w systemie iOS?
- 15. obowiązuje wydruk z String.Format()
- 16. Python 2.7: Wydruk bezpieczny
- 17. Anatomia ładnej krotki wydruk
- 18. Dość wydruk w Clojure
- 19. Odmowa zezwolenia na zapis pliku w mod_wsgi wdrożona aplikacja
- 20. Błąd zezwolenia na skrót na ekranie głównym Androidem
- 21. Czy istnieje sposób na wyświetlenie iPada Simulator na pełnym ekranie?
- 22. Instalacja aplikacji na iOS bez AppStore
- 23. Wymuś pełne wyświetlenie na EditText w Androidzie
- 24. Wyświetlenie statycznego przycisku z obrazem logowania Facebook bez użycia FBML
- 25. krach App gdy zmiana zezwolenia AddressBook w ustawieniach
- 26. Wydruk tabelaryczny w formacie Python
- 27. Potwierdź automatyczne wyświetlenie UITextview
- 28. Wyświetlenie BMP w JLabelu
- 29. Cichy wydruk osadzonego pliku PDF
- 30. Wydruk pojedynczego znaku w C
Czy kiedykolwiek otrzymasz odpowiedź na to pytanie? –
Niestety, nie. Oto odpowiedni link http://stackoverflow.com/questions/5135781/ipad-iphone-printing-direct-to-a-network-printer-without-airprint-popover?rq=1 – coder