概要:エンターテイメントアプリで推奨されるアプリ内イベントを記録して、ユーザージャーニー全体のユーザーの質を測定しましょう。
エンターテイメント
オンデマンドコンテンツに対するユーザーの要求が高まるにつれて、エンターテイメントアプリ市場は非常に競争が激しくなっています。記録が推奨される一般的なイベントには、ユーザーサブスクリプション、コンテンツのストリーミング、コンテンツのダウンロードと保存などがあります。
これらのイベントを計測することで、次のような判断に役立ちます。
- どんなコンテンツをユーザーが視聴するか
- ユーザーが好むコンテンツに応じたキャンペーンのパフォーマンス
- ユーザーエンゲージメントと使用状況
これらのイベントは、次のスマートテレビで動作するエンターテイメントアプリにも関係します。
- Android Smart TV
- Apple TV (tvOS)
- Amazon Fire TV
アプリ内イベント計測の詳細については、リッチアプリ内イベントガイドを参照してください。
規定イベントで推奨される構造
次のセクションでは、エンターテイメントアプリの一般的なイベント構造の一覧を示しています。各構造には、既定のイベント名と推奨されるイベントパラメーターが含まれています。アプリ内イベントには、ビジネスニーズを満たす任意のイベントパラメーターを含めることができます。
登録完了 (af_complete_registration)
目的
アプリをインストールし、サインアップを完了したユーザーがどれだけいるか、またユーザーが好むサインアップ方法を確認しましょう
トリガー
ユーザーがサインアップ手順を完了したとき
イベントパラメータ
名称 | 説明 | 値の例: |
---|---|---|
af_registration_method | ユーザーが選択したサインアップ方法 | Facebook、Google、メール |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REGSITRATION_METHOD, "Facebook");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.COMPLETE_REGISTRATION, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventCompleteRegistration
withValues: @{
AFEventParamRegistrationMethod: @"Facebook"
}];
AppsFlyerLib.shared().logEvent(AFEventCompleteRegistration,
withValues: [
AFEventParamRegistrationMethod: "Facebook"
]);
Dictionary<string, string> CompleteRegistrationEvent = new Dictionary<string, string>();
CompleteRegistrationEvent.Add("af_registration_method", "Facebook");
AppsFlyer.sendEvent("af_complete_registration", CompleteRegistrationEvent);
ログイン (af_login)
目的
登録ユーザーのリテンションを理解しましょう
トリガー
ユーザーが正常にログインしたとき
イベントパラメータ
パラメーターなしで送信できます
コードの例
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);
[[AppsFlyerLib shared] logEvent:AFEventLogin withValues: nil];
AppsFlyerLib.shared().logEvent(AFEventLogin, withValues: nil);
AppsFlyer.sendEvent("af_login", null);
トライアル開始 (af_start_trial)
目的
多くのストリーミングサービスでは、ユーザーにプレミアム機能を体験するための試用期間を提供します。このイベントを計測すると、次のことに役立つでしょう。
- 何人のユーザーが試用期間中にオプトインするかを把握できます。
- トライアルがプロモーションやパートナーとのコラボレーションの一部であるか
- どのプロモーションがトライアル開始のきっかけとなったか
トリガー
ユーザーがトライアル期間にオプトインしトライアルを開始した時期
イベントパラメータ
名称 | 説明 | 値の例: |
---|---|---|
trial_method | トライアルを開始する | 新しい携帯電話で無料、通信料と組み合わせて無料、プロモーション、クーポンコード |
trial_method_identifier |
トライアル方法のID |
キャリア名(例: Vodafone) パートナー名(例: Facebook) クーポンコード(例: TRA123) |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("trial_method", "coupon code");
eventValue.put("trial_method_identifier", "TRA123");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.START_TRIAL, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventStartTrial
withValues: @{
@"trial_method": @"coupon code",
@"trial_method_identifier": @"TRA123"
}]
AppsFlyerLib.shared().logEvent(AFEventStartTrial,
withValues: [
"trial_method": "coupon code",
"trial_method_identifier": "TRA123"
]);
Dictionary<string, string> SubscriptionTrial = new Dictionary<string, string>();
SubscriptionTrial.Add("trial_method ", "coupon code");
SubscriptionTrial.Add("trial_method_identifier", "TRA123");
AppsFlyer.sendEvent("af_start_trial", SubscriptionTrial);
サブスクリプション (af_subscribe)
目的
サブスクリプションはストリーミングサービスの中核です。このイベントを計測すると、次のことに役立つでしょう。
- どのキャンペーンがユーザーのサブスクリプションに結び付いたかを確認できます。
- トライアル中のユーザー数をサブクスライブ中のユーザー数と比較しましょう
- サブスクリプションから発生する収益額を決定し、それをキャンペーンやメディアソースに関連付けます
トリガー
- ユーザーが正常にサブスクリプションを完了したとき
- サブスクリプションが更新された日時
詳細については、サブスクリプションの計測ガイドを参照してください。
イベントパラメータ
名称 | 説明 | 値の例: |
---|---|---|
new_subscription | サブスクリプションが新規購入または更新されたとき | true / false |
af_coupon_code | クーポンコード(サブスクリプション中に使用された場合) | 3MonthsSubscription |
coupon_code_value | 初期価格からのクーポン割引率 | 10% |
af_revenue | サブスクリプションに紐づく収益 | 5 |
af_currency | サブスクリプションの支払い通貨 | USD |
subscription_method | サブスクリプションに使用された支払い方法 | クレジットカード、E-Wallet、PayPal |
expiration_date | サブスクリプションの有効期限 | 2018/07/18 |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("new_subscription", true);
eventValue.put(AFInAppEventParameterName.COUPON_CODE, "3MonthsSubscription");
eventValue.put("coupon_code_value", "10%");
eventValue.put(AFInAppEventParameterName.REVENUE, 5);
eventValue.put(AFInAppEventParameterName.CURRENCY, "USD");
eventValue.put("subscription_method", "");
eventValue.put("expiration_date", "2018/07/18");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.SUBSCRIBE, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventSubscribe
withValues: @{
@"new_subscription": @TRUE,
AFEventParamCouponCode: @"3MonthsSubscription",
@"coupon_code_value": @"10%",
AFEventParamRevenue: @5,
AFEventParamCurrency: @"USD",
@"subscription_method": @"",
@"expiration_date": @"2018/07/18"
}];
AppsFlyerLib.shared().logEvent(AFEventSubscribe,
withValues: [
"new_subscription": true,
AFEventParamCouponCode: "3MonthsSubscription",
"coupon_code_value": "10%",
AFEventParamRevenue: 5,
AFEventParamCurrency: "USD",
"subscription_method": "",
"expiration_date": "2018/07/18"
]);
Dictionary<string, string> Subscription = new Dictionary<string, string>();
Subscription.Add("new_subscription", "true");
Subscription.Add("af_coupon_code", "3MonthsSubscription");
Subscription.Add("coupon_code_value", "10%");
Subscription.Add("af_revenue", "5");
Subscription.Add("af_currency", "USD");
Subscription.Add("subscription_method", "");
Subscription.Add("expiration_date", "2018/07/18");
AppsFlyer.sendEvent("af_subscribe", Subscription);
カスタムイベントで推奨される構造
次のセクションでは、カスタムビエント名と推奨されるイベントパラメーターのイベント構造リストを示しています。アプリ内イベントには、ビジネスニーズを満たすどんなイベントパラメーターを含めることができます。
メディア再生 (media_play)
目的
提供するメディアをユーザーが再生するイベントを記録しましょう。メディアには、例えば動画、音楽、テレビ番組、ラジオなどが含まれます。
このイベントを記録すると、次のことを判断できます。
- タイプおよびコンテンツ別のメディア視聴
- 最も人気のあるストリーミングコンテンツの言語
- ストリーミングコンテンツの最小、最大、および平均持続時間
トリガー
ストリームコンテンツ再生後に一定時間(2分など)が経過したあと
イベントパラメータ
名称 | 説明 | 値の例: |
---|---|---|
af_content_type | ストリーミングされるコンテンツのタイプ | テレビ番組、音楽 |
af_content_id | ストリーミングされるコンテンツのID | 092, E34 |
af_content | コンテンツのタイトル、つまり曲名またはテレビ番組のタイトルとエピソード | コンテンツのタイトル |
media_duration | 再生時間 | 5 |
language | コンテンツの言語 | en-us, fr, es |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "tv show");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "E34");
eventValue.put(AFInAppEventParameterName.CONTENT, "My Show");
eventValue.put("media_duration", 5);
eventValue.put("language", "en-us");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "media_play", eventValue);
[[AppsFlyerLib shared] logEvent:@"media_play"
withValues: @{
AFEventParamContentType: @"tv show",
AFEventParamContentId: @"E34",
AFEventParamContent: @"My Show",
@"duration": @5,
@"langague": @"en-us"
}];
AppsFlyerLib.shared().logEvent("media_play",
withValues: [
AFEventParamContentType: "tv show",
AFEventParamContentId: "E34",
AFEventParamContent: "My Show",
"media_duration": 5,
"language": "en-us"
]);
Dictionary<string, string> MediaPlay = new Dictionary<string, string>();
MediaPlay.Add("af_content_type", "tv show");
MediaPlay.Add("af_content_id", "E34");
MediaPlay.Add("af_content", "My show");
MediaPlay.Add("media_duration", "5");
MediaPlay.Add("language", "en-us");
AppsFlyer.sendEvent("media_play", MediaPlay);
メディア再生時間 (media_minutes)
目的
視聴時間は、特定のコンテンツをユーザーがどれくらい視聴したかを表します。これによりユーザーの使用状況を推測することができるため、ストリーミング業界では、収益の指標に次いで最も重要な指標です。また、サービスの全体的な使用率がどの程度か、最も人気のあるコンテンツが何かを理解することもできます。このイベントを計測すると、次のことに役立ちます。
- どのユーザーがサービスを幅広く利用しているのかを確認できます
- 人気のあるメディアの種類とコンテンツタイプは何かを把握できます
トリガー
次のいずれかの場合:
- ユーザーがメディアアイテムのストリーミングを終了したとき
- ユーザーがメディアアイテムのストリーミングを中止したとき
イベントパラメータ
名称 | 説明 | 値の例 |
---|---|---|
minutes_consumed | ユーザーによる実際のメディア視聴時間 | 3 |
af_content_type | ストリーミングされるコンテンツのタイプ | テレビ番組、音楽 |
af_content_id | ストリーミングされるコンテンツのID | 092, E34 |
af_content | コンテンツのタイトル、例えば曲名またはテレビ番組のタイトルとエピソードなど | コンテンツのタイトル |
media_duration | 再生時間 | 5 |
language | コンテンツの言語 | en-us, fr, es |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "tv show");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "E34");
eventValue.put(AFInAppEventParameterName.CONTENT, "My Show");
eventValue.put("media_duration", 5);
eventValue.put("language", "en-us");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),"media_minutes", eventValue);
[[AppsFlyerLib shared] logEvent:@"media_minutes"
withValues: @{
@"minutes_consumed": @3,
AFEventParamContentType: @"tv show",
AFEventParamContentId: @"E34",
AFEventParamContent: @"My Show",
@"duration": @5,
@"langague": @"en-us"
}];
AppsFlyerLib.shared().logEvent("media_minutes", withValues: [
"minutes_consumed": 3,
AFEventParamContentType: "tv show",
AFEventParamContentId: "E34",
AFEventParamContent: "My Show",
"media_duration": 5,
"language": "en-us"
]);
Dictionary<string, string> MediaMinutes =
new Dictionary<string, string>();
MediaMinutes.Add("minutes_consumed", "3");
MediaMinutes.Add("af_content_type", "tv show");
MediaMinutes.Add("af_content_id", "E34");
MediaMinutes.Add("af_content", "My show");
MediaMinutes.Add("media_duration", "5");
MediaMinutes.Add("language", "en-us");
AppsFlyer.sendEvent("media_minutes", MediaMinutes);
メディアのダウンロード (media_downloaded)
目的
メディア再生とメディアのダウンロードを記録し、この2つを比較することでユーザー設定の好みを知ることができます。ストリーミングが好まれるメディアと、ダウンロードが好まれるメディアを知ることができます。
トリガー
ユーザーがメディアのダウンロードを開始した時
イベントパラメータ
名称 | 説明 | 値の例: |
---|---|---|
af_content_type | コンテンツタイプ | テレビ番組、音楽 |
af_content_id | コンテンツID | 092, E34 |
af_content | コンテンツのタイトル(曲の名前、テレビ番組のタイトルやエピソードなど) | コンテンツのタイトル |
media_duration | 再生時間 | 5 |
language | コンテンツの言語 | en-us, fr, es |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "tv show");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "E34");
eventValue.put(AFInAppEventParameterName.CONTENT, "My Show");
eventValue.put("media_duration", 5);
eventValue.put("language", "en-us");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "media_downloaded", eventValue);
[[AppsFlyerLib shared] logEvent:@"media_downloaded"
withValues: @{
@"minutes_consumed": @3,
AFEventParamContentType: @"tv show",
AFEventParamContentId: @"E34",
AFEventParamContent: @"My Show",
@"duration": @5,
@"langague": @"en-us"
}];
AppsFlyerLib.shared().logEvent("media_downloaded",
withValues: [
"minutes_consumed": 3,
AFEventParamContentType: "tv show",
AFEventParamContentId: "E34",
AFEventParamContent: "My Show",
"media_duration": 5,
"language": "en-us"
]);
Dictionary<string, string> MediaDownloaded = new Dictionary<string, string>();
MediaDownloaded.Add("minutes_consumed", "3");
MediaDownloaded.Add("af_content_type", "tv show");
MediaDownloaded.Add("af_content_id", "E34");
MediaDownloaded.Add("af_content", "My show");
MediaDownloaded.Add("media_duration", "5");
MediaDownloaded.Add("language", "en-us");
AppsFlyer.sendEvent("media_downloaded", MediaDownloaded);
メディアの保存 (media_saved)
目的
ユーザーの好みを知ることができます
トリガー
ユーザーのデバイスにメディアが保存されたとき
イベントパラメータ
名称 | 説明 | 値の例: |
---|---|---|
af_content_type | コンテンツタイプ | テレビ番組、音楽 |
af_content_id | コンテンツID | 092, E34 |
af_content | コンテンツのタイトル、例えば曲名またはテレビ番組のタイトルとエピソードなど | コンテンツのタイトル |
media_duration | 再生時間 | 5 |
language | コンテンツの言語 | en-us, fr, es |
コードの例
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "tv show");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "E34");
eventValue.put(AFInAppEventParameterName.CONTENT, "My Show");
eventValue.put("media_duration", 5);
eventValue.put("language", "en-us");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "media_saved", eventValue);
[[AppsFlyerLib shared] logEvent:@"media_saved"
withValues: @{
@"minutes_consumed": @3,
AFEventParamContentType: @"tv show",
AFEventParamContentId: @"E34",
AFEventParamContent: @"My Show",
@"duration": @5,
@"langague": @"en-us"
}];
AppsFlyerLib.shared().logEvent("media_saved",
withValues: [
"minutes_consumed": 3,
AFEventParamContentType: "tv show",
AFEventParamContentId: "E34",
AFEventParamContent: "My Show",
"media_duration": 5,
"language": "en-us"]);
Dictionary<string, string> MediaSaved = new Dictionary<string, string>();
MediaSaved.Add("minutes_consumed", "3");
MediaSaved.Add("af_content_type", "tv show");
MediaSaved.Add("af_content_id", "E34");
MediaSaved.Add("af_content", "My show");
MediaSaved.Add("media_duration", "5");
MediaSaed.Add("language", "en-us");
AppsFlyer.sendEvent("media_saved", MediaSaved);