00:00:00Acabei de encontrar um pacote muito legal que adiciona um detalhe pequeno, mas incrível, aos seus sites
00:00:04que eu nem sabia que queria até agora.
00:00:07O WebHaptics faz exatamente o que promete e permite que seus sites utilizem
00:00:11feedback háptico, seja no Android ou no iOS, fazendo com que pareçam mais
00:00:15um aplicativo nativo. Ele faz isso de uma forma muito limpa e simples, sendo literalmente apenas
00:00:20uma função.
00:00:21E parece que não sou o único que acha isso sensacional; ele está em alta
00:00:24em todo o Twitter e, pelo visto, o Polymarket já implementou esse pacote.
00:00:29Então, vamos mergulhar e ver o que é todo esse barulho, e também falar um pouco sobre como
00:00:33ele funciona, pois o pacote tem um truque muito legal para rodar no iOS.
00:00:43Agora, obviamente é difícil mostrar exatamente o que este pacote faz, pois é
00:00:46uma vibração física do seu telefone, mas é o exato tipo que você sente quando clica
00:00:50em se inscrever no app do YouTube. Mas se você já é inscrito e ainda quer testar
00:00:54isso, o site do WebHaptics é um lugar super divertido para fazer isso. Então, depois de ver
00:00:59o vídeo, recomendo muito conferir, pois ele mostra alguns dos feedbacks comuns,
00:01:02como sucesso e erro, e obviamente a vibração ao clicar em um botão.
00:01:06Ele também tem um editor muito legal para criar seus próprios padrões hápticos, que veremos
00:01:10daqui a pouco.
00:01:11Por enquanto, vamos ao código. Como podem ver, é um pacote npm muito simples,
00:01:15e ele até tem helpers para React, Vue e Svelte, mas você ainda pode usar a variante
00:01:19JavaScript puro se quiser, e a função trigger será a mesma em todas elas.
00:01:23No meu caso, usarei React e vocês podem ver que o código é incrivelmente simples.
00:01:24Tudo o que precisamos fazer é usar o hook useWebHaptics e, a partir dele, obtemos uma função trigger
00:01:28que podemos vincular a algo como um botão para disparar um feedback háptico.
00:01:32Vocês também podem ver que esse hook nos dá uma função cancel, que cancela qualquer
00:01:36vibracão em execução, e também um booleano isSupported para verificar se o navegador
00:01:39suporta feedback háptico.
00:01:44Com esse código simples, quando eu clicar neste botão em um dispositivo Android
00:01:45ou iOS, ele terá uma pequena vibração. Mas estou no notebook no momento,
00:01:48então não vai acontecer nada.
00:01:53Existe uma pequena maneira de sabermos que isso está funcionando enquanto desenvolvemos,
00:01:54que é definir debug como true dentro do hook aqui. Isso significa que quando
00:01:57eu clicar no botão, ele emitirá um som que simula o que seria o feedback
00:02:00háptico.
00:02:04Na hora de personalizar o padrão de vibração, também é super simples e podemos
00:02:05fazer isso na função trigger.
00:02:09O primeiro método é usando alguns presets que já vêm com o pacote, então você
00:02:10pode importar default patterns e neles encontrará predefinições como buzz, error, heavy e
00:02:14várias outras. Você pode sentir como elas são no site também.
00:02:18O segundo método é para quando você quer um padrão de vibração totalmente personalizado.
00:02:21Basta fornecer um array para a função trigger e definir suas vibrações.
00:02:22No momento, tenho quatro vibrações neste padrão. Como podem ver, você define uma vibração
00:02:25com um objeto onde temos um delay, que é o atraso desde a última vibração
00:02:29em milissegundos. Depois temos a duração em milissegundos de quanto tempo ela
00:02:33vai durar, e também um valor de intensidade, onde 1 é a vibração mais forte.
00:02:37Com este padrão que tenho aqui, quando clico no botão, vocês podem ouvir como seria o som,
00:02:41mas imaginem isso vibrando no telefone do usuário.
00:02:46Um bom truque para criar padrões personalizados é usar aquele site, pois eles têm
00:02:49um editor excelente onde você clica para adicionar uma nova vibração ao array,
00:02:53pode arrastar para mudar a duração, arrastar para cima ou para baixo para mudar a intensidade e clicar
00:02:57em play para ouvir o som. E você também pode usar no celular para realmente
00:03:02sentir a sensação.
00:03:06Como eu disse, é um pouco difícil mostrar isso em vídeo, mas espero que tenham
00:03:09entendido a ideia. É um pacote simples, mas o que quero mostrar agora é como isso funciona,
00:03:11já que o iOS não facilitou as coisas.
00:03:14A primeira coisa a saber é que existe uma API que deveria expor a função de vibração
00:03:19do seu telefone simplesmente usando navigator.vibrate.
00:03:21O problema é que isso funciona muito bem no Android, mas o iOS tem zero suporte para isso.
00:03:24Felizmente, há outra maneira de obter feedback háptico no iOS, que é usar um
00:03:27input do tipo switch. Quando o usuário clica nisso no iOS, há um feedback háptico.
00:03:32O que esta biblioteca faz para tirar proveito disso é que, quando acionamos o feedback,
00:03:36ela basicamente clica em um switch invisível para nós, imitando nosso padrão de vibração.
00:03:41Vemos isso aqui embaixo com este checkbox; quando aciono o feedback háptico, ele liga
00:03:44e desliga várias vezes, simulando o switch no iOS.
00:03:49Se você quiser ver esse switch enquanto depura sua aplicação, tudo o que precisa
00:03:53fazer no hook aqui é adicionar a configuração showSwitch e defini-la como true.
00:03:56Se dermos uma olhada rápida no código do pacote em si, dá para ver o que ele está fazendo.
00:03:59Se web haptics forem suportados, a função navigator.vibrate será usada para reproduzir
00:04:03nosso padrão de vibração. No entanto, se não forem suportados, aqui embaixo ele vai clicar
00:04:06naquele switch. E também temos esta função aqui, responsável por criar de fato
00:04:11o padrão de vibração, clicando no switch várias vezes, como vemos aqui embaixo.
00:04:15Achei que era um contorno muito inteligente que valia a pena mostrar, e espero que a Apple não
00:04:19encontre um jeito de bloquear isso ou, se bloquearem, que adicionem suporte para a
00:04:23função vibrate.
00:04:27Isso é basicamente tudo sobre este pacote, então me digam nos comentários se
00:04:31isso é algo que vocês usariam. Aproveitem e se inscrevam, e como sempre, nos vemos
00:04:32no próximo vídeo.
00:04:35[Música]
00:04:38até o próximo.
00:04:41[Música]