[android] Added ugc statistics

This commit is contained in:
Александр Зацепин 2017-10-12 17:59:20 +03:00 committed by Roman Kuznetsov
parent c9317d3054
commit 167b881d8a
5 changed files with 100 additions and 8 deletions

View file

@ -2,6 +2,7 @@ package com.mapswithme.maps.auth;
import android.app.Activity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
@ -24,6 +25,7 @@ import com.mapswithme.maps.R;
import com.mapswithme.maps.base.BaseMwmDialogFragment;
import com.mapswithme.util.log.Logger;
import com.mapswithme.util.log.LoggerFactory;
import com.mapswithme.util.statistics.Statistics;
import java.lang.ref.WeakReference;
@ -61,12 +63,15 @@ public class SocialAuthDialogFragment extends BaseMwmDialogFragment
{
super.onResume();
AccessToken token = AccessToken.getCurrentAccessToken();
if (token == null)
return;
String tokenValue = null;
if (token != null)
tokenValue = token.getToken();
String tokenValue = token.getToken();
if (TextUtils.isEmpty(tokenValue))
{
Statistics.INSTANCE.trackEvent(Statistics.EventName.UGC_AUTH_SHOWN);
return;
}
LOGGER.i(TAG, "Social token is already obtained");
sendResult(Activity.RESULT_OK, tokenValue, Framework.SOCIAL_TOKEN_FACEBOOK);
@ -97,6 +102,13 @@ public class SocialAuthDialogFragment extends BaseMwmDialogFragment
mCallbackManager.onActivityResult(requestCode, resultCode, data);
}
@Override
public void onDismiss(DialogInterface dialog)
{
Statistics.INSTANCE.trackEvent(Statistics.EventName.UGC_AUTH_DECLINED);
super.onDismiss(dialog);
}
private static class FBCallback implements FacebookCallback<LoginResult>
{
@NonNull
@ -110,6 +122,7 @@ public class SocialAuthDialogFragment extends BaseMwmDialogFragment
@Override
public void onSuccess(LoginResult loginResult)
{
Statistics.INSTANCE.trackUGCExternalAuthSucceed(Statistics.ParamValue.FACEBOOK);
AccessToken accessToken = loginResult.getAccessToken();
LOGGER.d(TAG, "onSuccess, access token: " + accessToken);
sendResult(Activity.RESULT_OK, accessToken.getToken(), Framework.SOCIAL_TOKEN_FACEBOOK);
@ -118,6 +131,7 @@ public class SocialAuthDialogFragment extends BaseMwmDialogFragment
@Override
public void onCancel()
{
Statistics.INSTANCE.trackEvent(Statistics.EventName.UGC_AUTH_DECLINED);
LOGGER.w(TAG, "onCancel");
sendResult(Activity.RESULT_CANCELED, null, Framework.SOCIAL_TOKEN_FACEBOOK);
}
@ -125,6 +139,8 @@ public class SocialAuthDialogFragment extends BaseMwmDialogFragment
@Override
public void onError(FacebookException error)
{
Statistics.INSTANCE.trackUGCAuthFailed(Statistics.ParamValue.FACEBOOK,
error != null ? error.getMessage() : null);
LOGGER.e(TAG, "onError", error);
sendResult(Activity.RESULT_CANCELED, null, Framework.SOCIAL_TOKEN_FACEBOOK);
}

View file

@ -62,7 +62,8 @@ public class UGCController implements View.OnClickListener, UGC.UGCListener
UGCEditorActivity.start((Activity) mPlacePage.getContext(), mMapObject.getTitle(),
mMapObject.getFeatureId(),
UGC.getUserRatings(), UGC.RATING_NONE, mMapObject.canBeReviewed());
UGC.getUserRatings(), UGC.RATING_NONE, mMapObject.canBeReviewed(),
true /* isFromPPP */);
}
};
@NonNull
@ -217,7 +218,8 @@ public class UGCController implements View.OnClickListener, UGC.UGCListener
UGCEditorActivity.start((Activity) mPlacePage.getContext(), mMapObject.getTitle(),
mMapObject.getFeatureId(),
mUgc.getUserRatings(), rating, mMapObject.canBeReviewed());
mUgc.getUserRatings(), rating, mMapObject.canBeReviewed(),
false /* isFromPPP */);
}
private void seUserReviewAndRatingsView(@Nullable UGCUpdate update)

View file

@ -10,17 +10,18 @@ import android.support.v4.app.Fragment;
import com.mapswithme.maps.base.BaseMwmFragmentActivity;
import com.mapswithme.maps.bookmarks.data.FeatureId;
import com.mapswithme.util.ThemeUtils;
import com.mapswithme.util.statistics.Statistics;
import java.util.ArrayList;
public class UGCEditorActivity extends BaseMwmFragmentActivity
{
//TODO: refactor to EditorParams with builder.
public static void start(@NonNull Activity activity, @NonNull String title,
@NonNull FeatureId featureId, @NonNull ArrayList<UGC.Rating> ratings,
@UGC.Impress int defaultRating, boolean canBeReviewed)
@UGC.Impress int defaultRating, boolean canBeReviewed, boolean isFromPPP)
{
Statistics.INSTANCE.trackUGCStart(false /* isEdit */, isFromPPP);
final Intent i = new Intent(activity, UGCEditorActivity.class);
Bundle args = new Bundle();
args.putParcelable(UGCEditorFragment.ARG_FEATURE_ID, featureId);
@ -44,4 +45,11 @@ public class UGCEditorActivity extends BaseMwmFragmentActivity
{
return UGCEditorFragment.class;
}
@Override
public void onBackPressed()
{
Statistics.INSTANCE.trackEvent(Statistics.EventName.UGC_REVIEW_CANCEL);
super.onBackPressed();
}
}

View file

@ -13,9 +13,11 @@ import android.widget.EditText;
import com.mapswithme.maps.R;
import com.mapswithme.maps.auth.BaseMwmAuthorizationFragment;
import com.mapswithme.maps.bookmarks.data.FeatureId;
import com.mapswithme.maps.widget.ToolbarController;
import com.mapswithme.util.UiUtils;
import com.mapswithme.util.log.Logger;
import com.mapswithme.util.log.LoggerFactory;
import com.mapswithme.util.statistics.Statistics;
import java.util.List;
@ -73,6 +75,20 @@ public class UGCEditorFragment extends BaseMwmAuthorizationFragment
mToolbarController.setTitle(getArguments().getString(ARG_TITLE));
}
@Override
protected ToolbarController onCreateToolbarController(@NonNull View root)
{
return new ToolbarController(root, getActivity())
{
@Override
public void onUpClick()
{
Statistics.INSTANCE.trackEvent(Statistics.EventName.UGC_REVIEW_CANCEL);
super.onUpClick();
}
};
}
@Override
protected void onSubmitButtonClick()
{
@ -86,6 +102,7 @@ public class UGCEditorFragment extends BaseMwmAuthorizationFragment
if (featureId == null)
throw new AssertionError("Feature ID must be passed to this fragment!");
UGC.setUGCUpdate(featureId, update);
Statistics.INSTANCE.trackEvent(Statistics.EventName.UGC_REVIEW_SUCCESS);
getActivity().finish();
}

View file

@ -16,6 +16,7 @@ import com.facebook.ads.AdError;
import com.facebook.appevents.AppEventsLogger;
import com.flurry.android.FlurryAgent;
import com.mapswithme.maps.BuildConfig;
import com.mapswithme.maps.Framework;
import com.mapswithme.maps.MwmApplication;
import com.mapswithme.maps.PrivateVariables;
import com.mapswithme.maps.ads.MwmNativeAd;
@ -58,6 +59,10 @@ import static com.mapswithme.util.statistics.Statistics.EventName.PP_SPONSORED_E
import static com.mapswithme.util.statistics.Statistics.EventName.PP_SPONSORED_OPEN;
import static com.mapswithme.util.statistics.Statistics.EventName.PP_SPONSORED_SHOWN;
import static com.mapswithme.util.statistics.Statistics.EventName.ROUTING_PLAN_TOOLTIP_CLICK;
import static com.mapswithme.util.statistics.Statistics.EventName.UGC_AUTH_ERROR;
import static com.mapswithme.util.statistics.Statistics.EventName.UGC_AUTH_EXTERNAL_REQUEST_SUCCESS;
import static com.mapswithme.util.statistics.Statistics.EventName.UGC_AUTH_SHOWN;
import static com.mapswithme.util.statistics.Statistics.EventName.UGC_REVIEW_START;
import static com.mapswithme.util.statistics.Statistics.EventParam.BANNER;
import static com.mapswithme.util.statistics.Statistics.EventParam.BANNER_STATE;
import static com.mapswithme.util.statistics.Statistics.EventParam.BATTERY;
@ -89,8 +94,8 @@ import static com.mapswithme.util.statistics.Statistics.ParamValue.CIAN;
import static com.mapswithme.util.statistics.Statistics.ParamValue.GEOCHAT;
import static com.mapswithme.util.statistics.Statistics.ParamValue.OPENTABLE;
import static com.mapswithme.util.statistics.Statistics.ParamValue.SEARCH_BOOKING_COM;
import static com.mapswithme.util.statistics.Statistics.ParamValue.VIATOR;
import static com.mapswithme.util.statistics.Statistics.ParamValue.THOR;
import static com.mapswithme.util.statistics.Statistics.ParamValue.VIATOR;
public enum Statistics
{
@ -248,6 +253,15 @@ public enum Statistics
// Cold start
public static final String APPLICATION_COLD_STARTUP_INFO = "Application_ColdStartup_info";
// Ugc.
public static final String UGC_REVIEW_START = "UGC_Review_start";
public static final String UGC_REVIEW_CANCEL = "UGC_Review_cancel";
public static final String UGC_REVIEW_SUCCESS = "UGC_Review_success";
public static final String UGC_AUTH_SHOWN = "UGC_Auth_shown";
public static final String UGC_AUTH_DECLINED = "UGC_Auth_declined";
public static final String UGC_AUTH_EXTERNAL_REQUEST_SUCCESS = "UGC_Auth_external_request_success";
public static final String UGC_AUTH_ERROR = "UGC_Auth_error";
public static class Settings
{
public static final String WEB_SITE = "Setings. Go to website";
@ -355,6 +369,12 @@ public enum Statistics
public static final String CIAN = "Cian.Ru";
public static final String THOR = "Thor";
public static final String NO_PRODUCTS = "no_products";
public static final String ADD = "add";
public static final String EDIT = "edit";
public static final String AFTER_SAVE = "after_save";
public static final String PLACEPAGE_PREVIEW = "placepage_preview";
public static final String PLACEPAGE = "placepage";
public static final String FACEBOOK = "facebook";
}
// Initialized once in constructor and does not change until the process restarts.
@ -872,6 +892,35 @@ public enum Statistics
}
}
public void trackUGCStart(boolean isEdit, boolean isPPPreview)
{
trackEvent(UGC_REVIEW_START,
params()
.add(EventParam.IS_AUTHENTICATED, Framework.nativeIsUserAuthenticated())
.add(EventParam.IS_ONLINE, ConnectionState.isConnected())
.add(EventParam.MODE, isEdit ? ParamValue.EDIT : ParamValue.ADD)
.add(EventParam.FROM, isPPPreview ? ParamValue.PLACEPAGE_PREVIEW : ParamValue.PLACEPAGE)
.get());
}
public void trackUGCAuthDialogShown()
{
trackEvent(UGC_AUTH_SHOWN, params().add(EventParam.FROM, ParamValue.AFTER_SAVE).get());
}
public void trackUGCExternalAuthSucceed(@NonNull String provider)
{
trackEvent(UGC_AUTH_EXTERNAL_REQUEST_SUCCESS, params().add(EventParam.PROVIDER, provider));
}
public void trackUGCAuthFailed(@NonNull String provider, @Nullable String error)
{
trackEvent(UGC_AUTH_ERROR, params()
.add(EventParam.PROVIDER, provider)
.add(EventParam.ERROR, error)
.get());
}
public static ParameterBuilder params()
{
return new ParameterBuilder();