Added statistics for onboarding screens

This commit is contained in:
Dmitry Donskoy 2019-11-26 13:45:26 +03:00 committed by Arsentiy Milchakov
parent a958806294
commit 0d2bdcf20e
4 changed files with 119 additions and 15 deletions

View file

@ -1,47 +1,105 @@
package com.mapswithme.maps.news;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import androidx.annotation.StringRes;
import com.mapswithme.maps.R;
import com.mapswithme.util.UiUtils;
import com.mapswithme.util.statistics.StatisticValueConverter;
public enum OnboardingStep
public enum OnboardingStep implements StatisticValueConverter<String>
{
CHECK_OUT_SIGHTS(R.string.visible,
R.string.visible,
R.string.view_campaign_button,
R.string.visible,
R.drawable.img_check_sights_out),
R.drawable.img_check_sights_out)
{
@NonNull
@Override
public String toStatisticValue()
{
return "sample_discovery";
}
},
SUBSCRIBE_TO_CATALOG(R.string.visible,
R.string.visible,
R.string.view_campaign_button,
R.string.visible,
R.drawable.img_discover_guides),
R.drawable.img_discover_guides)
{
@NonNull
@Override
public String toStatisticValue()
{
return "buy_subscription";
}
},
DISCOVER_GUIDES(R.string.visible,
R.string.visible,
R.string.view_campaign_button,
R.string.visible,
R.drawable.img_discover_guides),
R.drawable.img_discover_guides)
{
@NonNull
@Override
public String toStatisticValue()
{
return "catalog_discovery";
}
},
SHARE_EMOTIONS(R.string.visible,
UiUtils.NO_ID,
R.string.view_campaign_button,
R.string.visible,
R.drawable.img_share_emptions, false),
R.drawable.img_share_emptions, false)
{
@NonNull
@Override
public String toStatisticValue()
{
return "share_emotions";
}
},
EXPERIENCE(R.string.visible,
UiUtils.NO_ID,
R.string.view_campaign_button,
R.string.visible,
R.drawable.img_experience, false),
R.drawable.img_experience, false)
{
@NonNull
@Override
public String toStatisticValue()
{
return "experience";
}
},
DREAM_AND_PLAN(R.string.visible,
UiUtils.NO_ID,
R.string.view_campaign_button,
R.string.visible,
R.drawable.img_dream_and_plan, false),
R.drawable.img_dream_and_plan, false)
{
@NonNull
@Override
public String toStatisticValue()
{
return "dream_and_plan";
}
},
PERMISSION_EXPLANATION(R.string.visible,
R.string.visible,
R.string.view_campaign_button,
R.string.visible,
R.drawable.img_welcome);
R.drawable.img_welcome)
{
@NonNull
@Override
public String toStatisticValue()
{
return "permissions";
}
};
@StringRes
private final int mAcceptButtonResId;
@ -75,7 +133,6 @@ public enum OnboardingStep
mDeclinedButton = hasDeclinedButton;
}
@StringRes
public int getAcceptButtonResId()
{

View file

@ -25,12 +25,14 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.mapswithme.maps.BuildConfig;
import com.mapswithme.maps.MwmApplication;
import com.mapswithme.maps.R;
import com.mapswithme.maps.base.BaseMwmDialogFragment;
import com.mapswithme.util.ThemeUtils;
import com.mapswithme.util.UiUtils;
import com.mapswithme.util.Utils;
import com.mapswithme.util.statistics.Statistics;
import java.util.ArrayList;
import java.util.List;
@ -348,6 +350,7 @@ public abstract class BaseNewsFragment extends BaseMwmDialogFragment
@Override
public void onClick(View v)
{
trackStatistic(Statistics.ParamValue.NEXT);
mPager.setCurrentItem(mPager.getCurrentItem() + 1, true);
}
});
@ -362,15 +365,27 @@ public abstract class BaseNewsFragment extends BaseMwmDialogFragment
});
update();
trackStatistic(Statistics.ParamValue.OPEN);
return res;
}
private void trackStatistic(@NonNull String value)
{
Statistics.ParameterBuilder builder = Statistics
.params()
.add(Statistics.EventParam.ACTION, value)
.add(Statistics.EventParam.VERSION, BuildConfig.VERSION_NAME);
Statistics.INSTANCE.trackEvent(Statistics.EventName.WHATS_NEW_ACTION, builder);
}
@CallSuper
protected void onDoneClick()
{
dismissAllowingStateLoss();
if (mListener != null)
mListener.onDialogDone();
trackStatistic(Statistics.ParamValue.CLOSE);
}
@SuppressWarnings("TryWithIdenticalCatches")

View file

@ -26,6 +26,7 @@ import com.mapswithme.util.Counters;
import com.mapswithme.util.SharedPropertiesUtils;
import com.mapswithme.util.ThemeUtils;
import com.mapswithme.util.UiUtils;
import com.mapswithme.util.statistics.Statistics;
import java.util.Stack;
@ -33,6 +34,7 @@ public class WelcomeDialogFragment extends BaseMwmDialogFragment implements View
{
private static final String ARG_HAS_SPECIFIC_STEP = "welcome_screen_type";
private static final String ARG_HAS_MANY_STEPS = "show_onboarding_steps";
private static final String DEF_STATISTICS_VALUE = "agreement";
@NonNull
private final Stack<OnboardingStep> mOnboardingSteps = new Stack<>();
@ -175,7 +177,7 @@ public class WelcomeDialogFragment extends BaseMwmDialogFragment implements View
initUserAgreementViews();
bindWelcomeScreenType();
trackStatisticEvent(Statistics.EventName.ONBOARDING_SCREEN_SHOW);
return res;
}
@ -255,6 +257,8 @@ public class WelcomeDialogFragment extends BaseMwmDialogFragment implements View
if (!isAgreementGranted)
return;
trackStatisticEvent(Statistics.EventName.ONBOARDING_SCREEN_ACCEPT);
if (mPolicyAgreementListener != null)
mPolicyAgreementListener.onPolicyAgreementApplied();
dismissAllowingStateLoss();
@ -282,18 +286,36 @@ public class WelcomeDialogFragment extends BaseMwmDialogFragment implements View
mTitle.setText(mOnboardinStep.getTitle());
mImage.setImageResource(mOnboardinStep.getImage());
mAcceptBtn.setText(mOnboardinStep.getAcceptButtonResId());
declineBtn.setOnClickListener(v -> {});
declineBtn.setOnClickListener(v -> onDeclineBtnClicked());
mSubtitle.setText(mOnboardinStep.getSubtitle());
}
private void onDeclineBtnClicked()
{
Counters.setFirstStartDialogSeen(requireContext());
trackStatisticEvent(Statistics.EventName.ONBOARDING_SCREEN_DECLINE);
}
private void trackStatisticEvent(@NonNull String event)
{
Statistics.ParameterBuilder builder = Statistics
.params().add(Statistics.EventParam.TYPE, getModeStatsValue());
Statistics.INSTANCE.trackEvent(event, builder);
}
@NonNull
private String getModeStatsValue()
{
return mOnboardinStep == null ? DEF_STATISTICS_VALUE : mOnboardinStep.toStatisticValue();
}
@Override
public void onClick(View v)
{
if (v.getId() != R.id.accept_btn)
{
Counters.setFirstStartDialogSeen(requireContext());
return;
}
trackStatisticEvent(Statistics.EventName.ONBOARDING_SCREEN_ACCEPT);
if (!mOnboardingSteps.isEmpty())
{

View file

@ -369,6 +369,7 @@ public enum Statistics
public static final String DOWNLOADER_BANNER_CLICK = "Downloader_Banner_click";
public static final String DOWNLOADER_FAB_CLICK = "Downloader_AddMap_click";
public static final String DOWNLOADER_SEARCH_CLICK = "Downloader_Search_click";
public static final String WHATS_NEW_ACTION = "WhatsNew_action";
static final String DOWNLOADER_DIALOG_ERROR = "Downloader_OnStartScreen_error";
// bookmarks
@ -544,6 +545,10 @@ public enum Statistics
static final String INAPP_PURCHASE_VALIDATION_ERROR = "InAppPurchase_Validation_error";
static final String INAPP_PURCHASE_PRODUCT_DELIVERED = "InAppPurchase_Product_delivered";
public static final String ONBOARDING_SCREEN_SHOW = "OnboardingScreen_show";
public static final String ONBOARDING_SCREEN_ACCEPT = "OnboardingScreen_accept";
public static final String ONBOARDING_SCREEN_DECLINE = "OnboardingScreen_decline";
public static final String ONBOARDING_DEEPLINK_SCREEN_SHOW = "OnboardingDeeplinkScreen_show";
public static final String ONBOARDING_DEEPLINK_SCREEN_ACCEPT = "OnboardingDeeplinkScreen_accept";
public static final String ONBOARDING_DEEPLINK_SCREEN_DECLINE = "OnboardingDeeplinkScreen_decline";
@ -606,6 +611,7 @@ public enum Statistics
public static final String SCENARIO = "scenario";
public static final String BUTTON = "button";
public static final String SCREEN = "screen";
public static final String VERSION = "version";
static final String TARGET = "target";
static final String CATEGORY = "category";
public static final String TAB = "tab";
@ -701,9 +707,13 @@ public enum Statistics
public static final String SPONSORED_BUTTON = "sponsored_button";
public static final String POPUP = "popup";
public static final String WEBVIEW = "webview";
public static final String ONBOARDING_GUIDES_SUBSCRIPTION = "onboarding_guides_subscription";
public static final String PLUS = "plus";
public static final String DOWNLOAD = "download";
static final String GUIDES_SUBSCRIPTION = "GuidesSubscription";
public static final String OPEN = "open";
public static final String CLOSE = "close";
public static final String NEXT = "next";
static final String GUIDES_SUBSCRIPTION = "OnboardingGuidesSubscription";
static final String SEARCH_BOOKING_COM = "Search.Booking.Com";
static final String OPENTABLE = "OpenTable";
static final String LOCALS_EXPERTS = "Locals.Maps.Me";