---
title: "Flutter SDKのオブザーバーモードでトランザクションを報告する"
description: "Flutter SDKのAdaptyオブザーバーモードで購入トランザクションを報告し、ユーザーインサイトと収益追跡を行います。"
---

<Tabs groupId="sdk-version" queryString> 

<TabItem value="current" label="Adapty SDK v3.4+（現行版）" default> 
オブザーバーモードでは、Adapty SDKは既存の購入システムで行われた購入を自動で追跡することができません。アプリストアからのトランザクションを手動で報告する必要があります。分析エラーを避けるため、アプリをリリースする**前**にこの設定を行うことが重要です。

`reportTransaction`を使用して、Adaptyがトランザクションを認識できるよう各トランザクションを明示的に報告してください。

:::warning

**トランザクション報告をスキップしないでください！**
`reportTransaction`を呼び出さない場合、Adaptyはトランザクションを認識できず、分析に表示されず、インテグレーションにも送信されません。

:::

Adaptyのペイウォールを使用している場合は、トランザクション報告時に`variationId`を含めてください。これにより購入が対象のペイウォールに紐づき、正確なペイウォール分析が可能になります。

```javascript showLineNumbers
try {
    // every time when calling transaction.finish()
    await Adapty().reportTransaction(
        "YOUR_TRANSACTION_ID", 
        variationId: "PAYWALL_VARIATION_ID", // optional
    );
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
    // handle the error
}
```

パラメーター：

| パラメーター  | 必須/任意 | 説明                                                         |
| ------------- | --------- | ------------------------------------------------------------ |
| transactionId | 必須      | <ul><li> iOS の場合：トランザクションの識別子。</li><li> Android の場合：購入の文字列識別子 `purchase.getOrderId`。ここで purchase は billing library の [Purchase](https://developer.android.com/reference/com/android/billingclient/api/Purchase) クラスのインスタンスです。</li></ul> |
| variationId   | 任意      | バリアントの文字列識別子。[AdaptyPaywall](https://pub.dev/documentation/adapty_flutter/latest/adapty_flutter/AdaptyPaywall-class.html) オブジェクトの `variationId` プロパティから取得できます。 |

</TabItem>
<TabItem value="old" label="Adapty SDK 3.3.x（レガシー）" default> 

オブザーバーモードでは、Adapty SDKは既存の購入システムで行われた購入を自動で追跡することができません。アプリストアからのトランザクションを報告するか、復元する必要があります。分析エラーを避けるため、アプリをリリースする**前**にこの設定を行うことが重要です。

両プラットフォームで`reportTransaction`を使用して各トランザクションを明示的に報告し、Android では追加手順として`restorePurchases`を使用してAdaptyがトランザクションを認識できるようにしてください。

:::warning

**トランザクション報告と購入の復元をスキップしないでください！**
これらのメソッドを呼び出さない場合、Adaptyはトランザクションを認識できず、分析に表示されず、インテグレーションにも送信されません。

:::

Adaptyのペイウォールを使用している場合は、トランザクション報告時に`variationId`を含めてください。これにより購入が対象のペイウォールに紐づき、正確なペイウォール分析が可能になります。

```javascript showLineNumbers
// every time when calling transaction.finish()
if (Platform.isAndroid) {
    try {
        await Adapty().restorePurchases();
    } on AdaptyError catch (adaptyError) {
        // handle the error
    } catch (e) {
    }
}

try {
    // every time when calling transaction.finish()
    await Adapty().reportTransaction(
        "YOUR_TRANSACTION_ID", 
        variationId: "PAYWALL_VARIATION_ID", // optional
    );
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
    // handle the error
}
```

パラメーター：

| パラメーター  | 必須/任意 | 説明                                                         |
| ------------- | --------- | ------------------------------------------------------------ |
| transactionId | 必須      | <ul><li> iOS、StoreKit 1 の場合：[SKPaymentTransaction](https://developer.apple.com/documentation/storekit/skpaymenttransaction) オブジェクト。</li><li> iOS、StoreKit 2 の場合：[Transaction](https://developer.apple.com/documentation/storekit/transaction) オブジェクト。</li><li> Android の場合：文字列識別子（purchase.getOrderId）。ここで purchase は billing library の [Purchase](https://developer.android.com/reference/com/android/billingclient/api/Purchase) クラスのインスタンスです。</li></ul> |
| variationId   | 任意      | バリアントの文字列識別子。[AdaptyPaywall](https://pub.dev/documentation/adapty_flutter/latest/adapty_flutter/AdaptyPaywall-class.html) オブジェクトの `variationId` プロパティから取得できます。 |

</TabItem>
<TabItem value="old2" label="Adapty SDK 3.2.x 以前（レガシー）" default> 

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

**トランザクションの報告**

- 3.1.x 以前のバージョンはApp Storeのトランザクションを自動でリッスンするため、手動での報告は不要です。
- バージョン 3.2 はオブザーバーモードをサポートしていません。

</TabItem> 
<TabItem value="kotlin" label="Android および Android ベースのクロスプラットフォーム" default> 

**トランザクションの報告**

オブザーバーモードでAdaptyにトランザクションを報告するには、[モバイルコードでの購入の復元](flutter-restore-purchase)ページで説明しているとおり、`restorePurchases`を使用してください。

:::warning
**トランザクション報告をスキップしないでください！**
`restorePurchases`を呼び出さない場合、Adaptyはトランザクションを認識できず、分析に表示されず、インテグレーションにも送信されません。
::: 

</TabItem>
</Tabs>

**ペイウォールとトランザクションの紐付け**

Adapty SDKは購入のソースを特定することができません。購入処理はお客様自身が行うためです。そのため、オブザーバーモードでペイウォールやA/B テストを使用する場合は、アプリストアから受け取ったトランザクションをモバイルアプリのコード内で対応するペイウォールに紐付ける必要があります。アプリリリース前にこの設定を正しく行わないと、分析エラーが発生します。

```javascript
final transactionId = transaction.transactionIdentifier
final variationId = paywall.variationId

try {
  await Adapty().setVariationId('transactionId', variationId);
} on AdaptyError catch (adaptyError) {
  // handle the error
} catch (e) {
}
```

</TabItem> 
</Tabs>