On this page

For AI agents: a documentation index is available at /docs/llms.txt. Append .md to any page URL for markdown, or send Accept: text/markdown.

最新のReactNative SDKに移行する

Amplitudeの最新のReactNative SDK(@amplitude/analytics-react-native)は、プラグインアーキテクチャ、組み込み型定義、および広範なプラットフォームサポートを特徴としています。

最新のReactNative SDKは、メンテナンス用のReactNative SDK(@amplitude/react-native)と完全な下位互換性はありません。ただし、v1.3.4以降のバージョンでは、ユーザー、デバイス、イベントのデータは自動的に新しいSDKに転送されます。

@amplitude/analytics-react-nativeに移行するには、依存関係とインストルメンテーションを更新してください。

用語

  • @amplitude/react-native:メンテナンスReact Native SDK。
  • @amplitude/analytics-react-native:最新のReact Native SDK。

依存関係

package.jsonを更新し、メンテナンスReact Native SDKをアンインストールして最新のReact Native SDKをインストールします。

json
{
    "dependencies": {
      "@amplitude/react-native": "*"
      "@amplitude/analytics-react-native": "^1"
    }
}

インスツルメンテーション

最新のReact Native SDKはイベントをインストルメントするAPIを提供します。移行するには、次のコールを更新してください。

初期化

メンテナンスSDKのgetInstance()メソッドはAPIキーのみを受け入れますが、最新のSDKでは削除されています。SDKを初期化するには、ユーザーIDと設定パラメータを指定してinit()を呼び出してください。

ts
- import { Amplitude } from '@amplitude/react-native';
+ import { init } from '@amplitude/analytics-react-native';
- Amplitude.getInstance().init(API_KEY)
+ init(API_KEY, OPTIONAL_USER_ID, config);

設定

最新のReact Native SDKは、初期化時にメンテナンスSDKと類似した設定を持つ設定オブジェクトを受け入れます。

logEvent

logEvent()APIはtrack()にマップされます。

ts
import { Amplitude } from "@amplitude/react-native";
import { track } from "@amplitude/analytics-react-native";
Amplitude.getInstance().logEvent("Button Clicked", { buttonColor: "primary" });
track("Button Clicked", { buttonColor: "primary" });

uploadEvents

uploadEvents()APIはflush()にマップされます。

ts
import { Amplitude } from "@amplitude/react-native";
import { flush } from "@amplitude/analytics-react-native";
Amplitude.getInstance().uploadEvents();
flush();

identify

identify()APIとIdentifyタイプは依然として同じです。

ts
import { Amplitude, Identify } from "@amplitude/react-native";
import { Identify, identify } from "@amplitude/analytics-react-native";
const identifyObj = new Identify();
identifyObj.set("location", "LAX");
Amplitude.getInstance().identify(identifyObj);
identify(identifyObj);

setUserProperties

最新のSDKではsetUserProperties()が削除されました。ユーザープロパティを追加するには、統合されたidentify()APIを使用してください。

ts
import { Amplitude } from '@amplitude/react-native';
import { Identify, identify } from '@amplitude/analytics-react-native';
Amplitude.getInstance().setUserProperties({
    membership, "paid",
    payment, "bank",
})
const identifyObj = new amplitude.Identify()
identifyObj
    .set("membership", "paid")
    .set("payment", "bank")
amplitude.identify(identifyObj)

clearUserProperties

最新のSDKではclearUserProperties()が削除されました。ユーザープロパティを削除するには、統合されたidentify()APIを使用してください。

ts
import { Amplitude } from "@amplitude/react-native";
import { Identify, identify } from "@amplitude/analytics-react-native";
Amplitude.getInstance().clearUserProperties();
const identifyObj = new amplitude.Identify();
identifyObj.clearAll();
amplitude.identify(identifyObj);

setUserId

メンテナンスSDKは、deviceIdおよびuserIdに長さ制限を課さない古いSDKエンドポイント(api2.amplitude.com)を使用します。最新のSDKはAmplitudeのHTTP V2 API(api2.amplitude.com/2/httpapi)を使用しており、デフォルトでは識別子が5文字以上である必要があります。最新のSDKに移行する際には、5文字未満の識別子を許可している場合は、config.minIdLengthをより小さい値に設定してください。

setUserId()APIは依然として同じです。

ts
import { Amplitude } from "@amplitude/react-native";
import { setUserId } from "@amplitude/analytics-react-native";
Amplitude.getInstance().setUserId("test_user_id");
setUserId("user@amplitude.com");

groupIdentify

getInstance()を呼び出さずにidentify呼び出しを実行できるようになりました。

ts
import { Amplitude } from "@amplitude/react-native";
import { Identify, groupIdentify } from "@amplitude/analytics-react-native";
const groupType = "plan";
const groupName = "enterprise";
const identifyObj = new Identify();
identifyObj.set("key1", "value1");
Amplitude.getInstance().groupIdentify(groupType, groupName, identifyObj);
groupIdentify(groupType, groupName, identifyObj);

logRevenue

logRevenue()APIはrevenue()にマップされます。最新のSDKはreceiptまたはreceiptSignatureをサポートしていません。

ts
import { Amplitude } from "@amplitude/react-native";
import { Revenue, revenue } from "@amplitude/analytics-react-native";
const userProperties = {
  price: 3,
  productId: "com.company.productId",
  quantity: 2,
  revenueType: "productRevenue",
  eventProperties: {
    key: "value",
  },
};
ampInstance.logRevenue(userProperties);
const event = new Revenue()
  .setPrice(3)
  .setProductId("com.company.productId")
  .setQuantity(2)
  .setRevenueType("productRevenue")
  .setEventProperties({
    key: "value",
  });
revenue(event);

setPrice(3)およびsetQuantity(2)の代わりにsetRevenue(6)を使用することもできます。

移行の詳細

デバイスID

メンテナンス React Native SDKはメンテナンス iOS、Android、ブラウザ SDKをラップし、React Nativeの呼び出しをネイティブ SDKの関数にマップするため、デバイス IDの生成は各プラットフォームのネイティブ SDKに従います。デバイスIDのライフサイクルの詳細については、メンテナンスiOS SDKおよびメンテナンスAndroid SDKのドキュメントを参照してください。ADIDまたはApp Set IDをデバイスIDとして設定するには、setAdvertisingIdForDeviceId()またはsetAppSetIdForDeviceId()を呼び出すこともできます。

最新の React Native SDKはデバイス IDを以下の順序付きリストの最初の有効な値に設定します:

  1. 初期化時に設定で指定されたデバイス ID。
  2. SDKがウェブ上で実行されている場合の、URLパラメータからのdeviceId値(例:http://example.com/?deviceId=123456789)。
  3. クッキーストレージ内のデバイス ID。
  4. ランダムに生成された36文字のUUID。

広告ID

メンテナンスReact Native SDKでは、setAdvertisingIdForDeviceId()またはsetAppSetIdForDeviceId()を使用して広告IDをデバイスIDとして設定できます。最新のReact Native SDKはデフォルトでADIDを追跡します。これはconfig.trackingOptions.adidがデフォルトでtrueになっているからです。最新のReact Native SDKは、App Set ID、IDFA、またはIDFVをサポートしていません。

COPPA

メンテナンスReact Native SDKはを通じてCOPPA制御をサポートしていますenableCoppaControl()。最新のReact Native SDKはこのAPIをサポートしていませんが、config.trackingOptionsまたは追跡前に識別情報を削除するエンリッチメントプラグインを通じて、COPPAを有効にすることは可能です。

  • IDFA、IDFV、ADID、およびAppSetIdを有効にする方法については、広告識別子のドキュメントを参照してください。
  • IPアドレス追跡をオフにするには、config.trackingOptions.ipAddressfalseに設定します。
  • cityまたはその他の識別情報をペイロードから削除するには、エンリッチメントプラグインを使用します。
  • SDKは位置情報(緯度と経度)を追跡しません。

セッションイベント

メンテナンスReact Native SDKは、trackingSessionEvents(true)を呼び出したときにセッションの開始と終了イベントを自動的に記録します。最新のReact Native SDKで同じ動作を行うには、config.trackingSessionEventstrueに設定してください。同じセッション内で記録されたイベントはセッションIDを共有し、Amplitudeはイベントをセッションごとにグループ化します。

データ移行

v1.3.4以降、SDKは既存のメンテナンスSDKデータ(イベント、ユーザーID、およびデバイスID)をデフォルトで最新のSDKに移行します。移行を無効にするには、設定migrateLegacyDatafalseに設定してください。

typescript
init(API_KEY, OPTIONAL_USER_ID, {
  migrateLegacyData: false,
});

Was this helpful?