diff options
author | Dmitry Donskoy <donskdmitry@mail.ru> | 2018-09-25 18:43:26 +0300 |
---|---|---|
committer | Aleksandr Zatsepin <alexzatsepin@users.noreply.github.com> | 2018-09-27 15:40:37 +0300 |
commit | 55b9ffe8d9c524519846b96746734127afc2e6fd (patch) | |
tree | 7e358507b0c1442a08fdeee459463c860d111cc3 | |
parent | 9a6509614971ad8501cf7c2deb6c2d446aa561df (diff) |
[android] Supported enabled flag for ad provider, modified container item
-rw-r--r-- | android/jni/com/mapswithme/maps/Framework.cpp | 7 | ||||
-rw-r--r-- | android/src/com/mapswithme/maps/Framework.java | 6 | ||||
-rw-r--r-- | android/src/com/mapswithme/maps/analytics/EventLoggerAggregator.java | 1 | ||||
-rw-r--r-- | android/src/com/mapswithme/maps/content/MyTargetEventLogger.java | 16 | ||||
-rw-r--r-- | map/framework.cpp | 4 | ||||
-rw-r--r-- | map/framework.hpp | 2 | ||||
-rw-r--r-- | partners_api/ads_engine.cpp | 61 | ||||
-rw-r--r-- | partners_api/ads_engine.hpp | 10 |
8 files changed, 36 insertions, 71 deletions
diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index e3a6b906cd..973687bc7b 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -1135,12 +1135,13 @@ Java_com_mapswithme_maps_Framework_nativeGetRouteFollowingInfo(JNIEnv * env, jcl return result; } -JNIEXPORT void JNICALL Java_com_mapswithme_maps_Framework_nativeAddAdProvider(JNIEnv * env, jclass, - jint type, jint place) +JNIEXPORT void JNICALL Java_com_mapswithme_maps_Framework_nativeDisableAdProvider(JNIEnv * env, + jclass, jint type, + jint place) { auto const & bannerType = static_cast<ads::Banner::Type>(type); auto const & bannerPlace = static_cast<ads::Banner::Place>(place); - frm()->AddAdProvider(bannerType, bannerPlace); + frm()->DisableAdProvider(bannerType, bannerPlace); } JNIEXPORT jintArray JNICALL diff --git a/android/src/com/mapswithme/maps/Framework.java b/android/src/com/mapswithme/maps/Framework.java index 5408bb9030..355ef6b80b 100644 --- a/android/src/com/mapswithme/maps/Framework.java +++ b/android/src/com/mapswithme/maps/Framework.java @@ -224,9 +224,9 @@ public class Framework return FilterUtils.RATING_ANY; } - public static void addAdProvider(@NonNull Banner.Type type) + public static void setAdProviderDisabled(@NonNull Banner.Type type) { - nativeAddAdProvider(type.ordinal(), Banner.Place.DEFAULT.ordinal()); + nativeDisableAdProvider(type.ordinal(), Banner.Place.DEFAULT.ordinal()); } public static native void nativeShowTrackRect(long track); @@ -489,5 +489,5 @@ public class Framework private static native void nativeTipsShown(int tipType, int event); - private static native void nativeAddAdProvider(int provider, int bannerPlace); + private static native void nativeDisableAdProvider(int provider, int bannerPlace); } diff --git a/android/src/com/mapswithme/maps/analytics/EventLoggerAggregator.java b/android/src/com/mapswithme/maps/analytics/EventLoggerAggregator.java index d24243a691..d93523f901 100644 --- a/android/src/com/mapswithme/maps/analytics/EventLoggerAggregator.java +++ b/android/src/com/mapswithme/maps/analytics/EventLoggerAggregator.java @@ -20,7 +20,6 @@ class EventLoggerAggregator extends ContextDependentEventLogger mLoggers.put(LibnotifyEventLogger.class, new LibnotifyEventLogger(application)); mLoggers.put(PushWooshEventLogger.class, new PushWooshEventLogger(application)); mLoggers.put(MyTrackerEventLogger.class, new MyTrackerEventLogger(application)); - mLoggers.put(MyTargetEventLogger.class, new MyTargetEventLogger(application)); mLoggers.put(FlurryEventLogger.class, new FlurryEventLogger(application)); } diff --git a/android/src/com/mapswithme/maps/content/MyTargetEventLogger.java b/android/src/com/mapswithme/maps/content/MyTargetEventLogger.java deleted file mode 100644 index 63f1962971..0000000000 --- a/android/src/com/mapswithme/maps/content/MyTargetEventLogger.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.mapswithme.maps.content; - -import android.app.Application; -import android.support.annotation.NonNull; - -import com.mapswithme.maps.Framework; -import com.mapswithme.maps.ads.Banner; - -class MyTargetEventLogger extends DefaultEventLogger -{ - MyTargetEventLogger(@NonNull Application application) - { - super(application); - Framework.addAdProvider(Banner.Type.TYPE_RB); - } -} diff --git a/map/framework.cpp b/map/framework.cpp index f98a8c4045..68642a1b97 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -3336,10 +3336,10 @@ ads::Engine const & Framework::GetAdsEngine() const return *m_adsEngine; } -void Framework::AddAdProvider(ads::Banner::Type const type, ads::Banner::Place const place) +void Framework::DisableAdProvider(ads::Banner::Type const type, ads::Banner::Place const place) { ASSERT(m_adsEngine, ()); - m_adsEngine.get()->AddAdProvider(type, place); + m_adsEngine.get()->DisableAdProvider(type, place); } void Framework::RunUITask(function<void()> fn) diff --git a/map/framework.hpp b/map/framework.hpp index e27796189f..d6c27944bb 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -352,7 +352,7 @@ public: void VisualizeCityBoundariesInRect(m2::RectD const & rect); ads::Engine const & GetAdsEngine() const; - void AddAdProvider(ads::Banner::Type const type, ads::Banner::Place const place); + void DisableAdProvider(ads::Banner::Type const type, ads::Banner::Place const place); public: // SearchAPI::Delegate overrides: diff --git a/partners_api/ads_engine.cpp b/partners_api/ads_engine.cpp index e5e9f63b95..73bc25f2f3 100644 --- a/partners_api/ads_engine.cpp +++ b/partners_api/ads_engine.cpp @@ -14,6 +14,7 @@ namespace ads Engine::Engine() { // The banner systems are placed by priority. First has a top priority. + m_banners.emplace_back(Banner::Type::RB, std::make_unique<Rb>()); m_banners.emplace_back(Banner::Type::Mopub, std::make_unique<Mopub>()); m_searchBanners.emplace_back(Banner::Type::Facebook, std::make_unique<Facebook>()); @@ -27,7 +28,7 @@ bool Engine::HasBanner(feature::TypesHolder const & types, { for (auto const & item : m_banners) { - if (item.m_container->HasBanner(types, countryId, userLanguage)) + if (item.m_enabled && item.m_container->HasBanner(types, countryId, userLanguage)) return true; } } @@ -43,14 +44,17 @@ std::vector<Banner> Engine::GetBanners(feature::TypesHolder const & types, for (auto const & item : m_banners) { - for (auto const & countryId : countryIds) + if (item.m_enabled) { - auto const bannerId = item.m_container->GetBannerId(types, countryId, userLanguage); - // We need to add banner for every banner system just once. - if (!bannerId.empty()) + for (auto const & countryId : countryIds) { - result.emplace_back(item.m_type, bannerId); - break; + auto const bannerId = item.m_container->GetBannerId(types, countryId, userLanguage); + // We need to add banner for every banner system just once. + if (!bannerId.empty()) + { + result.emplace_back(item.m_type, bannerId); + break; + } } } } @@ -62,7 +66,7 @@ bool Engine::HasSearchBanner() const { for (auto const & item : m_searchBanners) { - if (item.m_container->HasSearchBanner()) + if (item.m_enabled && item.m_container->HasSearchBanner()) return true; } @@ -84,46 +88,23 @@ std::vector<Banner> Engine::GetSearchBanners() const return result; } -void Engine::RemoveAdProvider(Banner::Type const type, Banner::Place const place) +void Engine::DisableAdProvider(Banner::Type const type, Banner::Place const place) { - RemoveAdProviderInternal(place == Banner::Place::Search ? m_searchBanners : m_banners, type); + SetAdProviderEnabled(place == Banner::Place::Search ? m_searchBanners : m_banners, type, false); } -void Engine::AddAdProvider(Banner::Type const type, Banner::Place const place) +void Engine::EnableAdProvider(Banner::Type const type, Banner::Place place) { - AddAdProviderInternal(place == Banner::Place::Search ? m_searchBanners : m_banners, type); + SetAdProviderEnabled(place == Banner::Place::Search ? m_searchBanners : m_banners, type, true); } -void Engine::RemoveAdProviderInternal(std::vector<Engine::ContainerItem> & banners, - Banner::Type const type) +void Engine::SetAdProviderEnabled(std::vector<Engine::ContainerItem> & banners, + Banner::Type const type, bool const isEnabled) { - banners.erase(std::remove_if(banners.begin(), banners.end(), - [type](ContainerItem const & each) { return each.m_type == type; }), - banners.end()); -} - -void Engine::AddAdProviderInternal(std::vector<ContainerItem> & banners, Banner::Type const type) -{ - auto const hasItemIterator = - std::find_if(std::begin(banners), std::end(banners), - [type](ContainerItem const & each) { return each.m_type == type; }); - - if (hasItemIterator != std::end(banners)) - return; - - switch (type) + for (auto & item : banners) { - case Banner::Type::Facebook: - banners.emplace_back(Banner::Type::Facebook, std::make_unique<Facebook>()); - break; - case Banner::Type::RB: banners.emplace_back(Banner::Type::RB, std::make_unique<Rb>()); break; - case Banner::Type::Mopub: - banners.emplace_back(Banner::Type::Mopub, std::make_unique<Mopub>()); - break; - case Banner::Type::Google: - banners.emplace_back(Banner::Type::None, std::make_unique<Google>()); - break; - case Banner::Type::None: break; + if (item.m_type == type) + item.m_enabled = isEnabled; } } } // namespace ads diff --git a/partners_api/ads_engine.hpp b/partners_api/ads_engine.hpp index 3cb41ba62b..0f7f3f4623 100644 --- a/partners_api/ads_engine.hpp +++ b/partners_api/ads_engine.hpp @@ -25,8 +25,8 @@ public: std::vector<Banner> GetBanners(feature::TypesHolder const & types, storage::TCountriesVec const & countryIds, std::string const & userLanguage) const; - void AddAdProvider(Banner::Type const type, Banner::Place bannerPlace); - void RemoveAdProvider(Banner::Type const type, Banner::Place const place); + void EnableAdProvider(Banner::Type const type, Banner::Place bannerPlace); + void DisableAdProvider(Banner::Type const type, Banner::Place const place); bool HasSearchBanner() const; std::vector<Banner> GetSearchBanners() const; @@ -39,13 +39,13 @@ private: : m_type(type), m_container(std::move(container)) { } - + bool m_enabled = true; Banner::Type m_type; ContainerPtr m_container; }; - void RemoveAdProviderInternal(std::vector<ContainerItem> & banners, Banner::Type const type); - void AddAdProviderInternal(std::vector<ContainerItem> & banners, Banner::Type const type); + void SetAdProviderEnabled(std::vector<ContainerItem> & banners, Banner::Type const type, + bool const isEnabled); std::vector<ContainerItem> m_banners; std::vector<ContainerItem> m_searchBanners; |