From 783695f93963830e0df05ddc25146dc1be263caa Mon Sep 17 00:00:00 2001 From: Arsentiy Milchakov Date: Thu, 4 Jul 2019 20:30:39 +0300 Subject: [PATCH] [android][promo][tips] show promo after booking when application turns to the foreground + show tips fix --- android/jni/com/mapswithme/maps/Framework.cpp | 2 +- .../src/com/mapswithme/maps/Framework.java | 2 +- .../src/com/mapswithme/maps/MwmActivity.java | 74 +++++++++++++------ .../src/com/mapswithme/maps/tips/TipsApi.java | 2 +- 4 files changed, 56 insertions(+), 24 deletions(-) diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index 6124b2c9ef..b5d5dd68bf 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -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(); diff --git a/android/src/com/mapswithme/maps/Framework.java b/android/src/com/mapswithme/maps/Framework.java index 9b3b0c7447..b2e4f1ff93 100644 --- a/android/src/com/mapswithme/maps/Framework.java +++ b/android/src/com/mapswithme/maps/Framework.java @@ -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); diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index d7de778c0e..5bfdefeeeb 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -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) { diff --git a/android/src/com/mapswithme/maps/tips/TipsApi.java b/android/src/com/mapswithme/maps/tips/TipsApi.java index cf91152cf8..257be12506 100644 --- a/android/src/com/mapswithme/maps/tips/TipsApi.java +++ b/android/src/com/mapswithme/maps/tips/TipsApi.java @@ -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;