diff --git a/android/jni/com/mapswithme/maps/metrics/UserActionsLogger.cpp b/android/jni/com/mapswithme/maps/metrics/UserActionsLogger.cpp index 52426a5d36..a274ad6c26 100644 --- a/android/jni/com/mapswithme/maps/metrics/UserActionsLogger.cpp +++ b/android/jni/com/mapswithme/maps/metrics/UserActionsLogger.cpp @@ -99,4 +99,11 @@ Java_com_mapswithme_maps_metrics_UserActionsLogger_nativeBookingDetailsClicked(J { RegisterEventIfPossible(eye::MapObject::Event::Type::BookingDetails); } + +JNIEXPORT void JNICALL +Java_com_mapswithme_maps_metrics_UserActionsLogger_nativePromoAfterBookingShown(JNIEnv * env, + jclass, jstring id) +{ + eye::Eye::Event::PromoAfterBookingShown(jni::ToNativeString(env, id)); +} } diff --git a/android/jni/com/mapswithme/maps/promo/CityGallery.cpp b/android/jni/com/mapswithme/maps/promo/CityGallery.cpp index 8e388121b9..19b93fcf2b 100644 --- a/android/jni/com/mapswithme/maps/promo/CityGallery.cpp +++ b/android/jni/com/mapswithme/maps/promo/CityGallery.cpp @@ -62,8 +62,9 @@ void PrepareClassRefs(JNIEnv * env) "(Lcom/mapswithme/maps/promo/PromoCityGallery;)V"); g_onErrorReceived = jni::GetMethodID(env, promoInstance, "onErrorReceived", "()V"); g_afterBooking = jni::GetGlobalClassRef(env, "com/mapswithme/maps/promo/PromoAfterBooking"); - g_afterBookingConstructor = jni::GetConstructorID(env, g_afterBooking, - "(Ljava/lang/String;Ljava/lang/String;)V"); + g_afterBookingConstructor = + jni::GetConstructorID(env, g_afterBooking, + "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); } void OnSuccess(uint64_t requestId, promo::CityGallery const & gallery) @@ -153,9 +154,11 @@ Java_com_mapswithme_maps_promo_Promo_nativeGetPromoAfterBooking(JNIEnv * env, jc if (result.IsEmpty()) return nullptr; + auto const id = jni::ToJavaString(env, result.m_id); auto const promoUrl = jni::ToJavaString(env, result.m_promoUrl); auto const pictureUrl = jni::ToJavaString(env, result.m_pictureUrl); - return env->NewObject(g_afterBooking, g_afterBookingConstructor, promoUrl, pictureUrl); + + return env->NewObject(g_afterBooking, g_afterBookingConstructor, id, promoUrl, pictureUrl); } } // extern "C" diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index 890db3b1d0..4afa151739 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -72,6 +72,7 @@ import com.mapswithme.maps.maplayer.subway.SubwayManager; import com.mapswithme.maps.maplayer.traffic.OnTrafficLayerToggleListener; import com.mapswithme.maps.maplayer.traffic.TrafficManager; import com.mapswithme.maps.maplayer.traffic.widget.TrafficButton; +import com.mapswithme.maps.metrics.UserActionsLogger; import com.mapswithme.maps.news.IntroductionDialogFragment; import com.mapswithme.maps.news.IntroductionScreenFactory; import com.mapswithme.maps.promo.Promo; @@ -2224,6 +2225,8 @@ public class MwmActivity extends BaseMwmFragmentActivity final DialogFragment fragment = (DialogFragment) Fragment.instantiate(this, dialogName, args); fragment.show(getSupportFragmentManager(), dialogName); + UserActionsLogger.logPromoAfterBookingShown(promo.getId()); + return true; } diff --git a/android/src/com/mapswithme/maps/metrics/UserActionsLogger.java b/android/src/com/mapswithme/maps/metrics/UserActionsLogger.java index 5f4a50031a..ce8fac5725 100644 --- a/android/src/com/mapswithme/maps/metrics/UserActionsLogger.java +++ b/android/src/com/mapswithme/maps/metrics/UserActionsLogger.java @@ -65,6 +65,11 @@ public class UserActionsLogger nativeBookingDetailsClicked(); } + public static void logPromoAfterBookingShown(@NonNull String id) + { + nativePromoAfterBookingShown(id); + } + private static native void nativeTipClicked(int type, int event); private static native void nativeBookingFilterUsed(); private static native void nativeBookmarksCatalogShown(); @@ -77,4 +82,5 @@ public class UserActionsLogger private static native void nativeBookingMoreClicked(); private static native void nativeBookingReviewsClicked(); private static native void nativeBookingDetailsClicked(); + private static native void nativePromoAfterBookingShown(@NonNull String id); } diff --git a/android/src/com/mapswithme/maps/promo/PromoAfterBooking.java b/android/src/com/mapswithme/maps/promo/PromoAfterBooking.java index 54d02808cb..3d71b15f78 100644 --- a/android/src/com/mapswithme/maps/promo/PromoAfterBooking.java +++ b/android/src/com/mapswithme/maps/promo/PromoAfterBooking.java @@ -4,6 +4,8 @@ import android.support.annotation.NonNull; public class PromoAfterBooking { + @NonNull + private String mId; @NonNull private String mGuidesUrl; @NonNull @@ -11,12 +13,19 @@ public class PromoAfterBooking // Called from JNI. @SuppressWarnings("unused") - public PromoAfterBooking(@NonNull String guidesUrl, @NonNull String imageUrl) + public PromoAfterBooking(@NonNull String id, @NonNull String guidesUrl, @NonNull String imageUrl) { + mId = id; mGuidesUrl = guidesUrl; mImageUrl = imageUrl; } + @NonNull + public String getId() + { + return mId; + } + @NonNull public String getGuidesUrl() { diff --git a/partners_api/promo_api.cpp b/partners_api/promo_api.cpp index ec34ad6e84..f45ca19399 100644 --- a/partners_api/promo_api.cpp +++ b/partners_api/promo_api.cpp @@ -209,9 +209,9 @@ AfterBooking Api::GetAfterBooking(std::string const & lang) const auto const promoId = LoadPromoIdForBooking(eyeInfo); if (!NeedToShowImpl(promoId, eyeInfo)) - return {"", ""}; + return {}; - return {GetCityCatalogueUrl(m_baseUrl, promoId), + return {promoId, GetCityCatalogueUrl(m_baseUrl, promoId), GetPictureUrl(m_basePicturesUrl, promoId)}; } diff --git a/partners_api/promo_api.hpp b/partners_api/promo_api.hpp index 9dca039479..6cdc9532f5 100644 --- a/partners_api/promo_api.hpp +++ b/partners_api/promo_api.hpp @@ -46,11 +46,14 @@ struct CityGallery struct AfterBooking { + AfterBooking() = default; + bool IsEmpty() const { - return m_promoUrl.empty() || m_pictureUrl.empty(); + return m_id.empty() || m_promoUrl.empty() || m_pictureUrl.empty(); } + std::string m_id; std::string m_promoUrl; std::string m_pictureUrl; };