> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pnlight.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Интеграция

> Проверяйте подключение SDK PNLight, последние установки, атрибуцию, события и сигналы Remote UI, управляйте тестовыми устройствами и копируйте токен SDK.

Страница **Integration** показывает, обменивается ли приложение данными с PNLight. Здесь можно скопировать токен SDK проекта, убедиться в поступлении каждого сигнала, управлять интеграцией App Store и тестовыми устройствами, а также диагностировать неверную аналитику.

Откройте ее через пункт **Integration** на боковой панели проекта.

## Статус интеграции

Карточка в заголовке показывает общее состояние подключения.

| Состояние       | Значение                                               |
| --------------- | ------------------------------------------------------ |
| Connected       | Проект получил сообщение SDK за последние 48 часов.    |
| Needs attention | Последнее сообщение SDK получено более 48 часов назад. |
| Not connected   | Проект еще не получал сообщений SDK.                   |

Карточка также показывает **SDK version** и **platform** (iOS, React Native, Flutter или Swift Package Manager) из последней установки, а также время последнего сообщения среди всех сигналов.

<Tip>Если после выпуска отображается **Not connected**, убедитесь, что сборка использует токен SDK проекта с этой страницы.</Tip>

## Токен SDK

Токен SDK связывает вызовы SDK приложения с проектом PNLight.

<Steps>
  <Step title="Откройте проект">Выберите проект на панели управления.</Step>
  <Step title="Откройте Integration">Откройте **Integration** на боковой панели проекта.</Step>
  <Step title="Скопируйте токен SDK">Скопируйте токен из карточки в заголовке.</Step>
</Steps>

Передайте токен методу инициализации SDK.

<CodeGroup>
  ```swift Swift theme={null}
  await PNLightSDK.shared.initialize(apiKey: "pnlight_sdk_token")
  ```

  ```tsx React Native theme={null}
  await initialize("pnlight_sdk_token");
  ```

  ```dart Flutter theme={null}
  await PNLightSDK.initialize('pnlight_sdk_token');
  ```
</CodeGroup>

## Руководства по интеграции

Кнопки быстрого доступа ведут к инструкциям для каждой платформы:

* [iOS Swift](/ru/sdk/ios-swift)
* [React Native](/ru/sdk/react-native)
* [Flutter](/ru/sdk/flutter)

## Интеграция App Store

На странице Integration есть раздел **AppStore** для отчетности о покупках и подписках iOS. Его настройки должны соответствовать приложению, использующему токен SDK.

В этом разделе можно:

* Скопировать URL для App Store Server Notifications.
* Сохранить issuer ID App Store Connect.
* Сохранить общий секрет App Store.
* Загрузить ключ покупок `.p8`.

После сохранения данных укажите URL PNLight в рабочих и sandbox-полях серверных уведомлений App Store Connect. Полная инструкция доступна в разделе [«Интеграция App Store»](/ru/dashboard/app-store-credentials).

## Тестовые устройства

Добавьте IDFA тестовых устройств или ID пользователей SDK, которым нужно всегда получать Remote UI в тестовом режиме. Они могут получать Remote UI, даже если обычный таргетинг или защита от захвата экрана запрещают показ.

Используйте тестовые устройства для QA-сборок, локальной проверки и проверки релизов. Добавить или удалить тестового пользователя можно и в профиле клиента. После тестирования отключите или удалите записи.

## Сигналы

Пошаговый список показывает сигналы SDK. Для каждого сигнала указано, получал ли его PNLight, число сообщений и время последнего сообщения.

| Сигнал       | Значение                                                             |
| ------------ | -------------------------------------------------------------------- |
| Installs     | Приложение вызвало endpoint установки или инициализации.             |
| Attributions | Приложение передало данные атрибуции провайдера, например AppsFlyer. |
| Events       | Приложение отправило пользовательское событие.                       |
| Remote UI    | Приложение запросило плейсмент Remote UI и зарегистрировало показ.   |

Сигнал получает статус **Needs attention**, если последнее сообщение поступило более 48 часов назад, даже когда остальные сигналы исправны. Так можно заметить регрессию после релиза: например, установки продолжают поступать, но атрибуция прекращается.

## Основные проверки

Если после релиза сигнал сохраняет статус **Not received**:

1. Убедитесь, что сборка использует токен SDK этого проекта.
2. Убедитесь, что нужный вызов SDK выполняется на реальном устройстве после инициализации SDK.
3. Для атрибуции проверьте, что провайдер возвращает данные, а приложение передает их в SDK.
4. Для Remote UI убедитесь, что плейсмент существует в разделе [«Плейсменты Remote UI»](/ru/dashboard/remote-ui-placements) и приложение его запрашивает.

Подробнее см. в разделе [«Проблемы с настройкой SDK»](/ru/troubleshooting/sdk-setup).
