¿Por qué el iPhone enseña una hoja cuando una app lee una etiqueta?
Porque quien lleva la lectura es el sistema y no la aplicación. La hoja es el sistema haciéndose cargo de la interacción durante un periodo acotado, que es lo que explica el tiempo límite, la redacción fija, y por qué una aplicación no puede leer en silencio en segundo plano.
Quién está leyendo
La aplicación pide una sesión de lectura. El sistema acepta, presenta su propia interfaz, realiza la interacción con la etiqueta, y devuelve el resultado.
Apple documenta el marco que hay detrás como Core NFC.
La consecuencia es que la hoja no es una pantalla propia de la aplicación. Pertenece al sistema, razón por la cual tiene el mismo aspecto en aplicaciones distintas y por la cual su redacción no la eligió nadie que programe.
Está acotada en el tiempo
Una sesión es un periodo durante el cual el sistema busca etiquetas. Termina cuando la aplicación la cierra, cosa que puede hacer en cuanto lee la primera etiqueta, cuando el usuario la cancela, o al cabo de un tiempo.
Por eso una hoja de lectura que se deja abierta acaba rindiéndose en lugar de esperar sin límite, cosa que sorprende a quien espera que se quede lista.
Dentro de ese periodo, una misma sesión puede leer una etiqueta tras otra si la aplicación la mantiene abierta. Lo que frena una serie es iniciar sesiones: una por etiqueta cuando la aplicación cierra la sesión después de cada lectura, y otra cada vez que una sesión abierta se agota. Esa es la razón de que las aplicaciones que leen muchas etiquetas se noten distintas en iOS que en Android.
Qué explica esto
Por qué una aplicación no puede leer una etiqueta en silencio. No hay ningún camino discreto, porque el sistema se presenta siempre.
Por qué una aplicación no puede leer en segundo plano. Una sesión pertenece a una aplicación en uso, y si no, no hay a quién presentarle una hoja.
Por qué escribir exige el teléfono en la mano. Se aplica el mismo modelo de sesión, con la aplicación aportando el contenido durante una interacción que gestiona el sistema.
Y por qué la expresión apertura manual no deja de aparecer: una aplicación que no está abierta no ha pedido una sesión, así que nada busca etiquetas por ella.
Es el caso de NFC Tools. En iOS necesita un iPhone 7 o posterior con iOS 15.6 como mínimo, y la aplicación debe abrirse manualmente. La lectura en segundo plano está disponible a partir del iPhone XS y XR.
Sacarle partido
Cuenta con la hoja y deja que los demás cuenten con ella también. En un flujo de trabajo donde alguien lee muchas etiquetas, el ritmo depende de la aplicación: empezar una vez y tocar una etiqueta tras otra si mantiene la sesión abierta, iniciando una sesión nueva cuando la anterior se agota, o empezar, tocar, cerrar, repetir si cierra la sesión después de cada etiqueta.
Mantén el teléfono quieto durante la sesión en lugar de dar toques repetidos, porque el sistema ya está buscando y lo que interrumpe es el movimiento.
Para tiradas de producción, esta es una razón para preferir Android como dispositivo de codificación: la interacción es más ligera por etiqueta, y eso se acumula a lo largo de cientos.
Y para un despliegue público nada de esto se aplica, porque los visitantes usarán el camino de segundo plano o ninguno.
Preguntas frecuentes
¿Puede una app leer sin enseñar la hoja?
No. El sistema realiza la interacción y presenta su propia interfaz, así que no hay ningún camino discreto para una aplicación.
¿Por qué la hoja se agota?
Una sesión está acotada, y termina cuando la aplicación la cierra, cuando el usuario la cancela o al cabo de un periodo. No está diseñada para esperar sin límite.
¿Por qué leer muchas etiquetas se hace lento en el iPhone?
Porque cada sesión hay que iniciarla desde la aplicación, y ninguna dura sin límite. Una misma sesión puede leer varias etiquetas si la aplicación la mantiene abierta, pero se agota igualmente durante una serie larga, y una aplicación que la cierra después de cada etiqueta inicia una nueva cada vez. A lo largo de un lote, eso se acumula.
¿Se aplica lo mismo a la escritura?
Sí. Escribir usa el mismo modelo de sesión, razón por la cual el teléfono tiene que estar en la mano con la aplicación abierta.