Canalys: Globální trh telefonů v 3Q oslabil, Apple se vyšvihl na druhé místo

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

Sdílet

Autor: © Romolo Tavani - Fotolia.com
Nejúspěšnější kvartál má za sebou Apple, v zelených číslech skončily ještě Oppo a Vivo. Většina velkých i malých vendorů se nicméně podle analytiků potýká s problémy.

Společnost Canalys informuje, že celosvětový nedostatek čipů způsobil ve třetím čtvrtletí letošního roku 6% pokles dodávek chytrých telefonů. Celkové dodávky se vyšplhaly na 325,5 milionu kusů.

Analytici poukazují zejména na oslnivý výkon Applu, jenž díky úspěšnému uvedení telefonů řady iPhone 13 meziročně vyrostl o 14 % na necelých 50 milionů dodaných kusů. Výrobce by podle Canalysu navíc mohl v příštím čtvrtletí sesadit lídra trhu.

Situace mezi Androidy byla méně růžová – dodávky klesly o 9 %,“ říká Ben Stanton z Canalysu. Výrobci navíc vykázali smíšené výsledky. Například světová jednička Samsung se potýká s dostupností zařízení řady Galaxy A; i proto ve 3Q oslabil o 13 %.

V červených číslech skončilo i třetí Xiaomi, naopak další dvojice čínských výrobců Oppo Vivo zaznamenala růst, a to zejména díky oživení na jejich primárním jihoasijském trhu. Obecně ale podle Canalysu platí, že se výrobci mimo top 10 trápí.

Kdo vyplní mezeru po Galaxy Note?

Nedostatky komponentů se nyní projevují i v nejvyšší cenové kategorii, letos například nebude uveden nový Samsung Galaxy Note,“ pokračuje Stanton. Samsung sice dodal více než 3 miliony skládacích mobilů, mezeru ale zaplnit nedokázal.

Analytická společnost poukazuje na to, že kolem nově vzniklého vakua krouží další výrobci, kteří by zařízeními jako Google Pixel 6 Pro či Xioami 11T Pro chtěli oslovit uživatele Galaxy Note, kteří se rozhlížejí po upgradu.

Vzhledem k pokračující čipové krizi se podle Canalysu největší výzva neukrývá v tom, kolik high-endových zařízení kdo dokáže vyrobit, ale spíše v tom, komu se podaří s telekomunikačními operátory vyjednat nejlepší prodejní podmínky.

Tabulka – Vývoj globální trhu chytrých telefonů v 3Q21 (miliony kusů)

Výrobce

Prodej 3Q21

Podíl 3Q21

Prodej 3Q20

Podíl 3Q20

Meziroč. změna

1. Samsung 

69,4

21 %

80,2

23 %

-13 %

2. Apple

49,2

15 %

43,1

12 %

14 %

3. Xiaomi

44,0

14 %

47,1

14 %

-7 %

4. Oppo

36,7

11 %

31,1

9 %

18 %

5. Vivo

34,2

11 %

31,8

9 %

8 %

ostatní

91,9

28 %

114,6

33 %

 -20 % 

Celkem

325,5

100 %

348,0

100 %

-6 %

Zdroj: Canalys

Graf – Vývoj globální trhu chytrých telefonů, 1Q19-3Q21

Graf – Vývoj globální trhu chytrých telefonů, 1Q19-3Q21

Zdroj: Canalys

Čtěte dále

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
Photon Go: Chytrý přenosný projektor s ultra krátkou projekční vzdáleností od Optomy
Photon Go: Chytrý přenosný projektor s ultra krátkou projekční vzdáleností od Optomy
Objem dat skokově roste, zvyšuje rizika deepfake útoků
Objem dat skokově roste, zvyšuje rizika deepfake útoků
3D tisk – jaké jsou náklady na 3D tisk?
3D tisk – jaké jsou náklady na 3D tisk?
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
Arrow posiluje nabídku úložišť, podepsalo smlouvu s Object First
Arrow posiluje nabídku úložišť, podepsalo smlouvu s Object First
'; 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 »