Vykoupené americké technologie a světová dominance aneb Příběh čínského kolosu Lenovo

11. 12. 2019
Doba čtení: 10 minut

Sdílet

Yang Yuanqing, Lenovo
Autor: Jan Sedlák
Yang Yuanqing, Lenovo
Lenovo skoupilo divize od IBM i Googlu, vládne trhu s počítači a po 35 letech chce rozproudit i další byznys. Zejména serverový.

V technologické čtvrti Zhongguancun, která tvoří jeden z hlavních ekonomických pilířů Pekingu, stojí mrakodrap. Je z něj pěkný výhled po okolí a dohlédnout můžete i na starou budovu, jež společně s pozemky, na kterých byl vybudován ikonický výškový objekt, patřila ústavu informačních technologií čínské akademie věd. Právě v oné malé budově v místnosti pro ostrahu v roce 1984 založil Liu Chuanzhi dnes celosvětově známou společnost Lenovo.

Akademie věd před časem Lenovu část pozemků prodala, díky čemuž zde pan Liu mohl sídlo vybudovat. Začínal ale v mnohem skromnějších podmínkách. V Číně tehdy soukromé podnikání ještě nebylo běžné a reformy spojené s otevíráním trhu se teprve začínaly uvádět do chodu. Liu působil jako vědecký pracovník a od akademie se mu podařilo získat počáteční půjčku ve výši 200 tisíc juanů.

Dnes má Lenovo v Pekingu budov hned několik, přičemž nový moderní kampus v Zhongguancun Software Parku byl otevřen teprve loni na podzim. Stojí spíše na okraji mimo rozsáhlé centrum, ovšem v areálu operují další významné čínské technologické společnosti jako Tencent (WeChat a další) nebo Baidu (čínský Google) a je zde přístup k lidem i know-how.

Po 35 letech příprava na novou éru

Hned u vstupu do nového proskleného komplexu, kam se vejde deset tisíc lidí, vedle vlajek Lenova plápolají prapory Čínské lidové republiky. U vchodu je pak možné spatřit velké plastické instalace s logem společnosti a číslovkou 35. Lenovo zrovna slaví své pětatřicáté výročí založení a po různých vzestupech i propadech prohlašuje, že je připraveno na další etapu.

Lenovo
Autor: Jan Sedlák

Lenovo

Firma je aktuálně s více než 25 procenty podílu na trhu největším světovým výrobcem osobních počítačů (před HP Inc. a Dellem). I díky odkupu Motoroly se snaží uchytit na trhu s chytrými telefony, začíná růst v serverech a datových centrech a postupně uváděnými produkty točícími se kolem internetu věcí chce hrát důležitou roli v chytrých domácnostech a podobných oblastech.

Asi hodinu a půl cesty od Pekingu se nachází venkovské, až téměř horské středisko, jehož součástí je moderní a velkolepá konferenční budova. Takových v posledním desetiletí po celé Číně vyrostlo značné množství. „Vstupujete do objektu patřícímu čínské vládě, proto doporučujeme vypnout vaše VPN [umožňující obejít cenzurovaný internet],“ upozorňuje doprovod novinářskou návštěvu.

Na pódium tohoto konferenčního centra právě přichází další důležitá postava, která z Lenova udělala to, čím dnes je. Je jí Yang Yuanqing, současný výkonný ředitel a předseda představenstva celého podniku. „Datacentra a mobily jsou nyní integrální součástí našeho byznysu a aspirujeme na to stát se velkým full stack poskytovatelem,“ říká odhodlaně Yang převážně čínskému publiku.

Na nákupy do Ameriky

Pan Yang se do firmy dostal už v roce 1989 jako čerstvý absolvent pekingské University of Science and Technology. V roce 1993 se stal ředitelem počítačové divize a začal pracovat na postupném růstu. Namísto toho, aby se soustředil na přímý boj s americkými konkurenty, se ze začátku plně orientoval na domácí čínský trh. Během devadesátých a nultých let se tam Lenovo s více než 30 procenty stalo tržní jedničkou a počítače ročně generovaly přes tři miliardy dolarů v tržbách.

Zlom přišel v roce 2001, kdy Liu Chuanzhi odešel z pozice výkonného šéfa a roli předal právě Yangovi. Ten se v roce 2005 rozhodl koupit ztrátovou počítačovou divizi od IBM, za což zaplatil 1,75 miliardy dolarů.

Yang Yuanqing, výkonný ředitel společnosti Lenovo
Autor: Jan Sedlák

Yang Yuanqing, výkonný ředitel společnosti Lenovo

IBM tuto sekci prodala poměrně levně. Z osobních počítačů se stala komodita, která Big Blue v podstatě od začátku devadesátých let nepřinášela mnoho zisku, a naopak divize měla tendence padat do ztrát. Počítače ale stále před prodejem Lenovu generovaly roční tržby blížící se deseti miliardám dolarů a pomáhaly firmě s prodejem dalších produktů.

Big Blue potřebovala před investory vylepšit čísla a zbavit se artiklu, který marži a ziskovost táhl dolů. Zároveň ale nelze říci, že by za snadným prodejem do Číny stál pouze tento ukazatel. IBM by s největší pravděpodobností našla kupce, kteří by za PC divizi dali násobně více, než kolik platilo Lenovo. Tehdejší Hewlett-Packard jen pár let předtím zaplatil za Compaq 25 miliard dolarů a začal si tak dělat ramena na Dell a soutěžit o pozici největšího prodejce PC na světě.

IBM nechtěla dopustit, aby HP posílilo a stalo se ještě větší konkurencí. Ve hře nebyly prodeje ani dalším konkurentům, včetně těch z Japonska. „Chtěli jsme, aby PC sekci koupilo Lenovo, cílem bylo to prodat právě této firmě. Pro IBM tehdy bylo stěžejní získat přístup na formující se největší trh světa a Lenovo vstup do Číny mělo umožnit,“ popisuje jeden ze zdrojů Lupy, blízký tehdejšímu vedení obou podniků.

Spojování západu a východu

Lenovo díky tomu vystřelilo mezi největší výrobce počítačů na světě a získalo k tomu řadu dalších benefitů, jako například dodnes populární značku ThinkPad. „Od IBM jsme získali ThinkPad, pokročilejší výrobní technologii, mezinárodní zdroje a globální obchodní kanály a provozní týmy,“ uvedl tehdy Liu Chuanzhi.

Lenovo
Autor: Jan Sedlák

Lenovo

IBM na oplátku odkoupilo podíl v Lenovu ve výši 19 procent, který se postupně během následujících let snižoval. I díky tomuto podílu se Američané alespoň částečně dostali k rozhodovacím procesům a díky partnerství s Lenovem mohli začít obchodovat na uzavřeném čínském trhu, což doposud v mnoha sektorech vyžaduje účast domácího partnera. Big Blue do té doby drželo pouze joint-venture s firmou Great Wall Technology, která kdysi v Číně byla dvojkou v prodeji počítačů za Lenovem. I tu Lenovo díky akvizici získalo.

Poté nicméně následovalo slabší období. Yang Yuanqing se stáhl z pozice výkonného ředitele, zůstal předsedou představenstva a pozici předal americkým manažerům z IBM. Lenovo nedokázalo navyšovat příjmy, firma stagnovala a na celosvětovém trhu s PC se propadlo ze třetího na hodně vzdálené čtvrté místo. Asi dva roky se řešil střet čínské a americké kultury a vzájemné integrace.

Pan Yang zároveň na pozadí rozjel řadu změn, které vytvořily základ pro transformaci. Z Lenova se postupně začala stávat celosvětová, a nikoliv čínská společnost. Hlavní sídlo už nebylo pouze v Pekingu, ale také v Severní Karolíně. Toho bylo možné dosáhnout díky obchodu s IBM. Yang se sám do Spojených států odstěhoval a do řady pozic začal obsazovat mezinárodní personál.

„Tohle je důležitý fakt. Nejsme příliš vnímaní jako čínská firma. Na rozdíl třeba od Huawei nemáme na pobočkách lidi z Číny, ale lokální týmy. Velká část managementu jsou lidé z celého světa. Výzkum a vývoj realizujeme na řadě míst včetně USA a Japonska a jeho výsledky opět na rozdíl od Huawei agresivně nestahujeme do Číny,“ popisuje pro Lupu jeden z manažerů firmy. I tato sázka na globální image přispěla k tomu, že se Lenovu vyhýbají americké sankce a další obstrukce.

Za servery a mobily

Lenovo také plně začalo využívat výhod Číny. Z PC se sice stávala komodita, firma ale využívala neustále rostoucích výrobních kapacit v Číně či úspor z rozsahu (economy of scale). Díky tomu dokázala držet marže. V roce 2009 se do výkonného vedení vrátil Yang Yuanqing a rozjel strategii, kdy bránil domácí pozici na trhu a zároveň se zaměřil na útok na mezinárodní scéně. Nastala éra, kdy Lenovo investovalo do kvality komponent a chrlilo nové produkty typu Yoga. Mezi roky 2010 až 2014 se roční tržby zdvojnásobily na téměř 38 miliard dolarů.

Lenovo
Autor: Jan Sedlák

Lenovo

Na celém trhu už ale dávno bylo jasné, že i kvůli nástupu smartphonů nebude počítačový byznys tak lukrativní a že bude spíše stagnovat než závratně růst. Dále bylo nutné vyřešit to, jak by společnost mohla nadále růst a při nákupech komponent a výrobě využívat výhodně pozice z pozice velkého odběratele.

Lenovo se tedy po vzoru Dellu či HP rozhodlo vstoupit do dalších oblastí byznysu s informačními technologiemi. V roce 2014 se tak s IBM dohodlo na dalším obchodu a za 2,1 miliardy dolarů získalo divizi x86 serverů. IBM opět na akciových trzích vyrukovala s obhajobou, že prodává nízkomaržový byznys a že se chce soustředit na hardware a služby s vyšší přidanou hodnotou. Ve stejném roce přišel i odkup sekce Motorola Mobility od Googlu. Tento obchod vyšel na 2,9 miliardy dolarů a z Lenova se rázem stala korporace s ročními tržbami přes 50 miliard dolarů.

Propouštění a prodeje majetku

Ani jeden z těchto dealů ovšem v následujících letech nepředstavoval dechberoucí úspěch. Naopak, mobilní i serverová sekce měly tendence vykazovat ztráty a Lenovu se nedařilo nastavit marže a procesy podobně dobře jako v případě počítačů. Dodnes zde probíhají restrukturalizace a firma byla donucena propouštět a prodávat hmotný majetek.

Jak vypadá nová Motorola Razr od Lenova:

U datových center se pomalu situace začíná stabilizovat, i když sekce jako celek stále vykazuje propady. Zástupci Lenova veřejně prohlašují, že se v tomto byznysu chtějí dostat mezi tři největší hráče na světě.

Divize datových center (Data Center Group, DCG) se podle partnerů Lenova začala rozkoukávat i v České republice. Jádro zdejšího týmu tvoří lidé z IBM a novou posilou je také dřívější šéf české pobočky storage firmy NetApp Jan JiskraTento podnik u nás zrušil pobočku a vedle distributora ALEF ji nahradilo právě Lenovo, které mimo jiné s NetAppem disková pole přímo vyvíjí.

Lenovu se i díky tomu v poslední době podařilo vyhrát několik zajímavých veřejných zakázek. Dodává třeba blade servery na Policejní prezidium nebo běžné servery státnímu IT podniku NAKIT. Další projekty jsou před podpisem smluv.

„Lenovo má továrnu v Maďarsku, díky čemuž se dodávky serverů obvykle pohybují mezi dvěma až třemi týdny. Problematické jsou jen SSD disky, ale s těmi je dnes problém obecně,“ popisuje pro Lupu Petr Plodík ze společnosti M Computers, která patří k nejvýznamnějším partnerům Lenova na našem trhu. „Lenovo se u nás v datacentrech konečně rozjelo. Po Nvidii je to pro naši firmu druhý nejúspěšnější výrobce.“

HPC a velké marže

Čínskému podniku se daří zejména v oblasti hyperscale systémů, která jako taková meziročně neustále roste. Právě hyperscale má být hlavním tahounem celé divize. Lenovo má v žebříčku TOP 500 nejrychlejších superpočítačů světa vyšší desítky strojů a je největším dodavatelem. Zde je ale třeba brát na zřetel, že hodně z těchto přístrojů jsou rozsáhlé serverové farmy zejména čínských cloudových a internetových poskytovatelů. Například ale SuperMUC v Mnichově patří mezi vůbec nejvýkonnější HPC v Evropě. Podle informací Lupy je Lenovo rovněž výrazným kandidátem na získání jednoho významného HPC projektu, což ale prozatím nelze veřejně komentovat.

Bezobslužný obchod Lecoo v Pekingu od Lenova:

Lenovo jako celá skupina už devět kvartálů po sobě roste v tržbách, které si kvartálně sáhnou na více než 13,5 miliardy dolarů. Zvedají se mladé sekce, jako jsou software a služby – ty za poslední čtvrtletí vygenerovaly 900 milionů dolarů s růstem téměř 40 procent. „Služby obecně nás hodně zajímají, protože na nich lze na rozdíl od hardwaru dělat vysoké marže,“ uvádí zástupci Lenova v debatách.

Lenovo z tohoto důvodu v roce 2017 zformovalo novou divizi zaměřenou na umělou inteligenci. Ta má základy v Pekingu a Spojených státech a spolupracuje s MIT, Stanfordem, Tsinghua University a dalšími institucemi. Vznikla zde už třeba AI platforma Lenovo Brain a Lenovo po dvou letech patří k třem největším žadatelům o AI patenty v Číně a na devatenácté místo celosvětově.

Čínská společnost výsledky výzkumu v umělé inteligenci integruje do svých standardních produktů (pomocí algoritmů lze například řídit spotřebu v noteboocích) a zároveň vedle toho buduje zcela nové portfolio. Do budoucna lze očekávat několik prvků chytré domácnosti, které jsou prozatím primárně uváděny na čínském trhu. V Číně lze také navštívit vlajkový obchod bez obsluhy, kde se nakupující prokazují pomocí skenu obličeje a o kterém jsme na Lupě přinesli reportáž.

Počítačová divize se mezitím vrátila ke slušnému růstu a podle IDC i Gartneru roste Lenovo rychleji než trh. Postupně se rovněž daří navyšovat marže. „Je to tím, že jsme se více začali zaměřovat na high-end výrobky, jako jsou počítače pro hráče, které prodáváme pod jednotnou značkou Lenovo Legion,“ vysvětluje pro Lupu ředitel firmy pro střední a jihovýchodní Evropu Ivan Bozev.

CIF25 SE debata

Velkou otázkou je, co se Lenovu podaří vymyslet v rámci vysoce konkurenčního trhu s chytrými telefony. Zde v globálním měřítku v podstatě skoro neexistuje a drží podíl kolem tří procent. Značky Lenovo a Motorola navíc nejsou k dispozici na řadě trhů a z firmy prozatím nejdou jasné zprávy o tom, že by nějaké rozsáhlé aktivity měly tuto situaci změnit. Lenovo to nyní zkouší s reinkarnací legendárního „véčka“ Motorola Razr, které dostalo ohebný displej, ale také omezenou dostupnost a vysokou cenu.

Lenovo v České republice operuje skrze firmy Lenovo Technology B.V. organizační složka a Lenovo Global Technology Czech Republic. První zmiňovaná prozatím předložila finanční výsledky pouze za rok 2017. Tržby dosáhly na více než 191 milionů korun. Druhý podnik pak v roce 2018 vykázal tržby přes 46 milionů.

Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).
'; document.getElementById('outstream-iframe').onload = function () { setupIframe(); } replayScreen = document.getElementById('iinfoOutstreamReplay'); iinfoOutstreamPosition = document.getElementById('iinfoOutstreamPosition'); outstreamContainer = document.getElementsByClassName('outstream-container')[0]; setupReplayScreen(); } function setupIframe() { outstreamDocument = document.getElementById('outstream-iframe').contentWindow.document; let el = outstreamDocument.createElement('style'); outstreamDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:-5px;right:25px}"; videoContent = outstreamDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; if ( location.href.indexOf('rejstriky.finance.cz') !== -1 || location.href.indexOf('finance-rejstrik') !== -1 || location.href.indexOf('firmy.euro.cz') !== -1 || location.href.indexOf('euro-rejstrik') !== -1 || location.href.indexOf('/rejstrik/') !== -1 || location.href.indexOf('/rejstrik-firem/') !== -1) { outstreamDirectPlayed = true; soundAllowed = true; iinfoVastUrlIndex = 0; } if (!outstreamDirectPlayed) { console.log('OUTSTREAM direct'); setUpIMA(true); } else { if (soundAllowed) { const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('OUTSTREAM sound allowed'); setUpIMA(false); }).catch(function () { console.log('OUTSTREAM sound forbidden'); renderBanner(); }); } } else { renderBanner(); } } } function getWrapper() { let articleWrapper = document.querySelector('.rs-outstream-placeholder'); // Outstream Placeholder from RedSys manipulation if (articleWrapper && articleWrapper.style.display !== 'block') { articleWrapper.innerHTML = ""; articleWrapper.style.display = 'block'; } // Don't render OutStream on homepages if (articleWrapper === null) { if (document.querySelector('body.p-index')) { return null; } } if (articleWrapper === null) { articleWrapper = document.getElementById('iinfo-outstream'); } if (articleWrapper === null) { articleWrapper = document.querySelector('.layout-main__content .detail__article p:nth-of-type(6)'); } if (articleWrapper === null) { // Euro, Autobible, Zdravi articleWrapper = document.querySelector('.o-article .o-article__text p:nth-of-type(6)'); } if (articleWrapper === null) { articleWrapper = document.getElementById('sidebar'); } if (!articleWrapper) { console.error("Outstream wrapper of article was not found."); } return articleWrapper; } function setupDimensions() { outstreamWidth = Math.min(iinfoOutstreamPosition.offsetWidth, 480); outstreamHeight = Math.min(iinfoOutstreamPosition.offsetHeight, 320); } /** * Sets up IMA ad display container, ads loader, and makes an ad request. */ function setUpIMA(direct) { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); if (direct) { adsRequest.adTagUrl = directVast; console.log('Outstream DIRECT CAMPAING advert: ' + directVast); videoContent.muted = true; videoContent.volume = 0; outstreamDirectPlayed = true; } else { adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Outstream advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; } // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = outstreamWidth; // adsRequest.linearAdSlotHeight = outstreamHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function setupReplayScreen() { replayScreen.addEventListener('click', function () { iinfoOutstreamPosition.remove(); iinfoVastUrlIndex = 0; outstreamInit(); }); } /** * Sets the 'adContainer' div as the IMA ad display container. */ function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. outstreamDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( outstreamDocument.getElementById('adContainer'), videoContent); } function unmuteAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } } /** * Loads the video content and initializes IMA ad playback. */ function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(outstreamWidth, outstreamHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } /** * Handles the ad manager loading and sets ad event listeners. * @param { !google.ima.AdsManagerLoadedEvent } adsManagerLoadedEvent */ function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } /** * Handles actions taken in response to ad events. * @param { !google.ima.AdEvent } adEvent */ function onAdEvent(adEvent) { // Retrieve the ad from the event. Some events (for example, // ALL_ADS_COMPLETED) don't have ad object associated. const ad = adEvent.getAd(); console.log('Outstream event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: // This is the first event sent for an ad - it is possible to // determine whether the ad is a video ad or an overlay. if (!ad.isLinear()) { // Position AdDisplayContainer correctly for overlay. // Use ad.width and ad.height. videoContent.play(); } outstreamDocument.getElementById('adContainer').style.width = '100%'; outstreamDocument.getElementById('adContainer').style.maxWidth = '640px'; outstreamDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); // This event indicates the ad has started - the video player // can adjust the UI, for example display a pause button and // remaining time. if (ad.isLinear()) { // For a linear ad, a timer can be started to poll for // the remaining time. intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } outstreamDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (outstreamLastError === 303) { if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } } break; case google.ima.AdEvent.Type.COMPLETE: // This event indicates the ad has finished - the video player // can perform appropriate UI actions, such as removing the timer for // remaining time detection. if (ad.isLinear()) { clearInterval(intervalTimer); } if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } break; } } /** * Handles ad errors. * @param { !google.ima.AdErrorEvent } adErrorEvent */ function onAdError(adErrorEvent) { // Handle the error logging. console.log(adErrorEvent.getError()); outstreamLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { renderBanner(); } } function renderBanner() { if (isBanner) { console.log('Outstream: Render Banner'); iinfoOutstreamPosition.innerHTML = ""; iinfoOutstreamPosition.style.height = "330px"; iinfoOutstreamPosition.appendChild(bannerDiv); } else { console.log('Outstream: Banner is not set'); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoOutstreamPosition.remove(); outstreamInit(); } else { return false; } adVolume = 1; return true; } /** * Pauses video content and sets up ad UI. */ function onContentPauseRequested() { videoContent.pause(); // This function is where you should setup UI for showing ads (for example, // display ad timer countdown, disable seeking and more.) // setupUIForAds(); } /** * Resumes video content and removes ad UI. */ function onContentResumeRequested() { videoContent.play(); // This function is where you should ensure that your UI is ready // to play content. It is the responsibility of the Publisher to // implement this function when necessary. // setupUIForContent(); } function onActiveView() { if (outstreamContainer) { const containerOffset = outstreamContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (outstreamPaused) { adsManager.resume(); outstreamPaused = false; } return true; } else { if (!outstreamPaused) { adsManager.pause(); outstreamPaused = true; } } } return false; } let outstreamInitInterval; if (typeof cpexPackage !== "undefined") { outstreamInitInterval = setInterval(tryToInitializeOutstream, 100); } else { const wrapper = getWrapper(); if (wrapper) { let outstreamInitialized = false; window.addEventListener('scroll', () => { if (!outstreamInitialized) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { outstreamInit(); outstreamInitialized = true; } } }); } } function tryToInitializeOutstream() { const wrapper = getWrapper(); if (wrapper) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { if (cpexPackage.adserver.displayed) { clearInterval(outstreamInitInterval); outstreamInit(); } } } else { clearInterval(outstreamInitInterval); } } }
OSZAR »