# Entendendo os identificadores de dispositivo no Pushwoosh

Existem duas maneiras de identificar um dispositivo específico registrado no Pushwoosh – um ID de hardware (HWID) e um push token.

## HWID

HWID (ou Hardware ID) é um identificador chave atribuído ao dispositivo pelo SDK da Pushwoosh.

#### HWID do Android

Para dispositivos Android, o HWID é um conjunto aleatório de letras e dígitos gerado pelo primeiro aplicativo com o SDK da Pushwoosh instalado no dispositivo. Ele é posteriormente compartilhado com outros aplicativos que contêm o SDK da Pushwoosh, de modo que todos esses aplicativos terão o mesmo HWID como resultado.

No entanto, se um usuário excluir todos os aplicativos com o SDK da Pushwoosh e depois reinstalar alguns, um novo HWID será gerado novamente.

Exemplo de HWID do Android: `5dcaed99-e1e0-44dc-bde2-b96188b99e9e`

#### HWID do iOS

Para dispositivos iOS, o IDFV ([Identifier for Vendor](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor)) é usado como HWID do dispositivo. Ele não mudará enquanto houver pelo menos um aplicativo do mesmo fornecedor instalado no dispositivo.

Exemplo de HWID do iOS (somente em maiúsculas!): `CBAF8ED1-17FB-49A3-73BD-DC79B63AEF93`

## Push token

Push token (token do dispositivo) é uma chave única para a combinação aplicativo-dispositivo emitida pelos gateways de notificação push da Apple ou do Google. Ele permite que gateways e provedores de notificação push roteiem mensagens e garantam que a notificação seja entregue à combinação única aplicativo-dispositivo para a qual se destina.

#### Push token do iOS

Os push tokens de dispositivos iOS são strings com 64 símbolos hexadecimais. Exemplo de push token do iOS: `03df25c845d460bcdad7802d2vf6fc1dfde97283bf75cc993eb6dca835ea2e2f`

<Aside type="caution">
Certifique-se de que os push tokens do iOS que você usa ao direcionar dispositivos específicos em suas solicitações de API estejam em **letras minúsculas**.
</Aside>

#### Push token do Android

Os push tokens de dispositivos Android podem diferir em comprimento (geralmente abaixo de 255 caracteres) e normalmente começam com APA91b…; no entanto, também podem ter um prefixo separado por dois pontos. Exemplo de push token do Android: `APA91bFoi3lMMre9G3XzR1LrF4ZT82_15MsMdEICogXSLB8-MrdkRuRQFwNI5u8Dh0cI90ABD3BOKnxkEla8cGdisbDHl5cVIkZah5QUhSAxzx4Roa7b4xy9tvx9iNSYw-eXBYYd8k1XKf8Q_Qq1X9-x-U-Y79vdPq`

<Aside type="caution">
Usar tokens de dispositivo brutos para direcionar dispositivos específicos não é a maneira mais confiável, porque os push tokens do FCM tendem a mudar de tempos em tempos, e é difícil dizer com que frequência isso ocorre.
</Aside>

## Coletando logs, HWID e push token de um dispositivo

### iOS

Primeiro, se você tiver acesso ao código-fonte do seu aplicativo, certifique-se de que `Pushwoosh_LOG_LEVEL` em seu aplicativo esteja definido como `VERBOSE`. Para fazer isso, verifique a chave de string `Pushwoosh_LOG_LEVEL` em seu arquivo `Info.plist`. Se não, pule para o próximo passo. Aqui estão os valores possíveis para esta chave:

* `NONE` - Sem logs do SDK
* `ERROR` - Exibir apenas erros no console
* `WARNING` - Também exibir avisos
* `INFO` - Adicionar mensagens informativas
* `DEBUG` - Adicionar informações de depuração
* `VERBOSE` - Todos os logs do SDK

O valor da chave `VERBOSE` permite que o SDK da Pushwoosh exiba informações importantes sobre as ações de registro.

2. Em seguida, conecte o dispositivo ao seu Mac e inicie o Xcode. Vá para Window->Device and Simulators.

<img src="/pushwoosh-knowledge-hub-device-identifiers-1.webp" alt="Janela de Dispositivos e Simuladores do Xcode mostrando o dispositivo iOS conectado"/>

3. Na janela aberta, selecione seu dispositivo conectado e clique no triângulo para cima no canto inferior esquerdo para ver o console do dispositivo:

<img src="/pushwoosh-knowledge-hub-device-identifiers-2.webp" alt="Visualização do console do dispositivo no Xcode mostrando os logs do dispositivo com o botão de triângulo para cima destacado"/>

A partir da versão 9.3 do Xcode, o processo de obtenção do log do console do dispositivo foi ligeiramente alterado. Tudo o que você precisa fazer é ir ao seu Launchpad e iniciar o aplicativo "Console". Selecione seu dispositivo na barra lateral esquerda. É isso!

<img src="/pushwoosh-knowledge-hub-device-identifiers-3.webp" alt="Aplicativo Console do macOS mostrando o dispositivo iOS conectado selecionado na barra lateral esquerda com os logs do dispositivo exibidos"/>

4. Em seguida, inicie seu aplicativo no dispositivo e aguarde a janela de diálogo. Permita notificações push para seu aplicativo.

5. Após esses passos, selecione todo o log do dispositivo na janela do console e copie-o para qualquer editor de texto.

A solicitação de API da Pushwoosh [`/registerDevice`](/pt/developer/api-reference/device-api/) é o que você está procurando:

<img src="/pushwoosh-knowledge-hub-device-identifiers-4.webp" alt="Log do console do dispositivo mostrando a solicitação de API registerDevice com os parâmetros hwid e push token visíveis"/>

Se o dispositivo for registrado corretamente, esta solicitação deve conter os seguintes parâmetros, incluindo os valores "hwid" e "push token":

```txt title="Exemplo"
x
| Pushwoosh request:
| Url: https://D868A-C13C1.api.pushwoosh.com/json/1.3/registerDevice
| Payload: {"request":{"gateway":"production","jailbroken":0,"app_version":"1.9","application":"D868A-C13C1","sounds":["bubble.wav"],"device_type":1,"userId":"1457691684303547","language":"en","hwid":"FBCA07FE-05EE-4770-B4BA-AB6737BC1A98","package":"com.pushwoosh.pushon","timezone":"25200","push_token":"ae784019d1b8c8e38a1ea06f0800c17a4fa986d6e2d346fc79373e92439ff8f7","os_version":"11.2.2","v":"5.5.1","device_model":"iPhone7,1"}}
| Status: "200 no error"
| Response: {"status_code":200,"status_message":"OK","response":{"iosCategories":[{"categoryId":0,"buttons":[{"id":"33389","label":"test","type":"0","startApplication":0},{"id":"1233","label":"ajhdkj","type":"1","startApplication":0}]}]}}
x
```

O aviso com um push token do seu dispositivo também deve estar presente:

```
<Notice>: [PW] [I] -[PWPushNotificationsManagerCommon] Registered for push notifications: ae784019d1b8c8e38a1ea06f0800c17a4fa986d6e2d346fc79373e92439ff8f7
```

### Android

1. Se você tiver acesso ao código-fonte do aplicativo, certifique-se de que o nível de log do Pushwoosh esteja definido como `NOISE`. Para fazer isso, adicione os metadados `com.pushwoosh.log_level` com o valor `NOISE` ao `AndroidManifest.xml`.

2. Em seguida, execute o Android Studio no seu Mac/PC e vá para Tools -> Android -> Android Device Monitor.

<img src="/pushwoosh-knowledge-hub-device-identifiers-5.webp" alt="Janela do Android Device Monitor no Android Studio mostrando o dispositivo Android conectado"/>

3. Conecte seu dispositivo ao Mac/PC e inicie o aplicativo. Aguarde cerca de 30 segundos, selecione todo o log do dispositivo na janela do console e copie-o para qualquer editor de texto.

<img src="/pushwoosh-knowledge-hub-device-identifiers-6.webp" alt="Janela de log do console do Android Device Monitor mostrando os logs do dispositivo com a solicitação registerDevice visível"/>

Observe que nas versões mais recentes do Android Studio, você também pode usar a ferramenta Logcat para obter o log do console do dispositivo. Execute o Android Studio e vá para View -> Tool Windows -> Logcat:

<img src="/pushwoosh-knowledge-hub-device-identifiers-7.webp" alt="Interface do Android Studio mostrando a janela da ferramenta Logcat acessada a partir do menu View"/>

Depois disso, você pode localizar o log do dispositivo na janela Logcat:

<img src="/pushwoosh-knowledge-hub-device-identifiers-8.webp" alt="Janela Logcat do Android Studio exibindo logs do dispositivo com a solicitação de API registerDevice visível"/>

Aqui está o exemplo abaixo, de como a solicitação de API Pushwoosh /registerDevice se parece dentro do log do console do dispositivo:

<img src="/pushwoosh-knowledge-hub-device-identifiers-9.webp" alt="Log do console do dispositivo Android mostrando a solicitação de API registerDevice com os parâmetros hwid e push token destacados"/>

Encontre o valor dos parâmetros "hwid" e "push token" na solicitação:

```txt title="Exemplo"
[RequestManager]
x
| Pushwoosh request:
| Url: https://D868A-C13C1.api.pushwoosh.com/json/1.3/registerDevice
| Payload: {"request":{"application":"D868A-C13C1","hwid":"fc79efabee7649ec","v":"5.5.2","device_type":3,"userId":"fc79efabee7649ec","device_name":"Phone","language":"en","timezone":25200,"android_package":"com.pushwoosh.pushon","jailbroken":0,"device_model":"Sony F8332","os_version":"8.0.0","idfa":"d43ad490-4e6a-48a8-b8b9-f20b76fbf07b","app_version":"1.5","push_token":"dwMAeCRabUE:APA91bGSk8SqCSycxfltrWCV9KtXGo48-8qvNKfzHn758PW7lLXSi_Wd7y3gqw-lbexsjLwsaXStpELTJUAQVZ3ybNqAUmfw-we-62rTjpNbvBa4oPYTwaPCr3s4M05xNv8jGau-MeA_","sounds":"[]"}}
| Response: {"status_code":200,"status_message":"OK","response":null}
x
[RequestManager] registerDevice response success
```

O push token está incluído no aviso de registro do dispositivo:

```
I/Pushwoosh(12733): [DeviceRegistrar] Registered for pushes: dwMAeCRabUE:APA91bGSk8SqCSycxfltrWCV9KtXGo48-8qvNKfzHn758PW7lLXSi_Wd7y3gqw-lbexsjLwsaXStpELTJUAQVZ3ybNqAUmfw-we-62rTjpNbvBa4oPYTwaPCr3s4M05xNv8jGau-MeA_
03-30 14:45:10.539: D/PushOn(12733): Registered for push notifications
```

### Chrome (desktop)

1. Vá para o seu site.

2. Clique com o botão direito em qualquer lugar da página e pressione "Inspecionar".

<img src="/pushwoosh-knowledge-hub-device-identifiers-10.webp" alt="Ferramentas de Desenvolvedor do Chrome abertas com a opção de menu de contexto Inspecionar Elemento visível"/>

3. Na janela aberta, vá para a aba "Application".

4. Em seguida, na barra lateral esquerda, escolha IndexedDB -> Pushwoosh\_SDK\_Store -> keyValue. Aqui, encontre os parâmetros HWID e push token.

<img src="/pushwoosh-knowledge-hub-device-identifiers-11.webp" alt="Aba Application das Ferramentas de Desenvolvedor do Chrome mostrando IndexedDB com Pushwoosh SDK Store e keyValue contendo HWID e push token"/>

### Chrome (mobile)

1. Conecte seu dispositivo móvel ao computador.

2. Vá para chrome://inspect/#devices no seu Chrome de desktop.

3. Abra seu site no seu Chrome móvel.

4. Assim que o site for aberto no seu Chrome móvel, você verá a página correspondente na página do Chrome de desktop. Por favor, dê uma olhada na captura de tela abaixo:

<img src="/pushwoosh-knowledge-hub-device-identifiers-12.webp" alt="Página de depuração remota do Chrome mostrando o dispositivo móvel conectado com o botão Inspecionar destacado"/>

5. Pressione o botão "Inspect" destacado na captura de tela acima.

6. A seguinte janela aparecerá no seu Chrome de desktop. Lá, na aba "Application", abra IndexedDB -> PUSHWOOSH\_SDK\_STORE. Depois disso, clique em keyValue e abra a seção API\_PARAMS:

<img src="/pushwoosh-knowledge-hub-device-identifiers-13.webp" alt="Aba Application das Ferramentas de Desenvolvedor do Chrome mostrando IndexedDB PUSHWOOSH SDK STORE com a seção API_PARAMS contendo hwid e push token"/>

Na seção API\_PARAMS, você encontrará os parâmetros "hwid" e "push token" com seus valores.

### Safari

1. Vá para o seu site.
2. Clique com o botão direito em qualquer lugar da página e selecione Inspecionar Elemento.
3. Vá para a aba Storage -> Indexed Databases -> PUSHWOOSH\_SDK\_STORE -> keyValue.
4. Expanda API\_PARAMS e encontre os valores "hwid" e "push token" aqui.

<img src="/pushwoosh-knowledge-hub-device-identifiers-14.webp" alt="Aba Storage das Ferramentas de Desenvolvedor do Safari mostrando Indexed Databases com PUSHWOOSH SDK STORE keyValue contendo API_PARAMS com hwid e push token"/>