Há uma semana, expliquei passo a passo como funciona o Contador de Toques NFC: o chip conta as suas próprias leituras, a aplicação insere bytes marcadores de posição, e a tag substitui a contagem ao vivo e o ID da tag naquilo que transporta a cada toque. Esse artigo para onde a tag para, ou seja, no momento em que os valores chegam ao seu telemóvel.
A pergunta que me têm feito desde então é a próxima óbvia: “ótimo, a tag está a entregar-me 049F50824F1390x000007 - e agora?” Se está no iPhone e quer agir sobre esses valores dentro de um Atalho, tem de os processar. É um trabalho de manipulação de cadeias pequeno mas chato, e prefiro que não tenha de o escrever você mesmo.
Por isso construí dois Atalhos e estou a partilhá-los como ligações iCloud. Um é o cérebro. O outro é uma demonstração que usa o cérebro.
O Que a Tag Lhe Entrega
Antes dos atalhos: uma revisão rápida do que eles recebem de facto, porque isso importa para a forma como os usa.
No ecrã de configuração do Contador de Toques, escolhe um tipo de conteúdo para a tag: URL, Email, SMS ou Atalho. Quando ativa as opções Contador de Toques e/ou ID da Tag, a aplicação insere bytes marcadores de posição dentro desse conteúdo, e o chip troca-os pelos valores ao vivo a cada leitura. Usando 049F50824F1390 como ID da tag e 000007 como contagem, os quatro tipos de conteúdo acabam por ficar assim:
URL:
https://nfc.cool/tap-counter/torna-sehttps://nfc.cool/tap-counter/?nfc=049F50824F1390x000007Corpo do email:
Hi, here's my card.torna-seHi, here's my card. 049F50824F1390x000007Corpo do SMS:
Order confirmed!torna-seOrder confirmed! 049F50824F1390x000007Entrada do atalho:
log-entrytorna-selog-entry 049F50824F1390x000007
O URL acima é real. A nossa página de teste ao vivo do contador de toques está configurada para ler o valor ?nfc= diretamente da sua própria barra de endereço, por isso, se quiser ver a substituição acontecer antes de escrever a sua própria automatização, grave uma tag a apontar para https://nfc.cool/tap-counter/ com ambas as opções ativadas, toque nela, e a página mostra-lhe o ID da tag e a contagem que acabou de receber.
Quando o tipo de conteúdo é Atalho, a NFC.cool executa o atalho escolhido através de shortcuts://run-shortcut?name=Your%20Shortcut&input=text&text=<payload>, com os valores NFC acrescentados já no texto. A entrada do seu atalho é uma cadeia de texto simples. A sua única tarefa é voltar a extrair daí o ID da tag e a contagem.
Consoante as opções que estivessem ativadas quando gravou a tag, pode obter o padrão completo (14 caracteres hexadecimais, um x e depois 6 caracteres hexadecimais), ou apenas o ID da tag de 14 hexadecimais, ou apenas a contagem de 6 hexadecimais. O processador lida com os três casos.
Parse NFC Tap Counter - o Processador Reutilizável
Instalar o Parse NFC Tap Counter
Este é o cérebro. Não tem qualquer interface, recebe uma única entrada de texto e devolve um Dicionário. Isto é deliberado: um atalho utilitário sem interface combina-se de forma limpa dentro de qualquer outra coisa que construa, e um Dicionário é o mais fácil de consumir a partir de outro atalho com a ação Get Dictionary Value.
Eis o que o Dicionário contém:
tagID- o ID da tag de 14 caracteres hexadecimais, ou uma cadeia vazia se a opção estivesse desligada.count- a contagem de leituras como um número decimal (por isso000007aparece como7, e00000Acomo10), ou vazio se a opção estivesse desligada.countHex- a contagem hexadecimal original de 6 caracteres, caso queira usá-la tal como está. Vazio se ausente.hasTagID,hasCount- valores booleanos para ramificação, para que possa escrever If hasCount is true sem ter de testar a cadeia você mesmo.content- a entrada com a carga NFC removida de forma limpa, para que o resto do seu atalho veja a entrada tal como estava antes de a tag a vestir. Se a entrada era um URL com?nfc=..., recebe o URL de volta sem isso. Se era um corpo de email com o ID da tag acrescentado, recebe o corpo de volta sem isso.raw- a entrada original sem modificações, caso queira registá-la ou recorrer a ela.
Para o chamar a partir do seu próprio atalho, a receita são três ações:
Receive Shortcut Input como texto (a carga NFC chega aqui).
Run Shortcut -> Parse NFC Tap Counter, com esse texto como entrada. Desligue “Show When Run” para que se mantenha invisível.
Get Dictionary Value -> escolha
tagID,count,content, ou as chaves que lhe interessarem.
É só isto. A partir do passo 3 pode fazer o que quiser com os valores: ramificar com base em hasTagID, registar count numa Nota, disparar um webhook com o JSON, qualquer coisa. O processador não assume o que o seu atalho quer fazer com o resultado, e é exatamente por isso que é pequeno e reutilizável.
Uma nota sobre a contagem: é um Número a sério no Dicionário, não uma cadeia de texto, por isso pode introduzi-la diretamente numa comparação Calculate ou If sem a voltar a converter. O passo de hexadecimal para decimal já está feito.
NFC Tag Alert - a Demonstração
Esta é uma demonstração que eu próprio instalaria logo no primeiro dia, mesmo que não tenha qualquer intenção de usar alertas em produção. Recebe uma entrada de texto, executa o processador e mostra um único alerta intitulado NFC Tag Scanned com duas linhas:
Tag ID: 049F50824F1390
Scans: 7A razão pela qual a instalaria primeiro é que é a verificação de sanidade mais rápida possível para uma tag com contador ativado. Grave uma tag a partir da NFC.cool Tools com o tipo de conteúdo Atalho e o nome NFC Tag Alert, ative as opções Contador de Toques e ID da Tag, grave-a, toque nela. Aparece um alerta com os valores reais da sua tag física.
Se o alerta mostrar os valores que esperava, a sua tag está a fazer o seu trabalho e pode avançar para construir algo mais elaborado. Se a contagem estiver errada ou faltar o ID da tag, sabe que o problema é a tag (ou as opções que escolheu ao gravá-la) e não o seu próprio atalho. Eliminar toda uma categoria de depuração do tipo “isto é sequer culpa do chip?” justifica bem instalar um atalho de cinco ações.
Se alguma vez se questionar sobre como chamar o processador corretamente, este atalho é também o exemplo prático mais pequeno possível. Abra-o, veja as cinco ações, copie a estrutura para o seu próprio atalho.
Como Integrá-lo no Seu Próprio Atalho
Há duas formas de encaminhar o conteúdo da tag para o seu atalho. O processador lida bem com ambas.
Conduzido pela tag (a carga do Atalho). Grave a tag com o tipo de conteúdo Atalho, escolha o seu atalho pelo nome, ative as opções que quiser. A partir daí, cada toque lança o seu atalho com a carga NFC já na entrada. Dentro do seu atalho, chame o Parse NFC Tap Counter sobre essa entrada e fica com tagID / count prontos a usar.
Conduzido pelo URL (a carga do URL). Este é o caso mais comum. A tag transporta um URL, o seu telemóvel abre esse URL ao tocar, e a contagem segue junto como ?nfc=.... Se quiser que um Atalho trate do toque em vez de (ou em conjunto com) um navegador, pode: encaminhe o URL através de um Atalho que aceite uma entrada de página web do Safari, e depois execute o Parse NFC Tap Counter sobre o URL. O processador remove o segmento ?nfc= de forma limpa e devolve-lhe o URL sem ele como content, para que o possa passar a um navegador, a uma chamada de API, ou a qualquer outro sítio que espere um URL simples.
Eis um exemplo de quatro ações para “registar cada leitura numa nota no Notas da Apple”:
Receive Shortcut Input como texto.
Run Shortcut -> Parse NFC Tap Counter, com a entrada como texto.
Get Dictionary Value -> três consultas seguidas para
tagID,countecontent. Guarde cada uma numa variável.Append to Note -> uma única linha como
[Current Date] tag=<tagID> count=<count> url=<content>.
Fica agora com um registo de toques contínuo escrito pela própria tag. Sem backend, sem análise de terceiros, sem conta em lado nenhum.
Algumas Ideias para Desenvolver
Um punhado de pequenas coisas que o processador desbloqueia, escritas para que não as tenha de inventar de raiz:
Ramificar com base no ID da tag. Um atalho, muitas tags. Acrescente uma ação If por cada ID de tag conhecido: se a tag da porta do escritório foi lida, silencie as notificações; se a tag do estúdio foi lida, defina um modo de foco; se a tag da cozinha foi lida, inicie um temporizador. O ID da tag identifica a tag física, não o conteúdo, por isso pode dar o mesmo URL a todas as tags e ainda assim reagir a cada uma individualmente.
Escolher um vencedor na leitura N. Combine
hasCountcom uma comparação. Secountfor igual a 100, dispare uma mensagem de confirmação; para todas as outras leituras, faça o tratamento normal. O chip impõe a ordem; o seu atalho limita-se a lê-la.Enviar para um webhook. Combine isto com a funcionalidade de Webhooks da NFC.cool se quiser tratamento no servidor sem escrever uma aplicação iOS: envie os valores processados como JSON, e deixe o servidor continuar a partir daí. Duas ações no iOS e a sua tag fica ligada a qualquer coisa que fale HTTP.
Registar num ficheiro ou numa Nota. A mais simples e surpreendentemente útil. Acrescente
timestamp, tagID, counta um ficheiro contínuo no iCloud Drive ou a uma única Nota, e fica com um registo de toques pelo qual pode navegar ou que pode representar graficamente mais tarde. Bom para acompanhar a interação numa única tag sem montar infraestrutura.
Se construir algo interessante com estes, gostaria genuinamente de ver.
Um Breve Agradecimento
Ambos os atalhos foram construídos com o Shortcuts Playground, o plugin de Federico Viticci para gerar Atalhos do iOS a partir de linguagem natural. É uma excelente ferramenta, e quero agradecer-lhe por a ter lançado - sem ela, estes dois teriam-me levado muito mais tempo a montar.
Uma Nota Rápida para Android
Os Atalhos são uma aplicação da Apple, por isso estes dois só funcionam no iPhone. A funcionalidade Contador de Toques em si funciona em ambas as plataformas, porque a substituição acontece dentro do chip e não se importa com qual o telemóvel que está a ler a tag. No Android, os tipos de carga URL, Email e SMS comportam-se da mesma forma que no iOS; se quiser automatizações semelhantes por lá, aplicações como o Tasker ou o MacroDroid conseguem pegar num URL com ?nfc=... e extrair os valores com as suas próprias ações de manipulação de cadeias. O formato em trânsito é o mesmo.
Experimente
Se quiser a explicação mais aprofundada de como a funcionalidade Contador de Toques realmente funciona nos bastidores, está no artigo anterior. E se quiser ver uma tag com contador ativado em ação sem configurar primeiro a sua própria automatização, a nossa página de demonstração ao vivo do contador de toques lê o valor ?nfc= diretamente do seu próprio URL: grave uma tag que aponte para lá, toque nela, veja a contagem e o ID da tag aparecerem.
A funcionalidade Contador de Toques NFC em si vive na NFC.cool Tools, no iPhone e no Android. Para o conjunto completo de ferramentas que construí em torno do NFC, dê uma vista de olhos na funcionalidade de leitor e gravador NFC.