Vai al contenuto
Lingua: IT

Come si leggono più tag in una sola sessione iOS?

Tieni viva la sessione e lasciala sondare di nuovo dopo ogni tag. Una sessione NDEF creata con invalidateAfterFirstRead a falso legge un tag dopo l'altro finché non scade o non viene annullata; con gli oggetti tag, l'applicazione chiama restartPolling dopo ognuno. I tag rilevati prima di un riavvio diventano invalidi e vanno lasciati andare.

Leggere messaggi di fila

Una sessione NDEF creata con invalidateAfterFirstRead a falso legge diversi tag. La documentazione di Apple dell'inizializzatore dice che ogni lettura riuscita raggiunge il delegato tramite readerSession(_:didDetectNDEFs:), finché la sessione non scade o non viene annullata dall'applicazione o da chi usa il telefono.

Quel metodo del delegato non ha bisogno di aiuto per continuare. Il suo riferimento dice che la sessione riavvia il sondaggio una volta che i tag rilevati sono fuori portata, quindi leggere una serie non chiede niente oltre al delegato.

La serie finisce comunque con la sessione. Una scadenza la invalida con readerSessionInvalidationErrorSessionTimeout, e la documentazione non dà alcuna durata, quindi un'applicazione che legge una serie lunga deve aspettarsi di avviare una sessione nuova.

Riavviare il sondaggio con gli oggetti tag

Un delegato che realizza readerSession(_:didDetect:) riceve invece oggetti tag, e chiede lui stesso il tag successivo con restartPolling(). Una sessione di tag funziona allo stesso modo.

Un riavvio ha un costo. La nota di Apple su restartPolling() dice che i tag rilevati prima di esso sono invalidi e che l'applicazione dovrebbe lasciar cadere i riferimenti che ne ha, e che la chiamata non ha effetto su una sessione già invalidata.

In una sessione NDEF al cui delegato manca readerSession(_:didDetect:), la chiamata non serve a niente: la sessione segnala messaggi e riavvia il sondaggio da sé. Da iOS 26.4, una sessione di tag può riavviarsi con una Configuration nuova, cambiando le sue opzioni di sondaggio o i suoi identificatori fra due tag.

Due tag insieme

Una sessione può vedere più di un tag nello stesso passaggio. L'esempio di lettore di tag di Apple lo tratta prima di scrivere: conta i tag, chiede di toglierli tutti, e riavvia il sondaggio dopo mezzo secondo.

La stessa regola si addice alla lettura. Due tag nel campo durante una serie vogliono dire di solito due tag impilati o messi troppo vicini, cosa che la pagina della distanza copre.

Dire a chi legge che cosa è successo

alertMessage è dove guarda chi usa il telefono durante una lettura. La sua documentazione dice che una sessione che legge diversi tag può aggiornarlo dopo ciascuno, da qualsiasi thread, finché la sessione resta valida.

Usalo per contare, tag tre di dieci letto, avanti il prossimo. Una serie senza riscontro fra un tag e l'altro lascia nel dubbio se l'ultimo tocco sia contato.

Domande frequenti

Perché la mia sessione si ferma dopo il primo tag?

invalidateAfterFirstRead è a vero. Crea la sessione con falso per continuare a leggere.

Devo chiamare restartPolling dopo ogni tag?

Solo quando il delegato riceve oggetti tag tramite readerSession(_:didDetect:). Con i soli messaggi, la sessione riavvia il sondaggio da sé una volta che i tag sono fuori portata.

Quanto dura una sessione?

Apple documenta un errore di scadenza ma nessuna durata. Aspettati che la sessione finisca, e avviane una nuova per una serie lunga.

Posso continuare a usare un oggetto tag dopo aver riavviato il sondaggio?

No. I tag rilevati prima di un riavvio sono invalidi, e Apple chiede alle applicazioni di lasciar cadere i riferimenti che ne hanno.