アプリ内イベントのトラッキング
注: ユーザーイベントの計画に関する詳細は、SDK計画と前提条件ガイドの「アプリはユーザーイベントを追跡しますか?
注:アプリ内のすべてのイベントを、アプリ内でSingular SDKメソッドを使用してSingularサーバーに送信することをお勧めします。他のプロバイダーや内部サーバーからSingularにイベントを送信する場合は、以下のハイブリッドイベント追跡のセクションを参照してください。
イベントのトラッキング(非収益)
Singularはアプリ内イベントのデータを収集し、キャンペーンのパフォーマンス分析やKPIの測定に役立てることができます。例えば、ゲームアプリでユーザーのログイン、登録、チュートリアルの完了、レベルアップなどのデータを収集したい場合があります。
Singularに送信されるイベントのリスト(付随する属性付き)は、マーケティングのKPIに基づいてUA/マーケティング/ビジネスチームが編集する必要があります。
ユーザーイベントの計画の詳細については、SDKの計画と前提条件ガイドの「アプリはユーザーイベントを追跡しますか?
コード内で、eventまたはeventWithArgsメソッドを使用して標準イベントをSingularに送信します。
注:標準イベントの場合、 iOS SDK List of Standard Events and Attributesに表示されているイベントのiOS名を使用します(例:EVENT_SNG_LOGIN)。
カスタムイベント(Singularの標準イベントにはない、あなたの組織が測定したいイベント)の場合は、任意のカスタム名(最大32文字)を使用してください。最適化のためにSingularからイベントを受け取る可能性のある広告ネットワークパートナーとの互換性のために、英語の名前を使用することをお勧めします。
イベントメソッド | |
---|---|
説明 | トラッキング用のユーザーイベントをSingularに送信します。 |
シグネチャ | (void)event:(NSString *)name |
使用例 |
|
eventWithArgs メソッド | |
説明 | トラッキングのためにユーザーイベントを追加情報とともにSingularに送信します。 |
シグネチャ | (void)eventWithArgs:(NSString *)name, ... |
使用例 |
|
アプリ内収益のトラッキング
Singularはアプリ内課金(IAP)、サブスクリプション、カスタム収益から収益イベントを取得し、キャンペーンのパフォーマンスと広告費用対効果(ROAS)を測定します。収益データは3つの主要なチャネルで利用できます:
- Singularダッシュボードのインタラクティブレポート
- カスタム分析用の詳細なエクスポートログとETLデータ送信先
- 外部プラットフォームへのリアルタイムポストバック
この包括的な収益追跡により、マーケティング費用とキャンペーンの最適化に関するデータ主導の意思決定が可能になると同時に、データの利用方法と分析方法に柔軟性が生まれます。
要件
- カスタム収益イベント名を使用する場合、カスタム収益イベント名は32 ASCII文字に制限されます。非ASCII文字の場合、UTF-8に変換すると32バイトに制限されます。
- イベント属性名と属性値は 500 ASCII 文字に制限されます。
-
通貨を3文字のISO 4217通貨コードとして渡します:
USD, EUR, INR
ベストプラクティス
- Singularは、Singularの標準的なイベント名と属性名を使用してイベントを渡すことを推奨します。
- カスタム収益イベント名を使用する場合は、アドネットワークのポストバックとの互換性を高めるために英語で送信する必要があります。
- 収益イベントは、収益額が0以上の場合のみSingularに送信してください。
サブスクリプション以外のアプリ内課金
重要:このメソッドはサブスクリプションのトラッキングをサポートしていません!このメソッドはサブスクリプション以外のアプリ内課金のトラッキングに使用します。
アプリがApp Store IAPトラッキングを使用する場合、iapCompleteメソッドを使用することをお勧めします。
このメソッドはIAP(Appleのアプリ内課金)の収益イベントをSingularに送信します:
- トランザクションの詳細(Singularがレポートを充実させるために使用します。
- トランザクションのレシートは、トランザクションを検証し、不正行為を分析または防止するために使用されます。
注意事項
- iapCompleteを使用する場合、イベントにSKPaymentTransaction オブジェクトを 含める 必要があります。
- 異なる通貨で報告された収益は、Singularアカウントで設定された組織の優先通貨に自動変換されます。
iapComplete メソッド
トランザクションレシートと共に収益イベントをSingularに送信します。
署名
(void)iapComplete:(id)transaction
(void)iapComplete:(id)transaction withName:(NSString *)name;
使用例
// *** Get the SKPaymentTransaction* transaction object ***
let transaction:SKPaymentTransaction = ...
// Send a transaction event to Singular without a custom event name
Singular.iapComplete(transaction)
// Send a transaction event to Singular with a custom event name
Singular.iapComplete(transaction, withName:"MyCustomRevenue")
// *** Get the SKPaymentTransaction* transaction object ***
SKPaymentTransaction* transaction = ...;
// Send a transaction event to Singular without a custom event name
[Singular iapComplete:transaction];
// Send a transaction event to Singular with a custom event name
[Singular iapComplete:transaction withName:@"MyCustomRevenue"];
サブスクリプションの収益
サブスクリプションのトラッキング:
Singularを使うと、アプリ内でサブスクリプションや更新をトラッキングすることができ、ユーザーの行動や収益生成に関する洞察を得ることができます。Singular SDKを使ってサブスクリプションイベントを実装する方法については、包括的なガイドをご覧ください。[購読イベント技術実装ガイド]
購入検証なしのカスタム収益
アプリがApp Store In-App Purchaseトラッキングをサポートしていない場合は、RevenueまたはcustomRevenueメソッドを推奨します。これらのメソッドは購入検証を行わず、購入オブジェクトまたはレシートを含めるべきではありません。
revenueメソッドとcustomRevenueメソッドでは、トランザクションの金額と通貨を手動で指定することができます。customRevenueメソッドでは、カスタムイベント名を渡すこともできます。
注意:これらのメソッドを使用した場合、Singular は購入トランザクションを検証しません。
revenue メソッド
収益金額、通貨、オプションの詳細を含む収益イベントをSingularに送信します。
署名
(void)revenue:(NSString *)currency amount:(double)amount;
(void)revenue:(NSString *)currency amount:(double)amount
productSKU:(NSString *)productSKU
productName:(NSString*)productName
productCategory:(NSString *)productCategory
productQuantity:(int)productQuantity
productPrice:(double)productPrice;
(void)revenue:(NSString *)currency amount:(double)amount
withAttributes:(NSDictionary*)attributes;
使用例
// Revenue with no product details
Singular.revenue("USD", amount:1.99)
// Revenue with product details
Singular.revenue("EUR", amount:5.00,
productSKU:"SKU1928375",
productName:"Reservation Fee",
productCategory:"Fee",
productQuantity:1, productPrice:5.00)
// Send a Revenue Event with attributes in a dictionary
var dic: [AnyHashable : Any] = [:]
dic[ATTRIBUTE_SNG_ATTR_ITEM_DESCRIPTION] = "100% Organic Cotton Mixed Plaid Flannel Shirt"
dic[ATTRIBUTE_SNG_ATTR_ITEM_PRICE] = "$69.95"
dic[ATTRIBUTE_SNG_ATTR_RATING] = "5 Star"
dic[ATTRIBUTE_SNG_ATTR_SEARCH_STRING] = "Flannel Shirt"
Singular.revenue("USD", amount: 19.95, withAttributes: dic)
// Revenue with no product details
[Singular revenue:@"USD" amount:1.99];
// Revenue with product details
[Singular revenue:@"EUR" amount:5.00 productSKU:@"SKU1928375"
productName:@"Reservation Fee"
productCategory:@"Fee"
productQuantity:1
productPrice:5.00];
// Send a Revenue Event with attributes in a dictionary
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setValue:@"100% Organic Cotton Mixed Plaid Flannel Shirt"
forKey:ATTRIBUTE_SNG_ATTR_ITEM_DESCRIPTION];
[dic setValue:@"$69.95" forKey:ATTRIBUTE_SNG_ATTR_ITEM_PRICE];
[dic setValue:@"5 Star" forKey:ATTRIBUTE_SNG_ATTR_RATING];
[dic setValue:@"Flannel Shirt" forKey:ATTRIBUTE_SNG_ATTR_SEARCH_STRING];
[Singular revenue:@"USD" amount:19.99 withAttributes:dic];
customRevenue メソッド
イベント名、収益額、通貨コード、追加のトランザクション属性を指定して、カスタム収益イベントをSingularに送信します。Singularはこれらのイベントを処理してアプリ内収益を追跡します。
シグネチャ
(void)customRevenue:(NSString *)eventName
currency:(NSString *)currency
amount:(double)amount;
(void)customRevenue:(NSString *)eventName
currency:(NSString *)currency
amount:(double)amount
productSKU:(NSString *)productSKU
productName:(NSString *)productName
productCategory:(NSString *)productCategory
productQuantity:(int)productQuantity
productPrice:(double)productPrice;
(void)customRevenue:(NSString*)eventname
currency:(NSString *)currency
amount:(double)amount
withAttributes:(NSDictionary*)attributes;
使用例
// Revenue with a custom name and no product details
Singular.customRevenue("MyCustomRevenue", currency:"USD", amount:1.99)
// Revenue with a custom name and product details
Singular.customRevenue("MyCustomRevenue", currency:"EUR", amount:5.00,
productSKU:"SKU1928375",
productName:"Reservation Fee",
productCategory:"Fee",
productQuantity:1,
productPrice:5.00)
// Send a Custom Revenue Event with attributes in a dictionary
var dic: [AnyHashable : Any] = [:]
dic[ATTRIBUTE_SNG_ATTR_ITEM_DESCRIPTION] = "100% Organic Cotton Mixed Plaid Flannel Shirt"
dic[ATTRIBUTE_SNG_ATTR_ITEM_PRICE] = "$69.95"
dic[ATTRIBUTE_SNG_ATTR_RATING] = "5 Star"
dic[ATTRIBUTE_SNG_ATTR_SEARCH_STRING] = "Flannel Shirt"
Singular.customRevenue("CustomRevenueWithArgsDic", currency: "USD", amount: 44.99, withAttributes: dic)
// Revenue with a custom name and no product details
[Singular customRevenue:@"MyCustomRevenue" currency:@"USD" amount:1.99];
// Revenue with a custom name and product details
[Singular customRevenue:@"MyCustomRevenue" currency:@"EUR" amount:5.00
productSKU:@"SKU1928375"
productName:@"Reservation Fee"
productCategory:@"Fee"
productQuantity:1
productPrice:5.00];
// Send a Custom Revenue Event with attributes in a dictionary
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setValue:@"100% Organic Cotton Mixed Plaid Flannel Shirt"
forKey:ATTRIBUTE_SNG_ATTR_ITEM_DESCRIPTION];
[dic setValue:@"$69.95" forKey:ATTRIBUTE_SNG_ATTR_ITEM_PRICE];
[dic setValue:@"5 Star" forKey:ATTRIBUTE_SNG_ATTR_RATING];
[dic setValue:@"Flannel Shirt" forKey:ATTRIBUTE_SNG_ATTR_SEARCH_STRING];
[Singular customRevenue:@"MyCustomRevenue" currency:@"USD" amount:44.99 withAttributes:dic];
StoreKit2 サポート
アプリ内課金のトラッキングにStoreKit2フレームワークを使用する場合は、customRevenueメソッドを推奨します。customRevenueメソッドでは、jsonRepresentationで トランザクションと 商品オブジェクトを提供する必要があります。
StoreKit2 では、購入の検証はサポートされていません。
customRevenueメソッド
署名
+ (void)customRevenue:(NSData *)transactionJsonRepresentation productJsonRepresentation:(NSData *)productJsonRepresentation;
+ (void)customRevenue:(NSString *)eventName transactionJsonRepresentation:(NSData *)transactionJsonRepresentation productJsonRepresentation:(NSData *)productJsonRepresentation;
使用例
// Fetch transaction and product from StoreKit2
let transaction = ... // Assume this is a valid StoreKit2 transaction
let product = ... // Assume this is a valid StoreKit2 product
// Custom Revenue using __iap__ event name with transaction and product JSON representations
Singular.customRevenue(
transactionJsonRepresentation: transaction.jsonRepresentation,
productJsonRepresentation: product.jsonRepresentation )
// Custom Revenue with custom event name using transaction and product JSON representations
Singular.customRevenue(
"PaymentSuccess",
transactionJsonRepresentation: transaction.jsonRepresentation,
productJsonRepresentation: product.jsonRepresentation )
}
// Fetch transaction and product from StoreKit2
SKTransaction *transaction = ...; // Assume this is a valid StoreKit2 transaction
SKProduct *product = ...; // Assume this is a valid StoreKit2 product
// Convert transaction and product JSON representations to NSData
NSData *transactionData = [transaction.jsonRepresentation
dataUsingEncoding:NSUTF8StringEncoding];
NSData *productData = [product.jsonRepresentation
dataUsingEncoding:NSUTF8StringEncoding];
// Custom Revenue using transaction and product JSON representations
[Singular customRevenue:transactionData
productJsonRepresentation:productData];
// Custom Revenue with event name using transaction and product JSON representations
[Singular customRevenue:@"PaymentSuccess"
transactionJsonRepresentation:transactionData
productJsonRepresentation:productData];
ハイブリッドイベントトラッキング(上級者向け)
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に購入収益や購読収益を提供することができます。
これらのパートナーを有効にする方法の詳細については、以下のリンクを参照してください。
- 詳細はRevenueCatのドキュメントをご覧ください。
- 詳細はadaptyのドキュメントをご覧ください。
Segmentからイベントを送信する
SingularSDKと並行してSegmentからSingularへイベントを送信できるようにするには、Segmentに"Cloud-Mode "Destinationを追加する必要があります。こちらのガイドに従ってください。