Vai al contenuto
Lingua: IT

Cosa deve fare un'applicazione quando l'NFC è spento o assente?

Distinguere gli stati prima di scrivere qualunque messaggio. Su Android: nessun controller, un controller che chi usa ha spento e, da Android 16, i tag rifiutati alla tua applicazione. Su iPhone: disponibile oppure no. Poi dire quale dei casi è, e lasciar funzionare il resto dell'applicazione.

Tre stati su Android

Hanno bisogno di risposte diverse, e la pagina dei limiti del controller li legge mentre il codice gira. getDefaultAdapter() rende null quando il telefono non ha alcun controller NFC: la funzionalità non esiste e non esisterà mai su quell'apparecchio. isEnabled() rende falso quando chi usa ha spento l'NFC, che è a un'impostazione di distanza dall'essere sistemato. E da Android 16 chi usa può rifiutare gli intent di tag a una sola applicazione, cosa che isTagIntentAllowed() segnala mentre l'adattatore dice di essere acceso.

Il terzo è quello che produce le migliori segnalazioni di difetto, perché tutto sembra a posto: l'NFC è acceso, l'applicazione è installata, il manifest è giusto, e nessun tag arriva mai.

Due su iPhone

Core NFC risponde prima che una sessione esista: readingAvailable dice se l'apparecchio sa leggere. Oltre a questo, sono gli errori a portare il resto, readerErrorRadioDisabled per una radio spenta e readerErrorUnsupportedFeature per qualcosa che la sessione non sa fare.

Non c'è alcun equivalente della schermata di impostazioni di Android dove mandare chi usa, il che cambia le parole e non la logica: un iPhone che non sa leggere è un fatto dell'apparecchio, e il mestiere dell'applicazione è dirlo una volta e andare avanti. Quali iPhone leggano è la pagina dei modelli.

Cosa dire per ciascuno

Nessun materiale: nascondi la funzione invece di spiegarla. Un pulsante che su quel telefono non può funzionare è una richiesta di assistenza che aspetta, e la sua assenza non ha bisogno di alcuna frase.

Spento: proponi l'impostazione. Android espone la schermata delle impostazioni NFC come intent, e mandarci chi usa batte il descrivere dove si trova, dato che il percorso cambia da un fabbricante all'altro, cosa che la pagina dell'attivazione mostra.

Rifiutato alla tua applicazione: dillo, perché nient'altro nell'interfaccia lo farà. Chi usa l'ha scelto, magari per sbaglio, e solo il tuo messaggio collega il silenzio all'impostazione.

Non bloccare mai il resto

Un tocco è un ingresso fra tanti. Un'applicazione che si rifiuta di partire senza NFC ha trasformato una comodità in un obbligo, e chi non può usarla è proprio chi aveva bisogno dell'alternativa.

Tieni il percorso a mano: un codice da digitare, una ricerca, una scansione, qualunque cosa il tag stesse accorciando. E decidi a parte se l'applicazione debba installarsi su un telefono senza la radio, che è una questione di negozio più che di esecuzione: la pagina del negozio la riprende.

Domande frequenti

Come so che il telefono non ha proprio l'NFC?

getDefaultAdapter rende null su Android, e readingAvailable è falso su iOS. Tutti e due sono fatti dell'apparecchio, non impostazioni.

Posso accendere l'NFC dalla mia applicazione?

No. Su Android puoi mandare chi usa alla schermata delle impostazioni NFC; l'interruttore appartiene a chi usa.

Perché non arriva niente anche se l'NFC è acceso?

Da Android 16 chi usa può rifiutare gli intent di tag a una sola applicazione. isTagIntentAllowed lo segnala, e nient'altro nell'interfaccia lo farà.

L'applicazione deve rifiutarsi di funzionare senza NFC?

No. Tieni il percorso a mano e lascia funzionare il resto. Se debba installarsi è una decisione a parte, a livello di negozio.