IDC: Trh tabletů v EMEA rostl i na konci roku, pomohla poptávka vzdělávacích institucí

16. 2. 2021
Doba čtení: 2 minuty

Sdílet

Autor: © Scanrail – Fotolia.com
Prodeje v CEE ve čtvrtém kvartálu 2020 vyrostly bezmála o třetinu, v celém regionu EMEA pak o 11,7 % na celkových 14,6 milionu kusů. Spotřebitelé a organizace nejčastěji nakupují tablety kvůli vzdělávání.

Společnost IDC ve své pravidelné zprávě uvádí, že trh tabletů v regionu EMEA ve čtvrtém kvartálu 2020 vyrostl o 11,7 % na 14,6 milionu kusů. Za pokračujícím růstem stála zejména neutuchající poptávka způsobená pandemií covidu-19.

Prodej zařízení určených pro spotřebitele meziročně poskočil o 14,2  % na 11,3 milionu jednotek, přičemž vzdělávací sektor podle analytiků odebral historicky nejvíce tabletů – 1,1 milionu kusů.

Trh tabletů na konci roku zaznamenal růst ve všech subregionech – poptávka ve střední a východní Evropě vyrostla o silných 32,3 % a v regionu MEA o 10,3 %. Nejpomaleji rostly prodeje západní Evropě, o 7,7 %.

V zemích střední a východní Evropy a MEA zůstali spotřebitelé a vzdělávací organizace klíčovým segmentem i v posledním kvartálu a pomohli tak ukončit rok 2020 s růstem,“ komentuje Nikolina Jurišičová z IDC.

Mimořádně úspěšný kvartál pro Lenovo

Analytička dodává, že nedostatek notebooků či jejich rostoucí ceny nutí spotřebitele, aby se více zaměřovali na tablety, a to zejména proto, že trend práce a především vzdělávání z domova zatím neutuchá.

Z hlediska jednotlivých výrobců IDC uvádí, že jedničkou na trhu tabletů v EMEA je nadále Samsung, jenž na konci roku zvýšil prodeje o 26,4 % na bezmála 4,1 milionu kusů, následovaný Applem jenž vykázal růst o 17,1 % na 3,6 milionu tabletů.

Lenovo na třetí příčce i nadále těží ze svého portfolia cenově dostupných zařízení, o které projevují zájem organizace v soukromém i veřejném sektoru. Výrobce ve sledovaném období posílil o silných 152,8 % a meziročně zvýšil svůj tržní podíl o deset procentních bodů.

Čtvrté Huawei zaznamenalo 20,3% propad prodejů na 1,1 milionu tabletů, na pátou příčku si polepšil Microsoft, jenž na konci roku vyrostl o 21,8 % na 461 tisíc kusů.

Tabulka – Výsledky trhu tabletů v EMEA v 4Q20 (miliony kusů)

Výrobce

Prodej 4Q20

Podíl 4Q20 

Prodej 4Q19 

Podíl 4Q19 

Meziroční změna

1. Samsung

4,092

28,1 %

3,239

24,8 %

26,4 %

2. Apple

3,588

24,6 %

3,064

23,5 %

17,1 %

3. Lenovo

2,671

18,3 %

1,056

8,1 %

152,8 %

4. Huawei

1,124

7,7 %

1,411

10,8 %

-20,3 %

5. Microsoft

0,461

3,2 %

0,379

2,9 %

21,8 %

ostatní

2,629

18,1 %

3,896

29,9 %

-32,5 %

Celkem

14,566

100,0 %

13,045

100,0 %

11,7 %

Zdroj: IDC

Čtěte dále

České organizace čelí o 44 % více kyberútokům než vloni
České organizace čelí o 44 % více kyberútokům než vloni
Tři hlavní důvody, proč malé a středně velké firmy potřebují ke správě sítí umělou inteligenci
Tři hlavní důvody, proč malé a středně velké firmy potřebují ke správě sítí umělou inteligenci
Čechům na dark web nejčastěji unikají hesla jako „123456“, „heslo“ nebo „tomasek“
Čechům na dark web nejčastěji unikají hesla jako „123456“, „heslo“ nebo „tomasek“
3D tisk – jaké jsou náklady na 3D tisk?
3D tisk – jaké jsou náklady na 3D tisk?
Tomáš Břečka je novým country managerem iStyle
Tomáš Břečka je novým country managerem iStyle
AMD kupuje Nod.ai, posílí možnosti open source softwaru pro umělou inteligenci
AMD kupuje Nod.ai, posílí možnosti open source softwaru pro umělou inteligenci
'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.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:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { 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(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll 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 = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } 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(); } 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(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }
OSZAR »