概要:オンライン教育アプリで推奨されるアプリ内イベントを記録して、ユーザージャーニー全体のユーザーの質を測定しましょう。
オンライン教育
オンライン教育アプリはユーザーのリモート学習を可能にします。記録を推奨する典型的なイベントには、登録、チュートリアルとコースの完了、受け取った終了証明書などがあります。
これらのイベントを計測することで、次のような判断に役立ちます。
- ユーザーが最も希望するコースはどれかを知り、ターゲティングのヒントを得ることができます
- ユーザーをリターゲティングして、コースを修了するための追加のチュートリアルがあることを思い出させることができます
- 最も需要が高いコースと証明書はどれか
アプリ内イベント計測の詳細については、リッチアプリ内イベントガイドを参照してください。
規定イベントで推奨される構造
次のセクションでは、オンライン教育アプリで一般的なイベント構造のリストを示しています。各構造には、既定のイベント名と推奨されるイベントパラメーターが含まれています。アプリ内イベントには、ビジネスニーズを満たす任意のイベントパラメーターを含めることができます。
ログイン (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_complete_registration)
目的
アプリをインストールし、サインアップを完了したユーザーがどれだけいるか、またユーザーが好むサインアップ方法を確認しましょう
トリガー
ユーザーがサインアップ手順を完了したとき
イベントパラメータ
名称 | 説明 | 値の例: |
---|---|---|
af_registration_method | サインアップ方法のタイプ | メール、facebook |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put(AFInAppEventParameterName.registration_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_tutorial_completion)
目的
このイベントを記録すると、次のことを判断できます。
- ユーザーがつまずく可能性のあるトピックは何か
- どのチュートリアルがうまくいかないかを知り、それらを改善できます
- 収益などのディメンション(分析軸)と全体のユーザーアクティビティを関連付けます
トリガー
- ユーザーがチュートリアルを完了したとき
- ユーザーがチュートリアルを開始したが、完了せずに中止した場合
イベントパラメータ
名称 | 説明 | 値の例: |
---|---|---|
af_success | ユーザーがチュートリアルを完了したかどうか | yes |
af_tutorial_id | チュートリアルID | 3 |
af_content | チュートリアル名 | algebra |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put(AFInAppEventParameterName.SUCCESS, yes);
eventValue.put(AFInAppEventParameterName.TUTORIAL_ID, "3");
eventValue.put(AFInAppEventParameterName.CONTENT, "algebra");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.TUTORIAL_COMPLETION, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventTutorial_completion
withValues: @{
AFEventParamSuccess: @YES,
AFEventParamTutorialId: @"3",
AFEventParamContent: @"algebra"
}];
AppsFlyerLib.shared().logEvent(AFEventTutorial_completion,
withValues: [
AFEventParamSuccess: YES,
AFEventParamTutorialId: "3",
AFEventParamContent: "algebra"
]);
Dictionary<string, string> TutorialCompletiondEvent = new Dictionary<string, string>();
TutorialCompletiondEvent.Add("af_success", "yes");
TutorialCompletiondEvent.Add("af_tutorial_id", "3");
TutorialCompletiondEvent.Add("af_tutorial_content", "algebra");
AppsFlyer.sendEvent ("af_tutorial_completion", TutorialCompletiondEvent);
購入 (af_purchase)
目的
ユーザーが実施したアプリ内購入を計測することで次のことに役立ちます。
- アドネットワークと広告代理店間のユーザーのLTV(顧客生涯価値)とキャンペーンのROIを判断します。
- どのようなオファーがユーザーに最も人気があるのかを特定します。
- キャンペーンのターゲティングを最適化するために、購入されたアイテムとキャンペーンを相互参照します。
トリガー
購入が正常に完了しユーザーに「ありがとうございました」が表示されたとき
イベントパラメータ
名称 | 説明 | 値の例: |
---|---|---|
af_revenue | 購入による収益の予測 | 250.99 |
af_currency | Currency code | USD |
af_content_id | アイテムID | 001, 092 |
order_id | 注文ID | 9277 |
af_receipt_id | レシートID | 9277 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put(AFInAppEventParameterName.REVENUE, 250.99);
eventValue.put(AFInAppEventParameterName.CURRENCY, "USD");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "092");
eventValue.put("order_id", "9277");
eventValue.put(AFInAppEventParameterName.RECEIPT_ID, "9277");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),AFInAppEventType.PURCHASE, eventValue);
[[AppsFlyerLib shared] logEvent:AFEventPurchase
withValues: @{
AFEventParamRevenue: @250.99,
AFEventParamCurrency: @"USD",
AFEventParamContentId: @"092",
@"order_id": @"9277",
AFEventParamReceiptId: @"9277"
}];
AppsFlyerLib.shared().logEvent(AFEventPurchase,
withValues: [
AFEventParamRevenue: 250.99,
AFEventParamCurrency: "USD",
AFEventParamContentId: "092",
"order_id": "9277",
AFEventParamReceiptId: "9277"
]);
Dictionary<string, string> purchaseEvent = new Dictionary<string, string>();
purchaseEvent.Add("af_revenue", "250.99");
purchaseEvent.Add("af_currency", "USD");
purchaseEvent.Add("af_content_id", "001");
purchaseEvent.Add("order_id", "9277");
purchaseEvent.Add("af_receipt_id", "9277");
AppsFlyer.sendEvent ("af_purchase", purchaseEvent);
カスタムイベントで推奨される構造
次のセクションでは、カスタムビエント名と推奨されるイベントパラメーターのイベント構造リストを示しています。アプリ内イベントには、ビジネスニーズを満たすどんなイベントパラメーターを含めることができます。
演習の完了 (complete_excercise)
目的
このイベントを記録し、他のデータと比較することでユーザーについて詳しく理解しましょう。例えば、演習を開始したが完了しなかったユーザー数を知ることができます。
トリガー
ユーザーが演習を完了したとき
イベントパラメータ
名称 | 説明 | 値の例: |
---|---|---|
course_name | コース名 | algebra |
exercise_name | 演習名 | 2 |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("course_name", "algebra");
eventValue.put("exercise_name", "2");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "complete_exercise", eventValue);
[[AppsFlyerLib shared] logEvent:@"complete_exercise"
withValues: @{
@"course_name": @"algebra",
@"exercise_name": @"2"
}];
AppsFlyerLib.shared().logEvent("complete_exercise",withValues:
["course_name": "algebra","exercise_name": "2" ])
Dictionary<string, string> CompleteExerciseEvent = new Dictionary<string, string>();
CompleteExerciseEvent.Add("course_name", "algebra");
CompleteExerciseEvent.Add("exercise_name", "2");
AppsFlyer.sendEvent ("complete_exercise", CompleteExerciseEvent);
コースの完了 (course_completed)
目的
このイベントを記録し、他のデータと比較することでユーザーについて詳しく理解しましょう。例えば、コースを開始したが完了しなかったユーザー数を知ることができます。
トリガー
ユーザーがコースを完了したとき
イベントパラメータ
名称 | 説明 | 値の例: |
---|---|---|
course_name | コース名 | algebra |
course_completed | コースが完了したかどうか | yes |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("course_name", "algebra");
eventValue.put("course_completed", "yes");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "course_completed", eventValue);
[AppsFlyerLib shared] logEvent:@"course_completed" withValues:@{
@"course_name": @"algebra",
@"course_completed": @"yes"}];
AppsFlyerLib.shared().logEvent("course_completed",withValues:
[ "course_name": "algebra",
"course_completed": "yes"])
Dictionary<string, string> CourseCompletedEvent = new Dictionary<string, string>();
CourseCompletedEvent.Add("course_name", "algebra");
CourseCompletedEvent.Add("course_completed", "yes");
AppsFlyer.sendEvent ("course_completed
", CourseCompletedEvent);
修了証明書の発行 (certificate_issued)
目的
このイベントを記録し、他のデータと比較することでユーザーについて詳しく理解しましょう。例えば、コースを修了したユーザー数を知り、その後次のコースについてリターゲティングすることができます。
トリガー
ユーザーに修了証明書が発行されたとき
イベントパラメータ
名称 | 説明 | 値の例: |
---|---|---|
course_name | コース名 | algebra |
certificate_received | 証明書が発行されたかどうか | yes |
コードの例
Map<String, Object> eventValue = new HashMap<>();
eventValue.put("course_name", "algebra");
eventValue.put("certificate_received", "yes");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "certificate issued", eventValue);
[[AppsFlyerLib shared] logEvent:@"course_completed" withValues: @{
@"course_name": @"algebra",
@"certificate_received": @"yes"}];
AppsFlyerLib.shared().logEvent("certificate issued", withValues:
[ "course_name": "algebra",
"certificate_received": "yes"])
Dictionary<string, string> CertificateIssuedEvent = new Dictionary<string, string>();
CertificateIssuedEvent.Add("course_name", "algebra");
CertificateIssuedEvent.Add("certificate_received", "yes");
AppsFlyer.sendEvent ("certificate issued
", CertificateIssuedEvent);