アプリ内イベントのトラッキング

ドキュメント

アプリ内イベントのトラッキング

Singularはアプリ内イベントに関するデータを収集し、キャンペーンのパフォーマンス分析やKPIの測定に役立てることができます。例えば、ゲームアプリでユーザーのログイン、登録、チュートリアルの完了、レベルアップなどのデータを収集したい場合があります。

標準イベントと属性

Singularは様々な標準イベントをサポートしています。これらの一般的に使用されるイベントは、レポートや最適化のために広告ネットワークでよくサポートされています。もう一つの利点は、標準イベント名を使用すると、Singularが自動的に認識し、手動で定義しなくてもイベントリストに追加されることです。可能な限り標準イベントを使用することをお勧めします。

Singularに送信されるイベントリスト(付随する属性付き)は、UA/マーケティング/ビジネスチームが組織のマーケティングKPIに基づいて作成する必要があります。ビジネスチームは、How to Track In-App Eventsのガイドに従ってください:Guide For Singular Attribution Customers.

追跡するイベントごとに、さまざまな属性を渡すことができます。イベントごとの推奨標準属性を参照してください。

イベントの送信

コード内で、eventJSONまたはeventメソッドを使用してSingularにイベントを送信します(読みやすさのためにeventJSONを推奨します)。

カスタムイベントの制限:

  • サードパーティのパートナーや分析ソリューションを使用する場合は、互換性を保証するためにイベント名と属性を英語で渡すことを強くお勧めします
  • イベント名は32 ASCII文字に制限されています。非ASCII文字の文字列は、UTF-8に変換された後、32バイト以下にする必要があります。
  • 属性と値は500 ASCII文字に制限されます

Singular.eventJSONメソッド

ユーザーイベントをJSONObject形式で追加情報と共にSingularに報告します。

シグネチャ

Singular.eventJSON(String name, JSONObject args)
注: 'args' は、1つ以上のキーと値のペアを含むJSONObjectです。キーは文字列で、値はJSONObjectの値として許可されている型であれば何でもよい。

使用例

JavaKotlin
// Example 1:

// Send the standard event sng_tutorial_complete with the

// recommended standard attributes


JSONObject att = new JSONObject();
try {
    att.put(Attributes.sngAttrContent.toString(), "Telugu");
    att.put(Attributes.sngAttrContentId.toString(), 32);
    att.put(Attributes.sngAttrContentType.toString(), "video");
    att.put(Attributes.sngAttrSuccess.toString(), 92);
} catch (JSONException e) {
    e.printStackTrace(); // Or log the exception


}
Singular.eventJSON(Events.sngTutorialComplete.toString(), att);

// Example 2:

// Send a custom event named "bonus_points_earned" with custom attributes

JSONObject att = new JSONObject();
try {
    att.put("Points", 500);
    att.put("score", 650);
} catch (JSONException e) {
    e.printStackTrace(); // Or log the exception


}
Singular.eventJSON("Bonus Points Earned", att);

Singular.event メソッド

追加情報の有無にかかわらず、ユーザーイベントをSingularに報告します。

シグネチャ

Singular.event(String eventName)
Singular.event(String eventName, Object... args)

注: 'args' は1つ以上のキーと値のペアです(以下の例を参照)。キーは文字列で、値は JSONObject の値として許可されている任意の型 (すなわち、JSONObject、JSONArray、String、Boolean、Integer、Long、Double または NULL) です。

args' リストには偶数個の要素を含める必要があります。

使用例

JavaKotlin
// Example 1:

// Send the standard event "Subscribe" (sng_subscribe) without any attributes

Singular.event(Events.sngSubscribe.toString());

// Example 2:

// Send the standard event "sng_tutorial_complete" with the 

//recommended standard attributes
Singular.event(Events.sngTutorialComplete.toString(),
    Attributes.sngAttrContent.toString(), "Spanish",
    Attributes.sngAttrContentId.toString(), 52,
    Attributes.sngAttrContentType.toString(), "video",
    Attributes.sngAttrSuccess.toString(), 46
);

// Example 3:

// Send a custom event named "SignUp" without any custom attributes

Singular.event("SignUp");

// Example 4:

// Send a custom event named "bonus_points_earned" with a custom attribute

Singular.event("Bonus Points Earned", "Points", 500);

アプリ内収益のトラッキング

Singularはアプリ内課金(IAP)サブスクリプションカスタム収益から収益イベントを取得し、キャンペーンのパフォーマンスと広告費用対効果(ROAS)を測定します。収益データは3つの主要なチャネルで利用できます:

  • Singularダッシュボードのインタラクティブレポート
  • カスタム分析用の詳細なエクスポートログとETLデータ送信先
  • 外部プラットフォームへのリアルタイムポストバック

この包括的な収益追跡により、マーケティング費用とキャンペーンの最適化に関するデータ主導の意思決定が可能になると同時に、データの利用方法と分析方法に柔軟性が生まれます。

収益イベントの制限
  • カスタム収益イベント名を使用する場合、カスタム収益イベント名は32ASCII文字に制限されます。非ASCII文字の場合、UTF-8に変換すると32バイトに制限されます。
  • イベント属性名と属性値は500 ASCII文字に制限されます。
  • 通貨コードは全角で、ISO 4217 の 3 文字の通貨コードに準拠する必要があります:

    USD, EUR, INR

ベストプラクティス

  • Singularは、Singularの標準的なイベントと属性の命名規則を使用してイベントを渡すことを推奨します。
  • カスタム収益イベント名を使用する場合は、アドネットワークのポストバックとの互換性を高めるため、英語で送信する必要があります。
  • 収益イベントは、収益額が0以上の場合のみSingularに送信してください。

サブスクリプション以外のアプリ内課金

収益イベントをSingularに報告するには、Google Billing Libraryから受け取ったPurchaseオブジェクトをrevenueまたはcustomRevenueSDKメソッドに渡します。これには2つの利点があります:

  • Singularはトランザクションの詳細をすべて取得するので、Singularのレポートが充実します。
  • SingularはGoogleからトランザクションのレシートを受け取るので、アプリ内詐欺対策としてトランザクションの検証に使用できます。

注意事項

  • customRevenueにカスタムイベント名を渡すと、Singularのレポートで収益を収益イベントの種類ごとに分けて表示できるようになります。
  • 異なる通貨で報告された収益は、Singularアカウントで設定された組織の優先通貨に自動変換されます。

収益方法

収益イベントをPurchaseオブジェクトでSingularに送信します。

署名

Singular.revenue(String currency, double amount, Object purchase)

使用例

JavaKotlin
Singular.revenue("USD", 5.50, purchase);

customRevenue メソッド

カスタムイベント名とPurchaseオブジェクトで収益イベントを Singular に送信します。

シグネチャ

Singular.customRevenue(String eventName, String currency, double amount, Object purchase)

使用例

JavaKotlin
Singular.customRevenue("MyCustomRevenue", "USD", 5.50, purchase);

サブスクリプション収益

サブスクリプションのトラッキング:

Singularを使うと、アプリ内で定期購入や更新をトラッキングすることができ、ユーザーの行動や収益生成に関する洞察を得ることができます。Singular SDKを使ってサブスクリプションイベントを実装する方法については、包括的なガイドをご覧ください。[購読イベント技術実装ガイド]


購入検証なしのカスタム収益

上記の方法で収益イベントを報告することを強くお勧めしますが、購入オブジェクトを渡さずに 収益と customRevenueを使用することもできます。代わりに、トランザクションの通貨と金額、およびオプションの製品詳細を渡します。

customRevenueメソッドでは、カスタム・イベント名を渡すこともできます。

これらのメソッドを使用した場合、Singular はトランザクションのレシートを取得せず、トランザクションを検証できないことに注意しましょう。

revenue メソッド

収益金額、通貨、オプションの詳細を含む収益イベントを Singular に送信します。

署名

Singular.revenue(String currency, double amount)
Singular.revenue(String currency, double amount, String productSKU, String productName, String productCategory, int productQuantity, double productPrice)
Singular.revenue(String currency, double amount, Map<String, Object> attributes)

使用例

JavaKotin

商品詳細なし

Singular.revenue("USD", 5.50);

商品詳細あり

Singular.revenue("EUR", 5.00, "SKU1928375", "Reservation Fee", "Fee" , 1, 5.00);

属性マップ内の商品詳細

Map<string, object="Object"> attributes = new HashMap<>();
attributes.put("product_id", "com.app.premium");
attributes.put("transaction_id", "T12345");
attributes.put("quantity", 1);
attributes.put("is_trial", false);

// Call the revenue method

Singular.revenue("USD", 9.99, attributes);

customRevenue メソッド

イベント名、収益額、通貨コード、追加のトランザクション属性を指定して、カスタム収益イベントをSingularに送信します。Singularはこれらのイベントを処理してアプリ内収益をトラッキングします。

シグネチャ

Singular.customRevenue(String eventName, String currency, double amount)
Singular.customRevenue(String eventName, String currency, double amount, String productSKU, String productName, String productCategory, int productQuantity, double productPrice)
Singular.customRevenue(String eventName, String currency, double amount, Map<String, Object> attributes)

使用例

JavaKotin

商品詳細なし

Singular.customRevenue("MyCustomRevenue", "USD", 5.50);

商品詳細あり

Singular.customRevenue("MyCustomRevenue", "EUR", 5.00, "SKU1928375", "Reservation Fee", "Fee" , 1, 5.00);

属性マップに商品詳細がある場合

Map<string, object="Object"> attributes = new HashMap<>();
attributes.put("product_id", "com.app.premium");
attributes.put("transaction_id", "T12345");
attributes.put("quantity", 1);
attributes.put("is_trial", false);

// Call the revenue method

Singular.customRevenue("MyCustomRevenue", "USD", 9.99, attributes);

ハイブリッドイベントトラッキング(上級者向け)

Singularでは、アプリに統合されたSingular SDKを通してすべてのイベントと収益を送信することを推奨しています。ただし、Singularは他のソースからイベントと収益を収集することもできます。

Singular SDKから送信されないイベントは、Singularのサーバー間イベントドキュメンテーション要件に準拠し、イベントの属性を正しく設定するために一致するデバイス識別子を提供する必要があります。

重要です:

Server-to-Server イベントリクエストで使用されるデバイス識別子がSingularで一致しない場合、不一致が発生します。以下の可能性に注意してください:

  • イベントリクエストがSingular SDKがアプリセッションからデバイス識別子を記録する「前」に受信された場合、そのイベントリクエストは未知のデバイスの「最初のセッション」とみなされ、Singularはそのデバイスをオーガニックアトリビューションとしてアトリビュートします。
  • Singular SDKがデバイス識別子を記録していたとしても、Singular SDKの識別子がServer-to-Server Eventリクエストで指定されたデバイス識別子と異なる場合、イベントの帰属は正しくありません

ハイブリッドイベント追跡ガイド

内部サーバーからのイベント送信

Singularはお客様のサーバーから収益に関するデータを収集し、キャンペーンのパフォーマンスとROIの分析に役立てることができます。

要件

  • アプリ内登録またはログインイベントから、デバイス識別子を取得して渡し、このデータをサーバーのユーザーIDと一緒に保存します。デバイス識別子はユーザーによって変更される可能性があるため、ユーザーがアプリセッションを生成する際には必ず識別子を更新してください。これにより、サーバー側イベントが正しいデバイスに帰属することが保証されます。
  • サーバー側イベントはプラットフォーム固有であるため、デバイスプラットフォームに一致するデバイス識別子(iOSデバイスのIDFAまたはIDFVなど)のみを使用して送信する必要があります。
  • Singular 内部 BI ポストバック メカニズムを使用して、内部エンドポイントにリアルタイムでイベントをプッシュすると、サーバー側でデータセットを更新できます。内部 BI ポストバック FAQ を参照してください。
  • 詳細については、『サーバー間統合』ガイドの「収益の追跡」セクションを参照してください。

収益プロバイダからのイベントの送信

RevenueCatや adaptyのようなサードパーティプロバイダーは、Singularに購入収益や購読収益を提供することができます。

これらのパートナーを有効にする方法の詳細については、以下のリンクを参照してください。


Segmentからイベントを送信する

SingularSDKと並行してSegmentからSingularへイベントを送信できるようにするには、Segmentに"Cloud-Mode "Destinationを追加する必要があります。こちらのガイドに従ってください。