---
title: "Отчёт о транзакциях в Observer Mode в iOS SDK"
description: "Отправляйте транзакции покупок в Adapty Observer Mode для получения аналитики пользователей и отслеживания выручки в iOS SDK."
---

<Tabs groupId="sdk-version" queryString> 

<TabItem value="current" label="Adapty SDK v3.4+ (current)" default> 
В Observer Mode Adapty SDK не может самостоятельно отслеживать покупки, сделанные через вашу существующую систему. Вам нужно самостоятельно передавать транзакции из стора. Это важно настроить **до** выпуска приложения, чтобы избежать ошибок в аналитике.

Используйте `reportTransaction`, чтобы явно сообщить Adapty о каждой транзакции.

:::warning

**Не пропускайте отчёт о транзакциях!**
Если вы не вызовете `reportTransaction`, Adapty не распознает транзакцию: она не появится в аналитике и не будет отправлена в интеграции.

:::

Если вы используете пейволы Adapty, передавайте `variationId` при отчёте о транзакции. Это свяжет покупку с пейволом, который её инициировал, и обеспечит точную аналитику пейволов.

```swift showLineNumbers
do {
    // every time when calling transasction.finish()
    try await Adapty.reportTransaction(transaction, withVariationId: <YOUR_PAYWALL_VARIATION_ID>)
} catch {
    // handle the error
}
```

Параметры:

| Параметр        | Обязательность | Описание                                                     |
| --------------- | -------------- | ------------------------------------------------------------ |
| **transaction** | обязательный   | <ul><li> Для StoreKit 1: SKPaymentTransaction.</li><li> Для StoreKit 2: Transaction.</li></ul> |
| **variationId** | опциональный   | Уникальный ID варианта пейвола. Получите его из свойства `variationId` объекта [AdaptyPaywall](https://swift.adapty.io/documentation/adapty/adaptypaywall). |

</TabItem>
<TabItem value="old" label="Adapty SDK 3.3.x (legacy)" default> 

В Observer Mode Adapty SDK не может самостоятельно отслеживать покупки, сделанные через вашу существующую систему. Вам нужно самостоятельно передавать транзакции из стора или восстанавливать их. Это важно настроить **до** выпуска приложения, чтобы избежать ошибок в аналитике.

Используйте `reportTransaction`, чтобы отправить данные о транзакции в Adapty.

:::warning

**Не пропускайте отчёт о транзакциях!**
Если вы не вызовете `reportTransaction`, Adapty не распознает транзакцию: она не появится в аналитике и не будет отправлена в интеграции.

:::

Если вы используете пейволы Adapty, передавайте `withVariationId` при отчёте о транзакции. Это свяжет покупку с пейволом, который её инициировал, и обеспечит точную аналитику пейволов.

```swift showLineNumbers
do {
    // every time when calling transasction.finish()
    try await Adapty.reportTransaction(transaction, withVariationId: <YOUR_PAYWALL_VARIATION_ID>)
} catch {
    // handle the error
}
```

Параметры:

| Параметр        | Обязательность | Описание                                                     |
| --------------- | -------------- | ------------------------------------------------------------ |
| **transaction** | обязательный   | <ul><li> Для StoreKit 1: SKPaymentTransaction.</li><li> Для StoreKit 2: Transaction.</li></ul> |
| **variationId** | опциональный   | Уникальный ID варианта пейвола. Получите его из свойства `variationId` объекта [AdaptyPaywall](https://swift.adapty.io/documentation/adapty/adaptypaywall). |

</TabItem>
<TabItem value="old2" label="Adapty SDK up to 3.2.x (legacy)" default> 

**Отчёт о транзакциях**

- Версии до 3.1.x автоматически отслеживают транзакции в App Store, поэтому ручной отчёт не требуется.
- Версия 3.2 не поддерживает Observer Mode.

**Привязка пейволов к транзакциям**

Adapty SDK не может определить источник покупок, поскольку их обрабатываете вы сами. Поэтому, если вы планируете использовать пейволы и/или A/B-тесты в Observer Mode, вам нужно связать транзакцию из вашего стора с соответствующим пейволом в коде мобильного приложения. Это важно настроить до выпуска приложения — иначе в аналитике появятся ошибки.

```swift 
let variationId = paywall.variationId
// There are two overloads: for StoreKit 1 and StoreKit 2
Adapty.setVariationId(variationId, forPurchasedTransaction: transactionId) { error in
    if error == nil {
        // successful binding
    }    
}
```

Параметры запроса:

| Параметр      | Обязательность | Описание                                                     |
| ------------- | -------------- | ------------------------------------------------------------ |
| variationId   | обязательный   | Строковый идентификатор варианта. Получите его из свойства `variationId` объекта [AdaptyPaywall](https://swift.adapty.io/documentation/adapty/adaptypaywall). |
| transactionId | обязательный   | <p>Для StoreKit 1: объект [SKPaymentTransaction](https://developer.apple.com/documentation/storekit/skpaymenttransaction).</p><p>Для StoreKit 2: объект [Transaction](https://developer.apple.com/documentation/storekit/transaction).</p> |

</TabItem> 
</Tabs>