---
title: "Отложенные диплинки в Adapty User Acquisition"
description: "Настройте диплинки в Adapty User Acquisition"
---

Отложенные диплинки позволяют передавать в приложение пользовательские данные в момент установки — если пользователь перешёл по рекламному объявлению. Например, сразу после установки и первого запуска можно направить его на определённый экран.

Вот как это работает:

1. Когда пользователь кликает по объявлению, Adapty сохраняет данные клика.
2. Когда Adapty фиксирует событие установки, он получает отложенные данные из этого клика.
3. После установки приложения при первом запуске Adapty извлекает сохранённые данные, и приложение получает пользовательские параметры — вы можете реагировать на разные значения в коде.

Adapty поддерживает следующие параметры отложенных данных:

- `ios_deferred_data`
- `android_deferred_data`
- `deferred_data_sub[1-10]`

Чтобы добавить параметры отложенных данных, добавьте их к ссылке клика в настройках кампании:

1. Скопируйте ссылку клика из вашей кампании.

2. Добавьте параметры к ссылке. Например, если вы хотите, чтобы пользователи iOS попадали на экран «Welcome», ссылка может выглядеть примерно так:

```
https://api-ua.adapty.io/api/v1/attribution/click?adpt_cid=__ADAPTY__ID__&ios_deferred_data=welcome&campaign_id=__CAMPAIGN_ID__&adset_id=__AID__&ad_id=__CID__&campaign_name=__CAMPAIGN_NAME__&adset_name=__AID_NAME__&ad_name=__CID_NAME__&redirect_url=__APP_LINK__
```

3. Обработайте параметры в коде приложения. Обратите внимание: параметры отложенных данных находятся в параметре `payload`, а `payload` — это экранированный JSON, поэтому его нужно распарсить в коде приложения.

Например, вот как обработать установки, при которых `ios_deferred_data` равно `welcome`:

<Tabs groupId="current-os" queryString>
<TabItem value="swift" label="Swift" default>

```swift showLineNumbers
Adapty.delegate = self

nonisolated func onInstallationDetailsSuccess(_ details: AdaptyInstallationDetails) {
    guard
        let payloadStr = details.payload,
        let data = payloadStr.data(using: .utf8),
        let payload = try? JSONSerialization.jsonObject(with: data) as? [String: Any],
        let deeplink = payload["ios_deferred_data"] as? String,
        deeplink == "welcome"
    else { return }

    DispatchQueue.main.async {
        print("Navigate to welcome screen")
        // navigate to your screen here
    }
}
```

</TabItem>

<TabItem value="android" label="Kotlin">

```kotlin showLineNumbers
Adapty.setOnInstallationDetailsListener(object : OnInstallationDetailsListener {
    override fun onInstallationDetailsSuccess(details: AdaptyInstallationDetails) {
        details.payload?.let {
            runCatching {
                val json = JSONObject(it)
                if (json.optString("android_deferred_data") == "welcome") {
                    println("Navigate to welcome screen")
                    // navigate here
                }
            }.onFailure(Throwable::printStackTrace)
        }
    }
})

```

</TabItem>

<TabItem value="rn" label="React Native" default>

```typescript showLineNumbers
adapty.addEventListener('onInstallationDetailsSuccess', details => {
    // Parse the payload JSON and navigate to welcome screen if needed
    try {
        if (details.payload) {
            const payload = JSON.parse(details.payload);
            if (payload.ios_deferred_data === 'welcome') {
                // Navigate to welcome screen
                // Replace with your app's navigation logic
                // For example, using React Navigation:
                // navigation.navigate('Welcome');
                console.log('Navigate to welcome screen');
            }
        }
    } catch (error) {
        console.error('Error parsing installation details payload:', error);
    }
});
```

</TabItem>

<TabItem value="flutter" label="Flutter">

```dart showLineNumbers
Adapty().onUpdateInstallationDetailsSuccessStream.listen((details) {
  final payloadStr = details.payload;
  if (payloadStr == null) return;

  final payload = json.decode(payloadStr) as Map<String, dynamic>;
  if (payload['ios_deferred_data'] == 'welcome') {
    print('Navigate to welcome screen');
  }
});

```

</TabItem>

</Tabs>