---
title: "React Native SDKのオブザーバーモードでトランザクションを報告する"
description: "React Native SDKのAdapty Observer Modeで購入トランザクションを報告し、ユーザーインサイトと収益トラッキングを実現します。"
---

<Tabs groupId="sdk-version" queryString> 

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

各トランザクションをAdaptyに明示的に報告するには`reportTransaction`を使用します。

:::warning

**トランザクションの報告を省略しないでください！**
`reportTransaction`を呼び出さない場合、Adaptyはトランザクションを認識せず、アナリティクスに表示されず、インテグレーションにも送信されません。

:::

Adaptyのペイウォールを使用している場合は、トランザクションを報告する際に`variationId`を含めてください。これにより、購入が起動元のペイウォールに紐付けられ、正確なペイウォールアナリティクスが確保されます。

```typescript showLineNumbers
const variationId = paywall.variationId;

try {
    await adapty.reportTransaction(transactionId, variationId);
} catch (error) {
    // handle the `AdaptyError`
}
```

パラメーター:

| パラメーター  | 必須/任意 | 説明                                                         |
| ------------- | --------- | ------------------------------------------------------------ |
| transactionId | 必須      | <ul><li> iOS の場合: トランザクションの識別子。</li><li> Android の場合: 購入のString識別子（`purchase.getOrderId`）。purchaseは課金ライブラリの[Purchase](https://developer.android.com/reference/com/android/billingclient/api/Purchase)クラスのインスタンスです。</li></ul> |
| variationId   | 任意      | バリアントのString識別子。[AdaptyPaywall](https://react-native.adapty.io/interfaces/adaptypaywall)オブジェクトの`variationId`プロパティを使用して取得できます。 |

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

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

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

:::warning

**トランザクションの報告を省略しないでください！**
これらのメソッドを呼び出さない場合、Adaptyはトランザクションを認識せず、アナリティクスに表示されず、インテグレーションにも送信されません。

:::

Adaptyのペイウォールを使用している場合は、トランザクションを報告する際に`variationId`を含めてください。これにより、購入が起動元のペイウォールに紐付けられ、正確なペイウォールアナリティクスが確保されます。

```typescript showLineNumbers
if (Platform.OS === 'android') {
    try {
        await adapty.restorePurchases();
    } catch (error) {
        // handle the error
    }
}

...

const variationId = paywall.variationId;

try {
    await adapty.reportTransaction(transactionId, variationId);
} catch (error) {
    // handle the `AdaptyError`
}
```

パラメーター:

| パラメーター  | 必須/任意 | 説明                                                         |
| ------------- | --------- | ------------------------------------------------------------ |
| 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 の場合: 購入のString識別子（`purchase.getOrderId`）。purchaseは課金ライブラリの[Purchase](https://developer.android.com/reference/com/android/billingclient/api/Purchase)クラスのインスタンスです。</li></ul> |
| variationId   | 任意      | バリアントのString識別子。[AdaptyPaywall](https://react-native.adapty.io/interfaces/adaptypaywall)オブジェクトの`variationId`プロパティを使用して取得できます。 |

</TabItem>
<TabItem value="old2" label="Adapty SDK up to 3.2.x (legacy)" 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 and Android-based cross-platforms" default> 

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

オブザーバーモードでAdaptyにトランザクションを報告するには`restorePurchases`を使用してください。詳細は[モバイルコードでの購入の復元](react-native-restore-purchase)ページをご覧ください。

:::warning
**トランザクションの報告を省略しないでください！**
`restorePurchases`を呼び出さない場合、Adaptyはトランザクションを認識せず、アナリティクスに表示されず、インテグレーションにも送信されません。
::: 

</TabItem>
</Tabs>

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

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

```typescript 
const variationId = paywall.variationId;

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

リクエストパラメーター:

| パラメーター  | 必須/任意 | 説明                                                         |
| ------------- | --------- | ------------------------------------------------------------ |
| transactionId | 必須      | <p>iOS、StoreKit 1 の場合: [SKPaymentTransaction](https://developer.apple.com/documentation/storekit/skpaymenttransaction)オブジェクト。</p><p>iOS、StoreKit 2 の場合: [Transaction](https://developer.apple.com/documentation/storekit/transaction)オブジェクト。</p><p>Android の場合: 購入のString識別子（purchase.getOrderId）。purchaseは課金ライブラリの[Purchase](https://developer.android.com/reference/com/android/billingclient/api/Purchase)クラスのインスタンスです。</p> |
| variationId   | 必須      | バリアントのString識別子。[AdaptyPaywall](https://react-native.adapty.io/interfaces/adaptypaywall)オブジェクトの`variationId`プロパティを使用して取得できます。 |

</TabItem> 
</Tabs>