FlurryをAndroidと統合する必要があり、ユーザーがメイン画面にとどまる時間(分単位)を知りたいです。Flurryを使用してそのような分析を取得することは可能ですか?Flurryをチェックすると、特定の画面でのヒット数の統計が表示されました。私が知りたいのは、メイン画面でユーザーが費やした平均時間です。この点で親切に助けてください。
3 に答える
これは、時限イベントを通じて達成できます。次のいずれかのメソッドを呼び出すだけで、時限イベントを開始できます。シナリオでは、これはメイン画面のonStartメソッドで実行する必要があります。
- logEvent(String eventId、boolean timed)
- logEvent(String eventId、Map parameters、boolean timed)
時間指定のイベントコールを終了するには
- endTimedEvent(String eventId)
シナリオでは、これはメイン画面のonStopメソッドで呼び出されます。ブール値のtimedパラメーターにtrueを渡し、各アクティビティのonStartとonStopのeventIdを常に一致させるようにしてください。
Flurryは、開発ポータルアカウントの[アプリケーション]>[イベント]>[イベントID]で次のメトリックを自動的に報告します。[イベント期間]リンクまたはアイコン(時計)を選択します。
平均イベント期間-これは、ある期間のイベント数で割った合計イベント時間を報告します。たとえば、ある期間にアプリのユーザーが2人いるとします。ユーザーAはメイン画面を10秒間表示し、セカンダリ画面に移動してメイン画面に戻り、3秒間表示します。ユーザーBはメイン画面を20秒間表示します。これは、(10 + 3 + 20)/ 3=11秒として報告されます。
セッションごとのイベント期間-これは、セッションごとのイベントの平均時間の長さを報告します。セッションは、10秒を超える中断なしにアプリの任意のビュー内にいるユーザーとして定義されます(10秒はデフォルトの一時停止時間であり、更新できます)。たとえば、ユーザーはメイン画面を15秒間表示し、セカンダリ画面に移動し、メイン画面に5秒間戻ります。そのユースケースのイベント期間は、セッションで20秒です。次に、これは同じ期間の他のセッションと平均化されます。
ユーザーごとのイベント期間-これは、ユーザーごとのイベントの平均時間の長さを報告します。ユーザーは、特定の期間にアプリを複数回使用できます。たとえば、1日にユーザーがアプリを3回(3セッション)表示するとします。最初のセッションでは、ユーザーはメインページを5秒間表示し、2番目のセッションを10秒間表示し、3番目のセッションを15秒間表示します。このユーザーのイベント期間は、その日の30秒です。次に、これは同じ期間に他のすべてのユーザーと平均化されます。
簡単な例を示します。このコードでは、単純なイベントやその他のイベントをカテゴリでログに記録したいと考えています。
public void logAnalyticsEvent(final String versionName, final String strMsg, final String category){
if (category==null){
FlurryAgent.logEvent(strMsg);
}else{
final HashMap<String, String> parameters = new HashMap<String, String>();
parameters.put("Event",strMsg );
FlurryAgent.logEvent(category, parameters);
}
}
条件の最初の部分では、イベントのみをログに記録し、2 番目の部分では、イベントの名前をパラメーター (「イベント」という名前のキーとイベントの名前の値を持つハッシュマップ) に入れます。パラメーターを使用してカテゴリの名前をログに記録します (内部のイベント)
FlurryAgent.logEvent(category, parameters);
お役に立てれば!
Flurry についてはよくわかりませんが、Localytics (www.localytics.com) でイベント属性を使用してこれを行うことができます。ユーザーがメイン画面 (またはアプリケーション内のアクティビティ) に費やした時間を追跡し、そのアクティビティが終了したときに起動するイベントにバケット化されたイベント属性として記録します。
擬似コードの例:
ActivityStart() {
long startTime = getTimeInMilliseconds();
}
ActivityClosing() {
long endTime = getTimeInMilliseconds();
}
ApplicationExitPath() {
long timeSpent = endTime - startTime;
String timeBucket = bucketizeTime(timeSpent);
Dictionary attributes = [ "Main Activity Time Spent", timeBucket];
tagEvent("App Exit", attributes);
}
String bcketizeTime(Long timeSpent) {
if(timeSpent < 1000) { return "less than 1 second"; }
if(timeSpent < 10000) { return "1 - 10 seconds"; }
if(timeSpent < 30000) { return "10 - 30 seconds"; }
...
}