# Integración con Crashlytics

<Aside type="caution" icon="setting" title="Se necesita la ayuda de un desarrollador">
 Necesitará la ayuda de su equipo de desarrollo para configurar la integración. Por favor, comparta esta guía con ellos.
</Aside>

La confianza es algo que se puede construir con el tiempo y perder en un abrir y cerrar de ojos. Una vez que ha atraído a la gente a su aplicación, quiere tener una relación a largo plazo con ellos, y los fallos de la aplicación pueden convertirse en un factor decisivo.

¿Y si tuviera la oportunidad de decir "lo siento" de una manera muy personal? Por ejemplo, sus estadísticas muestran que el 30% de sus usuarios están experimentando un fallo con la última versión, y solo necesita decirles que actualicen para entregar una solución. Sin embargo, el otro 70% podría no estar contento de oír hablar de posibles problemas con la aplicación que tanto les gusta.

Aquí es donde intervenimos para ayudar. La integración de Crashlytics y Pushwoosh es muy sencilla. Con solo unas pocas líneas de código, podrá dirigirse y notificar solo a aquellos usuarios que experimentaron un fallo particular en la aplicación, sin tener que molestar al resto de su audiencia.

Veamos cómo funciona.

## Integración de Crashlytics

En primer lugar, tenemos que proporcionar un identificador a [Crashlytics](https://firebase.google.com/docs/crashlytics) que nos ayudará a dirigirnos al usuario más tarde.
Crashlytics proporciona el método **setUserIdentifier** para este propósito (enlace a [iOS](https://docs.fabric.io/ios/crashlytics/enhanced-reports.html#user-identifiers), enlace a [Android](https://docs.fabric.io/android/crashlytics/enhanced-reports.html#user-information)).

En nuestro caso, necesitamos establecerlo como el Hardware ID de Pushwoosh. Como sabrá, el Hardware ID de Pushwoosh es _IDFV_ (o _IDFA_ si se enlaza con _AdSupport.framework_) en iOS y, en la mayoría de los casos, _Android Id_ o _Serial Number_ en Android.

Este código lo simplifica:

<Tabs>
<TabItem label="Java">
```java
String userId = pushManager.getPushwooshHWID(this);
Crashlytics.setUserIdentifier(userId);
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
NSString * userId = [[PushNotificationManager pushManager] getHWID];
[Crashlytics setUserIdentifier:userId];
```
</TabItem>
</Tabs>

¡Eso es todo! Ahora está recopilando los ID de usuario con Crashlytics.

## Descarga de los ID de usuario desde los informes de fallos en Crashlytics

Tenga en cuenta que, según la documentación de Fabric, pueden pasar hasta 24 horas para que el botón "Export IDs" aparezca en el informe de detalles del fallo en el panel de control de Crashlytics.

<img src="/integrations-crashlytics-integration-1.webp" alt="Botón Export IDs en el informe de detalles de fallos de Crashlytics"/>

Al hacer clic en el botón _Export IDs_ se descargará el archivo _user-data.csv_.
El archivo tiene la siguiente estructura:

```javascript title="user-data.csv"
userId,email,name,mostRecentTimestamp,count
XXXXXXXXXXXXXXXX,test@example.com,John Snow,MAR 03 2016 01:22,1
YYYYYYYYYYYYYYYY,another@example.com,John Snow Jr,MAR 03 2016 01:11,1
```