Ir para o conteúdo
Idioma: PT

Por que o iPhone mostra uma folha de leitura quando um aplicativo lê uma tag?

Porque quem conduz a leitura é o sistema e não o aplicativo. A folha é o sistema assumindo a interação por um período limitado, e é isso que explica o tempo limite, a redação fixa, e por que um aplicativo não consegue ler em silêncio em segundo plano.

Quem está conduzindo a leitura

O aplicativo pede uma sessão de leitura. O sistema aceita, apresenta a interface própria, executa a interação com a tag, e devolve o resultado.

A Apple documenta o framework por trás disso como Core NFC.

A consequência é que a folha não é uma tela do aplicativo. Ela pertence ao sistema, e é por isso que ela parece igual em aplicativos diferentes e por isso que a redação dela não é algo que um desenvolvedor escolheu.

Ela é limitada no tempo

Uma sessão é um período durante o qual o sistema está procurando tags. Ela termina quando o aplicativo a encerra, o que ele pode fazer logo depois da primeira tag lida, quando o usuário a cancela, ou depois de um tempo.

É por isso que uma folha de leitura deixada aberta acaba desistindo em vez de esperar indefinidamente, o que surpreende quem espera que ela fique pronta.

Dentro desse período, uma mesma sessão consegue ler uma tag depois da outra se o aplicativo a mantiver aberta. O que torna uma sequência lenta é iniciar sessões: uma por tag quando o aplicativo encerra a sessão depois de cada leitura, e outra cada vez que uma sessão aberta expira. É por isso que os aplicativos que leem muitas tags parecem diferentes no iOS e no Android.

O que isso explica

Por que um aplicativo não consegue ler uma tag em silêncio. Não existe caminho discreto, já que o sistema sempre se apresenta.

Por que um aplicativo não consegue ler em segundo plano. Uma sessão pertence a um aplicativo em uso, e de outro modo não há a quem apresentar uma folha.

Por que gravar precisa do celular na sua mão. O mesmo modelo de sessão se aplica, com o aplicativo fornecendo conteúdo durante uma interação conduzida pelo sistema.

E por que a expressão abertura manual não para de aparecer: um aplicativo que não está aberto não pediu uma sessão, então nada está procurando tags em nome dele.

Pegue o NFC Tools. No iOS ele exige um iPhone 7 ou um modelo posterior com iOS 15.6 no mínimo, e o aplicativo tem de ser aberto manualmente. A leitura em segundo plano está disponível a partir do iPhone XS e XR.

Usar bem

Espere a folha e deixe as pessoas esperarem por ela também. Num fluxo em que alguém lê muitas tags, o ritmo depende do aplicativo: começar uma vez e tocar uma tag depois da outra se ele mantiver a sessão aberta, iniciando uma nova sessão quando a anterior expira, ou começar, tocar, descartar, repetir se ele encerrar a sessão depois de cada tag.

Mantenha o celular parado durante a sessão em vez de tocar repetidamente, já que o sistema já está procurando e o movimento é o que interrompe isso.

Para tiragens de produção, essa é uma razão para preferir o Android como aparelho de codificação: a interação é mais leve por tag, o que se soma ao longo de centenas.

E para uma instalação aberta ao público nada disso se aplica, porque os visitantes vão usar o caminho em segundo plano ou nenhum.

Perguntas frequentes

Um aplicativo pode ler sem mostrar a folha?

Não. O sistema executa a interação e apresenta a interface própria, então não existe caminho discreto para um aplicativo.

Por que a folha expira?

Uma sessão é limitada, terminando quando o aplicativo a encerra, quando o usuário a cancela ou depois de um período. Ela não foi feita para esperar indefinidamente.

Por que ler muitas tags parece lento no iPhone?

Porque cada sessão tem de ser iniciada pelo aplicativo, e nenhuma dura indefinidamente. Uma mesma sessão consegue ler várias tags se o aplicativo a mantiver aberta, mas ela expira mesmo assim durante uma sequência longa, e um aplicativo que a encerra depois de cada tag inicia uma nova toda vez. Ao longo de um lote, isso se soma.

O mesmo vale para gravar?

Sim. Gravar usa o mesmo modelo de sessão, que é por isso que o celular tem de estar na sua mão com o aplicativo aberto.