2012-04-15 23 views
6

Nella mia app iOS, ho il seguente codice che viene utilizzato per AirPrinting su una semplice NSString.Errore AirPrint Connection rifiutato

#pragma mark - Print 
-(IBAction)print:(id)sender { 

    UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; 
    pic.delegate = self; 

    UIPrintInfo *printInfo = [UIPrintInfo printInfo]; 
    printInfo.outputType = UIPrintInfoOutputGeneral; 
    printInfo.jobName = @"Message"; 
    pic.printInfo = printInfo; 

    UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc]initWithText:self.Message.text]; 
    textFormatter.startPage = 0; 
    textFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins 
    textFormatter.maximumContentWidth = 6 * 72.0; 
    pic.printFormatter = textFormatter; 
    pic.showsPageRange = YES; 

    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = 
    ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { 
     if (!completed && error) { 
      NSLog(@"Printing could not complete because of error: %@", error); 
     } 
    }; 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
     [pic presentFromBarButtonItem:sender animated:YES completionHandler:completionHandler]; 
    } else { 
     [pic presentAnimated:YES completionHandler:completionHandler]; 
    } 
} 

Quando eseguo il mio progetto (per testarlo), questo è l'errore che ottengo nella finestra del debugger di output Quando si tocca "Stampa" nella UIPrintInteractionController:

Simulated\032InkJet\[email protected]\032USER\032NAME\032iMac._ipp._tcp.local.: startJob: Unable to connect to printd: Connection refused 

ottengo questo errore in iOS 5.1 Simulator utilizzando Print Simulator. Perché sto ricevendo questo errore? Ho la sensazione che abbia a che fare con come sto usando Print Simulator.

Qualsiasi aiuto è apprezzato e, come nota a margine, qualcuno sa come visualizzare il controller UIPrintInteraction da un normale UIButton sull'iPad invece di un oggetto BarButton?

MODIFICA: Si noti che AirPrint viene configurato automaticamente quando si utilizzano i fogli condivisi in iOS 6.0 o versioni successive.

risposta

11

avevo lo stesso identico problema e fondamentalmente carne tritata risposta è risolto il problema. Tuttavia ho dovuto prima passare attraverso alcuni cerchi. In definitiva si trattava di una sorta di problema di permessi sui file.

ho fatto la seguente (si noti, è necessario l'accesso admin):

  1. Apri Terminale e passare alla cartella// var/tmp/

  2. tipo 'whoami' privato a vedere il vostro esatto nome utente.

  3. Supponiamo che il tuo nome utente sia "dogtest". digita "sudo chown dogtest: admin printd". Riceverai un avviso che ti chiede in sostanza di assicurarti di sapere cosa stai facendo.

  4. Immettere la password dell'amministratore e premere invio.

  5. Ora avete la proprietà del file printd e potete fare quello che volete con esso. Rinominare il file in qualcos'altro digitando 'mv printd printd-ren'.

  6. Aprire iOS Simulator e Printer Simulator.

  7. Apri Safari in iOS Simulator e vai a qualsiasi pagina web.

  8. Toccare il pulsante Condividi in basso al centro e selezionare Stampa.

  9. Seguire le istruzioni per completare la stampa. Dovresti vedere molte più attività nella finestra di log di Printer Simulator. A questo punto il file printd viene ricreato con i permessi dell'account (va bene).

  10. Chiudere sia iOS Simlulator che Printer Simulator.

  11. Riavviare l'app per iOS nel simulatore e quindi riaprire Printer Simulator.

  12. Ora dovresti essere in grado di simulare Air Print dalla tua app e la stampa si aprirà in Anteprima come PDF.

Spero che questo risolva il problema o almeno punti nella giusta direzione. In bocca al lupo.

+0

Funziona. Si prega di utilizzare il comando 'CD/private/var/tmp /' – Hassy

3

Provare a rimuovere

/private/var/tmp/printd

+0

Eliminare quello ha funzionato per me, anche se richiede ancora sudo. Nel mio caso, che era di proprietà di un altro utente, quindi uccidendolo e riavviando tutti i sims/xcode, provandolo di nuovo ha funzionato. – Jason

2

Avevo il simulatore di stampante smesso di funzionare per me e non mi dava alcun errore. Ho provato diversi simulatori, resettandoli, riavviando il computer, uccidendo la stampa come detto sopra, e anche altre cose.

Alla fine, ciò che per me è stato risolto è stato il cambio delle mie connessioni di rete: al momento, avevo il wifi e un cavo ethernet (tramite fulmine) collegato al mio macbook - entrambi wifi + ethernet collegati alla stessa rete. Ho estratto il cavo ethernet e immediatamente ha iniziato a funzionare di nuovo.

Grazie Apple, dove posso riavere i miei 20 minuti :)

+0

Grazie! Questo mi ha aiutato 2,5 anni dopo. :) –

Problemi correlati