IDC: Huawei předběhlo Apple na trhu smartphonů ve 2. čtvrtletí

1. 8. 2018
Doba čtení: 2 minuty

Sdílet

Autor: ChannelWorld
Zpráva analytické společnosti IDC ukazuje změny v pořadí top hráčů na trhu smartphonů. Huawei se posouvá na druhou příčku, přičemž celkový trh klesal o 1,8 %.

Huawei získalo druhou příčku na celosvětovém trhu smartphonů s podílem 15,8 %. Vyplývá to z předběžných výsledků za druhé čtvrtletí roku 2018 od analytické společnosti IDC.

Podle analytiků jde o první kvartál od 2. čtvrtletí 2010, kdy Apple neudržel druhou pozici co do tržního podílu.

Pokračující růst Huawei je impozantní, stejně jako jeho schopnost přesouvat se na trhy, kdy donedávna byla značka neznámá,“ uvedl Ryan Reith, programový viceprezident IDC pro celosvětové sledování trhu mobilních zařízení.

Stojí za zmínku, že Apple se posunul na hlavní pozici v každém z dvou posledních kvartálů následujících po prázdninách vždy po obnově svých produktů, takže je pravděpodobné, že v roce 2018 i dále zaznamenáme další posuny mezi hlavními hráči,“ dodal.

Apple dosáhl mírného 0,7% růstu na 41 milionů dodaných iPhonů. Daří se mu na řadě trhů, kde je iPhone X stále top sellerem. V dalším kvartálu všichni vyhlížejí nové tři modely.

Samsung si udržel vedení, ačkoliv výsledky jeho mobilní divize nezaznamenaly úplně nejlepší kvartál. Navíc jeho vlajková loď Galaxy S9 a S9+, která byla uvedená koncem prvního kvartálu dosahuje slabších než běžných prodejů, uvedl výrobce. V srpnu se Samsung chystá uvést Galaxy Note 9.

Na většině trhů vedou prémiový segment Samsung, Apple a Huawei. IDC však dodává, že Xiaomi, Oppo a Vivo tlačí svou zákaznickou základnu proti proudu v mírně nižší cenové hladině, než nabízejí top tři výrobci. Analytici proto tento segment doporučují bedlivě sledovat.

Mírný pokles trhu

Celkem se ve druhém čtvrtletí dodalo 342 milionů smartphonů, což je meziročně o 1,8 % méně v porovnání s 348,2 miliony kusy ve stejném kvartálu loňského roku.

Trh klesá tři po osobě jdoucí čtvrtletí a jde o čtvrtý meziroční pokles v historii trhu smartphonů. IDC věří, že jde o výsledek nezájmu vysoce penetrovaných trhů, ačkoli stále existuje spousta vysoce rostoucích trhů, které by mohly podpořit další růst.

Za poklesem stojí kromě saturace trhu, zvýšené míry penetrace smartphonů i rostoucí průměrná prodejní cena.

Tab.: Celosvětový trh smartphonů v mil. kusů, top 5 výrobců

Výrobce

Dodávky v Q2-18

Podíl Q2-18

Dodávky v Q2-17

Podíl Q2-17

Meziroční změna

1. Samsung

71,5

20,9 %

79,8

22,9 %

-10,4 %

2. Huawei

54,2

15,8 %

38,5

11,0 %

40,9 %

3. Apple

41,3

12,1 %

41,0

11,8 %

0,7 %

4. Xiaomi

31,9

9,3 %

21,4

6,2 %

48,8 %

5. Oppo

29,4

8,6 %

28,0

8,0 %

5,1 %

Ostatní

113,7

33,2 %

139,5

40,1 %

-18,5 %

Celkem

342,0

100,0 %

348,2

100,0 %

-1,8 %

Graf: Podíly hlavních výrobců smartphonů

Graf: Podíly top 5 výrobců smartphonů

Zdroj: IDC Worldwide Quarterly Mobile Phone Tracker, červenec, 2018

Čtěte dále

3D tisk – jaké jsou náklady na 3D tisk?
3D tisk – jaké jsou náklady na 3D tisk?
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
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
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
Objem dat skokově roste, zvyšuje rizika deepfake útoků
Objem dat skokově roste, zvyšuje rizika deepfake útoků
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 »