このページでは

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.

Android-Kotlin SDK への移行

Amplitudeの最新Android SDK(com.amplitude:analytics-android)はKotlinを使用しており、プラグインアーキテクチャと組み込み型定義を備えています。最新の Android SDK は、メンテナンス Android SDK com.amplitude:android-sdkと下位互換性がありません。

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

用語

  • com.amplitude:android-sdk:メンテナンスAndroid SDK。
  • com.amplitude:analytics-android:最新のAndroid SDK。

依存関係

build.gradleを更新してメンテナンスAndroid SDKを削除し、最新のAndroid SDKを追加します。次に、プロジェクトをGradleファイルと同期します。

java
dependencies {
  implementation 'com.squareup.okhttp3:okhttp:4.2.2'
  implementation 'com.amplitude:analytics-android:1.+'
}

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

最新のAndroid SDKでは、インストルメンテーションイベントを行うための新しいAPIが提供されています。移行するには、いくつかのコールを更新します。次のセクションでは、どの呼び出しが変更されたかについて詳しく説明します。

初期化

有効なAmplitude APIキーとAndroidアプリケーションコンテキストを使用して、SDKを初期化します。メンテナンス SDKはAmplitude.getInstance().initialize(context, apiKey)を使用しました。

import com.amplitude.android.Amplitude
val amplitude = Amplitude("YOUR_API_KEY", applicationContext) {
    // Set configuration options here.
}

設定

最新のAndroid SDKでは、異なる設定形式が使用されています。最新の SDK では一部の設定がサポートされていません。

イベントを送信

logEvent()APIはtrack()にマップされます。メンテナンスSDKはeventPropertiesにJSONObjectを使用します。最新のSDKはMap<String, Any?>を使用します。

import org.json.JSONException
import org.json.JSONObject
val eventProperties = JSONObject()
try {
  eventProperties.put("buttonColor", "primary")
} catch (e: JSONException) {
  System.err.println("Invalid JSON")
  e.printStackTrace()
}
client.logEvent("Button Clicked", eventProperties)
client.track(
    "Button Clicked",
    mutableMapOf<String, Any?>("buttonColor" to "primary")
)

イベントをフラッシュする

デフォルトでは、SDK は未送信イベントをバッファリングします。 flushEventsOnCloseがtrueの場合、最後のアクティビティが停止したとき (アプリがバックグラウンドに移行したとき)にフラッシュします。また、flushQueueSizeまたはflushIntervalMillisのいずれか早い方に達したときもフラッシュします。

クローズ時のフラッシングを無効にするには、flushEventsOnCloseをfalseに設定します。

また、SDK に未送信イベントを強制的にアップロードさせることもできます。 uploadEvents()APIはflush()にマップされます。

kotlin
client.uploadEvents()
client.flush()

ユーザープロパティを設定する

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

val identify = Identify()
identify.set("location", "LAX")
client.identify(identify)

グループプロパティを設定する

val groupType = "plan"
val groupName = "enterprise"
val identify = Identify().set("key", "value")
client.groupIdentify(groupType, groupName, identify)

収益の追跡

logRevenueV2()APIはrevenue()にマップされます。

val revenue = Revenue()
revenue.productId = "com.company.productId"
revenue.price = 3
revenue.quantity = 2
client.logRevenueV2(revenue)
client.revenue(revenue)

収益の検証

Amplitudeのバックエンドは収益検証ロジックを処理します。 収益検証は、最新のAndroid SDKに移行した後も引き続き機能します。

高度なトピック

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

最新の SDK の動作のほとんどは、メンテナンス SDK と一致しています。 特定のトピックの詳細については、メンテナンスSDKおよび最新のSDKの高度なトピックセクションを参照してください。

データ移行

デフォルトでは、最新の SDK はイベントやユーザー ID やデバイス ID など、既存のメンテナンス SDK データをインポートします。 この動作を無効にするには、設定でmigrateLegacyDataをfalseに設定します。詳細は GitHub でご覧ください。

val amplitude = Amplitude("AMPLITUDE_API_KEY", applicationContext) {
    migrateLegacyData = false
}

これは役に立ちましたか?