[android][promo][tips] show promo after booking when application turns to the foreground + show tips fix

This commit is contained in:
Arsentiy Milchakov 2019-07-04 20:30:39 +03:00 committed by yoksnod
parent abf5ddff23
commit 783695f939
4 changed files with 56 additions and 24 deletions

View file

@ -2086,7 +2086,7 @@ Java_com_mapswithme_maps_Framework_nativeSetActiveSubscription(JNIEnv *, jclass,
}
JNIEXPORT jint JNICALL
Java_com_mapswithme_maps_Framework_nativeGetCurrentTipsApi(JNIEnv * env, jclass)
Java_com_mapswithme_maps_Framework_nativeGetCurrentTipIndex(JNIEnv * env, jclass)
{
auto const & tipsApi = frm()->GetTipsApi();
auto const tip = tipsApi.GetTip();

View file

@ -509,7 +509,7 @@ public class Framework
public static native void nativeSetActiveSubscription(@SubscriptionType int type,
boolean isActive);
public static native int nativeGetCurrentTipsApi();
public static native int nativeGetCurrentTipIndex();
private static native void nativeDisableAdProvider(int provider, int bannerPlace);

View file

@ -31,6 +31,7 @@ import com.mapswithme.maps.activity.CustomNavigateUpListener;
import com.mapswithme.maps.ads.LikesManager;
import com.mapswithme.maps.api.ParsedMwmRequest;
import com.mapswithme.maps.auth.PassportAuthDialogFragment;
import com.mapswithme.maps.background.AppBackgroundTracker;
import com.mapswithme.maps.background.NotificationCandidate;
import com.mapswithme.maps.background.Notifier;
import com.mapswithme.maps.base.BaseMwmFragmentActivity;
@ -72,6 +73,8 @@ import com.mapswithme.maps.maplayer.traffic.TrafficManager;
import com.mapswithme.maps.maplayer.traffic.widget.TrafficButton;
import com.mapswithme.maps.news.IntroductionDialogFragment;
import com.mapswithme.maps.news.IntroductionScreenFactory;
import com.mapswithme.maps.promo.Promo;
import com.mapswithme.maps.promo.PromoAfterBooking;
import com.mapswithme.maps.purchase.AdsRemovalActivationCallback;
import com.mapswithme.maps.purchase.AdsRemovalPurchaseControllerProvider;
import com.mapswithme.maps.purchase.FailedPurchaseChecker;
@ -114,6 +117,7 @@ import com.mapswithme.maps.widget.placepage.PlacePageController;
import com.mapswithme.maps.widget.placepage.RoutingModeListener;
import com.mapswithme.util.Counters;
import com.mapswithme.util.InputUtils;
import com.mapswithme.util.NetworkPolicy;
import com.mapswithme.util.PermissionsUtils;
import com.mapswithme.util.ThemeSwitcher;
import com.mapswithme.util.ThemeUtils;
@ -154,7 +158,8 @@ public class MwmActivity extends BaseMwmFragmentActivity
AdsRemovalPurchaseControllerProvider,
AdsRemovalActivationCallback,
PlacePageController.SlideListener,
AlertDialogCallback, RoutingModeListener
AlertDialogCallback, RoutingModeListener,
AppBackgroundTracker.OnTransitionListener
{
private static final Logger LOGGER = LoggerFactory.INSTANCE.getLogger(LoggerFactory.Type.MISC);
private static final String TAG = MwmActivity.class.getSimpleName();
@ -222,7 +227,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
private boolean mIsFullscreen;
private boolean mIsFullscreenAnimating;
private boolean mIsAppearMenuLater;
private boolean mIsLaunchByDeepLink;
private FloatingSearchToolbarController mSearchController;
@ -491,8 +495,8 @@ public class MwmActivity extends BaseMwmFragmentActivity
mPlacePageController.initialize();
mPlacePageController.onActivityCreated(this, savedInstanceState);
mIsLaunchByDeepLink = getIntent().getBooleanExtra(EXTRA_LAUNCH_BY_DEEP_LINK, false);
initViews();
boolean isLaunchByDeepLink = getIntent().getBooleanExtra(EXTRA_LAUNCH_BY_DEEP_LINK, false);
initViews(isLaunchByDeepLink);
Statistics.INSTANCE.trackConnectionState();
@ -522,12 +526,12 @@ public class MwmActivity extends BaseMwmFragmentActivity
return;
}
initTips();
tryToShowAdditionalViewOnTop();
}
private void initViews()
private void initViews(boolean isLaunchByDeeplink)
{
initMap();
initMap(isLaunchByDeeplink);
initNavigationButtons();
if (!mIsTabletLayout)
@ -545,17 +549,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
initFilterViews();
}
private void initTips()
{
TipsApi api = TipsApi.requestCurrent(this, getClass());
if (api == TipsApi.STUB)
return;
api.showTutorial(getActivity());
Statistics.INSTANCE.trackTipsEvent(Statistics.EventName.TIPS_TRICKS_SHOW, api.ordinal());
}
private void initFilterViews()
{
View frame = findViewById(R.id.filter_frame);
@ -645,7 +638,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
setFullscreen(false);
}
private void initMap()
private void initMap(boolean isLaunchByDeepLink)
{
mFadeView = findViewById(R.id.fade_view);
mFadeView.setListener(new FadeView.Listener()
@ -661,7 +654,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
if (mMapFragment == null)
{
Bundle args = new Bundle();
args.putBoolean(MapFragment.ARG_LAUNCH_BY_DEEP_LINK, mIsLaunchByDeepLink);
args.putBoolean(MapFragment.ARG_LAUNCH_BY_DEEP_LINK, isLaunchByDeepLink);
mMapFragment = (MapFragment) MapFragment.instantiate(this, MapFragment.class.getName(), args);
getSupportFragmentManager()
.beginTransaction()
@ -1277,6 +1270,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
if (MapFragment.nativeIsEngineCreated())
LocationHelper.INSTANCE.attach(this);
mPlacePageController.onActivityStarted(this);
MwmApplication.backgroundTracker(getActivity()).addListener(this);
}
@Override
@ -1290,6 +1284,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
LocationHelper.INSTANCE.detach(!isFinishing());
RoutingController.get().detach();
mPlacePageController.onActivityStopped(this);
MwmApplication.backgroundTracker(getActivity()).removeListener(this);
}
@CallSuper
@ -2196,6 +2191,44 @@ public class MwmActivity extends BaseMwmFragmentActivity
.show();
}
private boolean tryToShowTips()
{
TipsApi api = TipsApi.requestCurrent(this, getClass());
if (api == TipsApi.STUB)
return false;
api.showTutorial(getActivity());
Statistics.INSTANCE.trackTipsEvent(Statistics.EventName.TIPS_TRICKS_SHOW, api.ordinal());
return true;
}
private boolean tryToShowPromoAfterBooking()
{
NetworkPolicy policy = NetworkPolicy.newInstance(NetworkPolicy.getCurrentNetworkUsageStatus());
PromoAfterBooking promo = Promo.nativeGetPromoAfterBooking(policy);
if (promo == null)
return false;
// Will be implemented in the next pr.
return true;
}
private void tryToShowAdditionalViewOnTop()
{
if (tryToShowPromoAfterBooking())
return;
tryToShowTips();
}
@Override
public void onTransit(boolean foreground)
{
if (foreground)
tryToShowAdditionalViewOnTop();
}
@Override
public void onUseMyPositionAsStart()
{
@ -2231,7 +2264,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
// Do nothing
}
@Override
public void onAlertDialogPositiveClick(int requestCode, int which)
{

View file

@ -172,7 +172,7 @@ public enum TipsApi
if (MwmApplication.from(context).isFirstLaunch())
return STUB;
int index = Framework.nativeGetCurrentTipsApi();
int index = Framework.nativeGetCurrentTipIndex();
TipsApi value = index >= 0 ? values()[index] : STUB;
TipsApi tipsApi = value != STUB && value.isScreenAllowed(requiredScreenClass) ? value
: STUB;