# \[Android]イベントを送信する

アプリケーションにおけるユーザーの行動情報（以降イベント）をKARTEに送信することが可能です。

KARTEに送信したイベントは、解析され統計値として保持されます。\
解析済みの統計値は、セグメントやアクション（アプリ内メッセージの表示やプッシュ通知など）のトリガーとして利用することができます。

## 導入手順

coreモジュールの導入が必要です。\
導入手順の詳細については [SDKを導入する](https://app.developers.karte.io/android-sdk/setup-android-sdk) をご覧ください。

## 実装手順

イベントを送信するためには、下記の手順でアプリケーションにコードを追加します。

### 1. SDKのインポート宣言を追加

イベント送信処理を実装するファイルの先頭にインポート宣言を追加します。

{% tabs %}
{% tab title="Kotlin" %}
{% code overflow="wrap" %}

```kotlin
import io.karte.android.tracking.Tracker
```

{% endcode %}
{% endtab %}

{% tab title="Java" %}
{% code overflow="wrap" %}

```java
import io.karte.android.tracking.Tracker;
```

{% endcode %}
{% endtab %}
{% endtabs %}

### 2. イベント送信するためのコードを追加

KARTEでは用途に応じて、`view` `identify` `track` の3つのメソッドを提供しています。\
ここでは、それぞれの利用例について記載します。

{% hint style="info" %}
**イベントの送信に関して**

以降の内容については、[イベントの送信方法について理解する](https://app.developers.karte.io/android-sdk-appendix/appendix-usage-tracking-android-sdk) をご確認頂いてからご覧いただくことを強く推奨いたします。
{% endhint %}

{% hint style="info" %}
**イベント名やフィールドに関して**

イベント送信されるフィールド名や値、またtrackメソッドで指定するイベント名については、命名規則上の制約が存在します。詳細は[イベントで使用できないイベント名、フィールド名、フィールド値](https://support.karte.io/post/44VkfBjO7JdRnDv9YOfbFB)を御覧ください。

また日付型データや緯度経度の情報を送信する場合には、特別なフォーマットで送信する必要があります。詳細は[特別な扱いを受けるフィールド](https://app.developers.karte.io/android-sdk-appendix/appendix-special-fields-android-sdk)を御覧ください。
{% endhint %}

## 各種イベントの送信方法

### viewイベントの送信

以下は「会員登録」画面を閲覧したことを表現するイベントを送信する例です。第1引数には、画面を一意に識別するための識別子（view\_name）を指定し、第2引数には画面名（title）を指定しています。

送信する内容や実装上の注意点等については、[viewイベント送信のベストプラクティス](https://app.developers.karte.io/karte-for-app-best-practices/best-practices-for-sending-view-events)をご確認ください。

**※ viewイベントについてはonResume()に実装いただくことを推奨いたします。**\
詳細は[画面の表示イベントを送信する](https://app.developers.karte.io/android-sdk-appendix/appendix-usage-tracking-android-sdk#画面の表示イベントを送信する)や[リファレンス](https://plaidev.github.io/karte-sdk-docs/android/core/latest/io.karte.android.tracking/-tracker/view.html)ご覧ください。

{% tabs %}
{% tab title="Kotlin" %}
{% code overflow="wrap" %}

```kotlin
Tracker.view("signup", "会員登録")
```

{% endcode %}
{% endtab %}

{% tab title="Java" %}
{% code overflow="wrap" %}

```java
Tracker.view("signup", "会員登録");
```

{% endcode %}
{% endtab %}
{% endtabs %}

また[閲覧人数表示](https://support.karte.io/post/4BaHkxtmdv3R9SDNzY8OGY)を利用する場合には、[任意のインターフェース](https://plaidev.github.io/karte-sdk-docs/android/core/latest/io.karte.android.tracking/-tracker/view.html)で適宜view\_idを付与してください。

### identify/attributeイベントの送信

個人情報に類する情報については、identifyイベントとしての送信が推奨されます。identifyイベントの扱いについては[ドキュメント](https://support.karte.io/post/5WaAqgOMKu7ghwI9ChBVw3)をご覧ください。\
以下はユーザーのIDを指定してユーザー名を送信する例です。\
詳細は[ユーザーの情報を送信する](https://app.developers.karte.io/android-sdk-appendix/appendix-usage-tracking-android-sdk#ユーザーの情報を送信する)や[リファレンス](https://plaidev.github.io/karte-sdk-docs/android/core/latest/io.karte.android.tracking/-tracker/identify.html)をご覧ください。

またattributeイベントについては、"attribute"というイベント名のカスタムイベントとして送信してください。

{% tabs %}
{% tab title="Kotlin" %}
{% code overflow="wrap" %}

```kotlin
Tracker.identify("ユーザーID", mapOf(
  "name" to "カルテ太郎"
))
```

{% endcode %}
{% endtab %}

{% tab title="Java" %}
{% code overflow="wrap" %}

```java
Map<String, Object> values = new HashMap<>();
values.put("name", "KARTE太郎");
Tracker.identify("ユーザーID", values);
```

{% endcode %}
{% endtab %}
{% endtabs %}

{% hint style="info" %}
**identify/attributeイベントの送信タイミングに関して**

identify/attributeイベントはユーザーを認識するための重要なイベントです。\
アプリ起動時にログインしていた場合、会員登録時、送信しているfieldが更新されたといったタイミングで適切に送信してください。\
詳細は[ドキュメント](https://support.karte.io/post/LKkC8q2MJXFJ9up33rGcx#4-5)をご覧ください

また送信されるイベント数については一部制限があるため、同じタイミングで複数のfieldを送信する場合は、可能な限り1回の送信で複数fieldをまとめて送信することが推奨されます。
{% endhint %}

### カスタムイベントの送信

以下は「商品をお気に入りに追加」したことを表現するイベントを送信する例です。\
詳細は[任意の行動イベントを送信する](https://app.developers.karte.io/android-sdk-appendix/appendix-usage-tracking-android-sdk#任意の行動イベントを送信する)や[リファレンス](https://plaidev.github.io/karte-sdk-docs/android/core/latest/io.karte.android.tracking/-tracker/track.html)をご覧ください。

{% tabs %}
{% tab title="Kotlin" %}
{% code overflow="wrap" %}

```kotlin
Tracker.track("favorite", mapOf(
  "id" to "P00003",
  "name" to "ミネラルウォーター（500ml）",
  "price" to 100
))
```

{% endcode %}
{% endtab %}

{% tab title="Java" %}
{% code overflow="wrap" %}

```java
Map<String, Object> values = new HashMap<>();
values.put("id", "P00003");
values.put("name", "ミネラルウォーター（500ml）");
values.put("price", 100);
Tracker.track("favorite", values);
```

{% endcode %}
{% endtab %}
{% endtabs %}

## 動作確認

イベントが正しく送信されたかどうかは、管理画面のイベント画面で確認することが可能です。\
イベント画面の使い方については、[イベント画面概要](https://support.karte.io/post/6avC4CUCE3Dm9PydcGFfgM) をご覧ください。

## トラブルシューティング

イベントの計測ができない場合は、[イベント計測までのトラブルシューティング](https://support.karte.io/post/1Gr8vZdY4u27zbYyPyRjUZ)を参考にしてください。

**What’s Next**

イベントについて理解を深めるために、以下のドキュメントも併せてご覧ください。

* [イベントの送信方法について理解する](https://app.developers.karte.io/android-sdk-appendix/appendix-usage-android-sdk)
* [SDKが標準で送るイベント](https://app.developers.karte.io/android-sdk-appendix/concepts-default-events-android-sdk)
* [イベントに自動追加されるフィールド](https://app.developers.karte.io/android-sdk-appendix/appendix-fields-android-sdk)
* [特別な扱いを受けるフィールド](https://app.developers.karte.io/android-sdk-appendix/appendix-special-fields-android-sdk)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://app.developers.karte.io/android-sdk/tracking-android-sdk.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
