# Интеграция с Crashlytics

<Aside type="caution" icon="setting" title="Требуется помощь разработчика">
 Вам понадобится помощь вашей команды разработчиков для настройки интеграции. Пожалуйста, поделитесь с ними этим руководством.
</Aside>

Доверие — это то, что можно строить со временем и потерять в мгновение ока. Привлекая людей в ваше приложение, вы хотите построить с ними долгосрочные отношения, и сбои в приложении могут стать решающим фактором.

Что, если бы у вас была возможность сказать «простите» очень личным образом? Например, ваша статистика показывает, что 30% ваших пользователей сталкиваются со сбоем в последней версии, и вам просто нужно сказать им обновиться, чтобы доставить исправление. Однако остальные 70% могут быть не рады услышать о возможных проблемах с приложением, которое они так любят.

Именно здесь мы приходим на помощь. Интеграция Crashlytics и Pushwoosh очень проста. Всего с несколькими строками кода вы сможете нацеливаться и уведомлять только тех пользователей, которые столкнулись с определенным сбоем в приложении, не беспокоя остальную часть вашей аудитории.

Давайте посмотрим, как это работает.

## Интеграция с Crashlytics

Прежде всего, нам нужно передать в [Crashlytics](https://firebase.google.com/docs/crashlytics) некоторый идентификатор, который поможет нам в дальнейшем нацеливаться на пользователя.
Crashlytics предоставляет для этой цели метод **setUserIdentifier** (ссылка на [iOS](https://docs.fabric.io/ios/crashlytics/enhanced-reports.html#user-identifiers), ссылка на [Android](https://docs.fabric.io/android/crashlytics/enhanced-reports.html#user-information)).

В нашем случае нам нужно установить его в Pushwoosh Hardware ID. Как вы, возможно, знаете, Pushwoosh Hardware ID — это _IDFV_ (или _IDFA_, если вы подключаете _AdSupport.framework_) на iOS и в большинстве случаев _Android Id_ или _Serial Number_ на Android.

Этот код делает это простым:

<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>

Вот и все! Теперь вы собираете User ID с помощью Crashlytics.

## Загрузка User ID из отчетов о сбоях в Crashlytics

Обратите внимание, что согласно документации Fabric, может потребоваться до 24 часов, чтобы кнопка «Export IDs» появилась в отчете о сбое на панели управления Crashlytics.

<img src="/integrations-crashlytics-integration-1.webp" alt="Кнопка Export IDs в отчете о сбое Crashlytics"/>

Нажатие на кнопку _Export IDs_ загрузит файл _user-data.csv_.
Файл имеет следующую структуру:

```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
```