CINXE.COM

New iOS Changes, New Antitrust Clashes Ahead?

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <!-- HTML Meta Markup --> <title>New iOS Changes, New Antitrust Clashes Ahead?</title> <meta itemprop="image" content="https://www.pymnts.com/wp-content/uploads/2024/08/shutterstock_6628519181.jpg?w=500&#038;h=300&#038;crop=1" /> <!-- Link --> <meta name="theme-color" content="#712cf9"> <meta name="msapplication-TileImage" content="https://www.pymnts.com/wp-content/uploads/2023/07/cpi_favicon_270.jpg" /> <link rel="shortcut icon" href="https://www.pymnts.com/wp-content/uploads/2023/07/cpi_favicon_32.jpg" sizes="32x32" /> <link rel="shortcut icon" href="https://www.pymnts.com/wp-content/uploads/2023/07/cpi_favicon_192.jpg" sizes="192x192" /> <link rel="apple-touch-icon-precomposed" href="https://www.pymnts.com/wp-content/uploads/2023/07/cpi_favicon_180.jpg" /> <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="https://www.pymnts.com/feed/" /> <link rel="alternate" type="text/xml" title="RSS .92" href="https://www.pymnts.com/feed/rss/" /> <link rel="alternate" type="application/atom+xml" title="Atom 0.3" href="https://www.pymnts.com/feed/atom/" /> <link rel="pingback" href="https://www.pymnts.com/xmlrpc.php" /> <link rel="dns-prefetch" href="https://www.google.com"> <link rel="dns-prefetch" href="https://stats.g.doubleclick.net"> <link rel="dns-prefetch" href="https://googleads.g.doubleclick.net"> <link rel="dns-prefetch" href="https://fonts.gstatic.com"> <link rel="dns-prefetch" href="https://www.google-analytics.com"> <link rel="dns-prefetch" href="https://www.pymnts.com"> <link rel="preload" href="/wp-content/themes/flex-mag-sixspoke/2020/bootstrap-icons.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <!-- <script type="text/javascript" src="/wp-content/themes/flex-mag-sixspoke/2020/jquery-3.6.0.slim.min.js?v=1.0"> </script>--> <link rel="preload" as="script" href="https://ak.sail-horizon.com/spm/spm.v1.min.js?ver=5.5.10" /> <script src='https://ak.sail-horizon.com/spm/spm.v1.min.js?ver=5.5.10' type='text/javascript' async></script> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KK94CHFLLe+nY2dmCWGMq91rCGa5gtU4mk92HdvYe+M/SXH301p5ILy+dN9+nJOZ" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ENjdO4Dr2bkBIFxQpeoTz1HIcje39Wm4jDKdf19U8gI4ddQ3GYNS7NTKfAdVQSZe" crossorigin="anonymous"> </script> <link rel="stylesheet" href="/wp-content/themes/flex-mag-sixspoke/2020/bootstrap-icons.css"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" rel="stylesheet"> <!-- Font --> <link href="https://fonts.googleapis.com/css?family=Playfair&#43;Display:700,900&amp;display=swap" rel="stylesheet"> <!-- css --> <link rel="stylesheet" href="https://www.pymnts.com/wp-content/themes/flex-mag-sixspoke/cpi-mini-site/cpi.css?v=37"> <!-- Google analytics --> <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-3WHRCQ5780"></script> <script> let deviceIsBlockingAnalytics = null; let googleTracker = typeof ga !== 'undefined' && ga.getAll ? ga.getAll()[0] : null; console.log('googleTracker initial', googleTracker); if (!googleTracker) { let count = 0; let intervalId = setInterval(() => { ++count; googleTracker = typeof ga !== 'undefined' && ga.getAll ? ga.getAll()[0] : null; console.log('googleTracker', count, googleTracker); if (googleTracker || count > 5) { clearInterval(intervalId); console.log('tracker', googleTracker); return; } }, 500); } else { console.error('Google Tag Manager is blocked'); deviceIsBlockingAnalytics = true; } let lastUrlViewed = null; function parseCookieHeader() { const header = document.cookie; // Split the header into individual name-value pairs var pairs = header.split(';'); // Create an object to store the cookies var cookies = {}; // Loop through the name-value pairs and store them in the object for (var i = 0; i < pairs.length; i++) { var nameValue = pairs[i].split('='); cookies[nameValue[0].trim()] = nameValue[1]; } // Return the object return cookies; } // function registerPageView(url, tracker) { // console.log('registerPageView', url, tracker); // console.log('deviceIsBlockingAnalytics', deviceIsBlockingAnalytics); // tracker.set('page', url); // tracker.send('pageview', { // 'title': document.title, // 'url': url // }); // gtag("event", "pymnts_device_visit", { // path: url // }); // console.log('title', document.title); // if (!deviceIsBlockingAnalytics) doNotProxyReport(url); // } // let firstTrigger = true; // function triggerPageView (url, scrollingUp = false) { // console.log('triggerPageView', url); // if (!googleTracker) { // let count = 0; // let intervalId = setInterval(() => { // ++count; // if (googleTracker || count > 5) { // clearInterval(intervalId); // console.log('tracker', googleTracker); // registerPageView(url, googleTracker); // return; // } // }, 500); // } else { // console.log('tracker', googleTracker); // registerPageView(url, googleTracker); // } // } const cookies = parseCookieHeader(); let pymntsDeviceId; let storedId = localStorage.getItem('pymntsDeviceId'); if (cookies['pymnts-browser-id']) { pymntsDeviceId = cookies['pymnts-browser-id']; localStorage.setItem('pymntsDeviceId', pymntsDeviceId); } else { if (storedId) pymntsDeviceId = storedId; else pymntsDeviceId = 'unknown'; } console.log('pymntsDeviceId', pymntsDeviceId); if (!storedId || storedId === 'undefined') { localStorage.setItem('pymntsDeviceId', pymntsDeviceId); } /* * Setup GA4 */ window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); const { hostname } = window.location; let gtagCategory = hostname === 'gamma.pymnts.com' ? 'UA-11167465-10' : 'UA-11167465-1'; gtag('config', gtagCategory); console.log('gtag ua category', gtagCategory); gtagCategory = hostname === 'gamma.pymnts.com' ? 'G-NY60TDWHJ9' : 'G-3WHRCQ5780'; gtag('config', gtagCategory); console.log('gtag g4 category', gtagCategory); //gtag('set', {'user_id': pymntsDeviceId}); // Set the user ID using signed-in user_id. setTimeout(() => { gtag("event", "pymnts_device_visit", { path: window.location.pathname, }); }, 1000); let gaIsBlocked = null; let rtIsBlocked = false; let visitedPages = []; let connectionCount = 0; let maxConnectionAttempts = 3; const landingPage = window.location.pathname; const doNotProxyReport = pathname => { console.log('Do not report', pathname); let request = { url: `https://rt.pymnts.com:6300/dnr`, method: 'post', data: { pathname } } axios(request) .then(response => console.log(response.data)) .catch(error => console.error(error)); } async function checkIfGoogleAnalyticsIsBlocked() { let request = { url: 'https://www.google-analytics.com/collect', method: "post", params: { v: 1, tid: 'G-3WHRCQ5780', cid: pymntsDeviceId, t: 'web-view' } } console.log('request', request); let isBlocking; let response; try { response = await axios(request); deviceIsBlockingAnalytics = false; isBlocking = 'false'; console.log("Google Analytics is Allowed!!!!!!!!"); doNotProxyReport(landingPage) } catch (err) { // We are blocked!!! deviceIsBlockingAnalytics = true; isBlocking = 'true'; console.error('Google Analytics is Blocked!!!!!!!'); } } checkIfGoogleAnalyticsIsBlocked(); const recordLinkVisit = () => { const cookies = parseCookieHeader(); console.log('visit cookies', cookies); if (typeof cookies['cpi-org-info'] === 'undefined') return; const orgInfo = decodeURIComponent(cookies['cpi-org-info']).split(' --- '); //console.log(orgInfo); if (orgInfo.length < 2) return; const orderId = orgInfo[1]; const url = `https://www.competitionpolicyinternational.com/tracking/record-visit.php?order=${orderId}`; const request = { url, method: 'get' } axios(request) .then(response => console.log('axios success')) .catch(error => console.error('axios error', error)); } recordLinkVisit(); </script> <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> <style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style> <!-- This site is optimized with the Yoast SEO Premium plugin v22.7 (Yoast SEO v23.4) - https://yoast.com/wordpress/plugins/seo/ --> <title>New iOS Changes, New Antitrust Clashes Ahead? | PYMNTS.com</title> <meta name="description" content="By Giuseppe Colangelo*   Over the past decade, the intersection of privacy and antitrust has become a significant focus in the literature on data’s role" /> <link rel="canonical" href="https://www.pymnts.com/cpi-posts/new-ios-changes-new-antitrust-clashes-ahead/" /> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="article" /> <meta property="og:title" content="New iOS Changes, New Antitrust Clashes Ahead? | PYMNTS.com" /> <meta property="og:description" content="By Giuseppe Colangelo*   Over the past decade, the intersection of privacy and antitrust has become a significant focus in the literature on data’s role" /> <meta property="og:url" content="https://www.pymnts.com/cpi-posts/new-ios-changes-new-antitrust-clashes-ahead/" /> <meta property="og:site_name" content="PYMNTS.com" /> <meta property="article:publisher" content="https://www.facebook.com/pymnts/" /> <meta property="og:image" content="https://www.pymnts.com/wp-content/uploads/2024/08/shutterstock_6628519181.jpg" /> <meta property="og:image:width" content="500" /> <meta property="og:image:height" content="300" /> <meta property="og:image:type" content="image/jpeg" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:site" content="@pymnts" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://www.pymnts.com/cpi-posts/new-ios-changes-new-antitrust-clashes-ahead/","url":"https://www.pymnts.com/cpi-posts/new-ios-changes-new-antitrust-clashes-ahead/","name":"New iOS Changes, New Antitrust Clashes Ahead? | PYMNTS.com","isPartOf":{"@id":"https://www.pymnts.com/#website"},"primaryImageOfPage":{"@id":"https://www.pymnts.com/cpi-posts/new-ios-changes-new-antitrust-clashes-ahead/#primaryimage"},"image":{"@id":"https://www.pymnts.com/cpi-posts/new-ios-changes-new-antitrust-clashes-ahead/#primaryimage"},"thumbnailUrl":"https://www.pymnts.com/wp-content/uploads/2024/08/shutterstock_6628519181.jpg","datePublished":"2024-08-12T20:14:55+00:00","dateModified":"2024-08-12T20:14:55+00:00","description":"By Giuseppe Colangelo*   Over the past decade, the intersection of privacy and antitrust has become a significant focus in the literature on data’s role","breadcrumb":{"@id":"https://www.pymnts.com/cpi-posts/new-ios-changes-new-antitrust-clashes-ahead/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://www.pymnts.com/cpi-posts/new-ios-changes-new-antitrust-clashes-ahead/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https://www.pymnts.com/cpi-posts/new-ios-changes-new-antitrust-clashes-ahead/#primaryimage","url":"https://www.pymnts.com/wp-content/uploads/2024/08/shutterstock_6628519181.jpg","contentUrl":"https://www.pymnts.com/wp-content/uploads/2024/08/shutterstock_6628519181.jpg","width":500,"height":300},{"@type":"BreadcrumbList","@id":"https://www.pymnts.com/cpi-posts/new-ios-changes-new-antitrust-clashes-ahead/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.pymnts.com/"},{"@type":"ListItem","position":2,"name":"New iOS Changes, New Antitrust Clashes Ahead?"}]},{"@type":"WebSite","@id":"https://www.pymnts.com/#website","url":"https://www.pymnts.com/","name":"PYMNTS.com","description":"What&#039;s next in payments and commerce","publisher":{"@id":"https://www.pymnts.com/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.pymnts.com/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https://www.pymnts.com/#organization","name":"PYMNTS.com","url":"https://www.pymnts.com/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://www.pymnts.com/#/schema/logo/image/","url":"https://www.pymnts.com/wp-content/uploads/2023/05/PYMNTS_2023_logo_black-1.png","contentUrl":"https://www.pymnts.com/wp-content/uploads/2023/05/PYMNTS_2023_logo_black-1.png","width":3329,"height":687,"caption":"PYMNTS.com"},"image":{"@id":"https://www.pymnts.com/#/schema/logo/image/"},"sameAs":["https://www.facebook.com/pymnts/","https://x.com/pymnts"]}]}</script> <!-- / Yoast SEO Premium plugin. --> <link rel='dns-prefetch' href='//js.hs-scripts.com' /> <link rel='dns-prefetch' href='//stats.wp.com' /> <link rel='dns-prefetch' href='//fonts.googleapis.com' /> <link rel="alternate" type="application/rss+xml" title="PYMNTS.com &raquo; Feed" href="https://www.pymnts.com/feed/" /> <link rel="alternate" type="application/rss+xml" title="PYMNTS.com &raquo; Comments Feed" href="https://www.pymnts.com/comments/feed/" /> <script type="text/javascript"> /* <![CDATA[ */ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/www.pymnts.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.7.1"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); /* ]]> */ </script> <!-- pymnts.com is managing ads with Advanced Ads --><script id="pymnt-ready"> window.advanced_ads_ready=function(e,a){a=a||"complete";var d=function(e){return"interactive"===a?"loading"!==e:"complete"===e};d(document.readyState)?e():document.addEventListener("readystatechange",(function(a){d(a.target.readyState)&&e()}),{once:"interactive"===a})},window.advanced_ads_ready_queue=window.advanced_ads_ready_queue||[]; </script> <style id='wp-emoji-styles-inline-css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='all-css-4' href='https://www.pymnts.com/_static/??-eJzTLy/QzcxLzilNSS3WzyrWz01NyUxMzUnNTc0rQeEU5CRWphbp5qSmJyZX6uVm5uklFxfr6OPTDpRD5sM02efaGpobGxkZmBkYGQMARIMu1Q==' type='text/css' media='all' /> <style id='jetpack-sharing-buttons-style-inline-css'> .jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0}.jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px}.jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px}.jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px}.jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px}@media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0}ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em} </style> <link rel='stylesheet' id='all-css-6' href='https://www.pymnts.com/wp-content/plugins/contact-form-7/includes/css/styles.css?m=1708458468g' type='text/css' media='all' /> <link rel='stylesheet' id='studio-fonts-css' href='//fonts.googleapis.com/css?family=Oswald%3ALato%3A400%2C700%7CWork+Sans%3A900%7CMontserrat%3A400%2C700%7COpen+Sans%3A800%7CPlayfair+Display%3A400%2C700%2C900%7CQuicksand%7CRaleway%3A200%2C400%2C700%7CRoboto+Slab%3A400%2C700%26subset%3Dlatin%2Clatin-ext&#038;ver=1.0.0' media='all' /> <script type="text/javascript" id="advanced-ads-advanced-js-js-extra"> /* <![CDATA[ */ var advads_options = {"blog_id":"1","privacy":{"enabled":false,"state":"not_needed"}}; /* ]]> */ </script> <script type="text/javascript" src="https://www.pymnts.com/_static/??-eJyVjuEKwjAMhF/ImrmB/hKfJbaxy9ZmdWl1vr1VFPwhghAIXO67C1yTYbGhOFIY6pwLzbfXWkeW9aAr+GUykf2MmT7NdpJMkiGF4lkU0F1QLDmDTiGVY2ALqEr5Gfe+fkvIPcVaegq0mIjeKC+appEenJsi1rd6suM/mCKH3M/FSKi6l5IqfYj7za5r22bbtN1wBxwGZxE=" ></script><link rel="https://api.w.org/" href="https://www.pymnts.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.pymnts.com/wp-json/wp/v2/cpi_posts/2051258" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.pymnts.com/xmlrpc.php?rsd" /> <meta name="generator" content="WordPress 6.7.1" /> <link rel='shortlink' href='https://www.pymnts.com/?p=2051258' /> <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.pymnts.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.pymnts.com%2Fcpi-posts%2Fnew-ios-changes-new-antitrust-clashes-ahead%2F" /> <link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.pymnts.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.pymnts.com%2Fcpi-posts%2Fnew-ios-changes-new-antitrust-clashes-ahead%2F&#038;format=xml" /> <link rel="alternate" type="application/feed+json" title="PYMNTS.com &raquo; JSON Feed" href="https://www.pymnts.com/feed/json/" /> <!-- DO NOT COPY THIS SNIPPET! Start of Page Analytics Tracking for HubSpot WordPress plugin v11.1.40--> <script class="hsq-set-content-id" data-content-id="blog-post"> var _hsq = _hsq || []; _hsq.push(["setContentType", "blog-post"]); </script> <!-- DO NOT COPY THIS SNIPPET! End of Page Analytics Tracking for HubSpot WordPress plugin --> <style>img#wpstats{display:none}</style> <script type="text/javascript"> var advadsCfpQueue = []; var advadsCfpAd = function( adID ){ if ( 'undefined' == typeof advadsProCfp ) { advadsCfpQueue.push( adID ) } else { advadsProCfp.addElement( adID ) } }; </script> <script> var userObject; </script><meta property="article:published_time" content="2024-08-12T16:14:55-04:00" /> <!-- Begin comScore Tag --> <script> var _comscore = _comscore || []; _comscore.push({ c1: "2", c2: "39641934", options: { enableFirstPartyCookie: "true" } }); (function() { var s = document.createElement("script"), el = document.getElementsByTagName("script")[0]; s.async = true; s.src = "https://sb.scorecardresearch.com/cs/39641934/beacon.js"; el.parentNode.insertBefore(s, el); })(); </script> <noscript> <img src="https://sb.scorecardresearch.com/p?c1=2&c2=39641934&cv=3.9.1&cj=1"> </noscript> <!-- End comScore Tag --> <style type="text/css"> .post-cont-out, .post-cont-in { margin-right: 0; } .nav-links { display: none; } .nav-left-wrap { width: 60px; } .nav-logo-out { margin-left: -60px; } .nav-logo-in { margin-left: 60px; } .nav-logo-show { padding-right: 20px; width: 200px; height: 50px; } .nav-logo-show img { width: auto; padding-top: 5px; } .nav-left-width { width: 280px !important; } .nav-logo-out-fade { margin-left: -280px; } .nav-logo-in-fade { margin-left: 280px; } .share-count, .feat-info-views { display: none; }</style> <style type="text/css" id="custom-background-css"> body.custom-background { background-color: #f9f9f9; } </style> <link rel="icon" href="https://www.pymnts.com/wp-content/uploads/2022/11/cropped-PYMNTS-Icon-512x512-1.png?w=32" sizes="32x32" /> <link rel="icon" href="https://www.pymnts.com/wp-content/uploads/2022/11/cropped-PYMNTS-Icon-512x512-1.png?w=192" sizes="192x192" /> <link rel="apple-touch-icon" href="https://www.pymnts.com/wp-content/uploads/2022/11/cropped-PYMNTS-Icon-512x512-1.png?w=180" /> <meta name="msapplication-TileImage" content="https://www.pymnts.com/wp-content/uploads/2022/11/cropped-PYMNTS-Icon-512x512-1.png?w=270" /> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s);j.async=true;j.src="https://load.gtm.pymnts.com/4gb8jtcwxmzux.js?"+i;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','dzrxseq=aWQ9R1RNLVdWRldDRDk1JmFzPXk%3D&page=1');</script> <!-- End Google Tag Manager --> </head> <body class="d-flex flex-column" style="min-height:100vh;"> <div class="container-scroller" id="headerContainerScroller"> <div class="container"> <header class="blog-header lh-1 py-3"> <!-- <div class="d-flex flex-wrap flex-row border-bottom border-light"> <div id="cpi-verify" class="my-auto"> <ul class="nav col-12 col-md-auto"> <li><a class="px-2 link-dark" href="#" style="font-size:.9rem;"> Account</a> </li> </ul> </div> <div id="cpi-cart" class="text-end my-auto"> <i class="bi bi-cart-fill fs-5 text-secondary"></i> </div> </div> --> <div class="row flex-nowrap justify-content-between align-items-center g-1"> <div class="col col-md-3 col-lg-4 order-2 order-md-3 order-lg-1 align-self-center"> <ul class="nav col-12 col-md-auto flex-column flex-md-row justify-content-end justify-content-lg-start" id="utilityNav"> <!-- <li class="ps-2 ps-lg-0 d-none order-2 d-lg-block my-auto"><a class="nav-link py-1 link-secondary text-end text-md-start" style="font-size:.9rem;" href="http://www.pymnts.com/cpi/account-management">Verify Email</a> </li> --> <!-- IF THE USER IS LOGGED IN --> <li class="ps-2 ps-lg-0 order-1 my-auto d-none d-md-block"> <p class="p-0 text-end text-md-start mb-0"><a href="https://www.pymnts.com/cpi/account-management/" class="fw-bold text-uppercase" style="font-size:.8rem;"></a></p> </li> <!-- END USER IS LOGGED IN --> <!-- <li class="ps-2 ps-lg-0"><a class="p-0 py-md-1 link-secondary text-end text-md-start d-block d-lg-none" href="http://www.pymnts.com/cpi/account-management"><i class="bi bi-person-circle fs-3"></i></a> </li> --> </ul> <!-- <a class="link-secondary" href="https://www.competitionpolicyinternational.com/subscribe/">Subscribe</a>&nbsp<span class="text-secondary">|</span>&nbsp<a class="link-secondary" href="https://www.competitionpolicyinternational.com/cpi-subscriptions/">Join</a> --> </div> <div class="col-7 col-md-4 col-lg-4 px-2 ps-md-0 pe-md-3 order-1 order-lg-2 align-self-center"> <div class="text-center"> <a class="blog-header-logo text-dark" href="https://www.pymnts.com/cpi"> <img src="https://www.pymnts.com/wp-content/uploads/2023/03/CPI_Logo_Black-1.svg" width="100%" height="50px" class="img-fluid"> </a> <div class="d-block mt-1 mt-md-0"> <small><i>A PYMNTS Company</i></small> </div> </div> </div> <div class="col-md-4 col-lg-3 d-none d-md-block text-end text-lg-start order-md-2 order-lg-3"> <!-- <form class="col-12 col-lg-auto my-auto d-none d-md-block text-end me-3" role="search"> <input type="search" class="form-control" placeholder="Search" aria-label="Search"> </form> --> <form role="search" method="get" id="" action="https://www.pymnts.com/" class="col-12 col-lg-auto my-auto d-none d-md-block text-end me-3"> <input type="hidden" name="post_type" value="cpi_posts" /> <div class="input-group my-auto"> <input class="form-control" type="text" value="" name="s" id="s" placeholder="Search" /> <div class="input-group-append"> <button type="submit" class="input-group-text" style="border-top-left-radius: 0;border-bottom-left-radius: 0;height: 100%;" /> <i class="bi bi-search"></i> </button> </div> </div> </form> </div> <div class="col-2 col-md col-lg-auto my-auto text-end order-4"> <a class="link-white me-3 position-relative" href="https://www.competitionpolicyinternational.com/cart/" role="button"> <i class="bi bi-cart fs-4"></i> <!--<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-success"> 1 <span class="visually-hidden">unread messages</span> </span>--> </a> </div> </div> </header> <div class="nav-scroller py-1"> <nav class="nav d-flex justify-content-start justify-content-md-evenly"> <a class="p-2 link-primary fw-bold" href="https://www.pymnts.com/cpi/subscriptions">Pricing</a><a class="p-2 link-secondary" href="https://www.pymnts.com/cpi/latest-news-for-cpi/">News</a><a class="p-2 link-secondary" href="https://www.pymnts.com/cpi/cpi-column/">Columns</a><a class="p-2 link-secondary" href="https://www.pymnts.com/cpi_category/antitrust-chronicle-2024/">Antitrust Chronicles</a><a class="p-2 link-secondary" href="https://www.pymnts.com/cpi_category/techreg-chronicle-2024/">TechREG Chronicles</a><a class="p-2 link-secondary" href="https://www.pymnts.com/cpi/cpi-blog/">Blog o' Blogs</a><a class="p-2 link-secondary" href="https://www.competitionpolicyinternational.com/category/cpi-events/">Events</a><a class="p-2 link-secondary" href="https://www.competitionpolicyinternational.com/category/cpi-tv">CPI TV</a><a class="p-2 link-secondary" href="https://www.competitionpolicyinternational.com/category/cpi-books/">Books</a> <a class="my-auto px-2 link-secondary d-inline d-md-none" href="#"><i class="bi bi-search text-dark fw-bold"></i></a> <!-- <a class="p-2 link-secondary" href="/audio/">Audio</a> --> <!-- <a class="p-2 link-secondary" href="https://www.competitionpolicyinternational.com/category/cpi-journal/">CPI Journal</a> --> <!-- <a class="p-2 link-secondary" href="https://www.competitionpolicyinternational.com/category/library-recently-published/">Library</a> --> </nav> </div> </div> </div><style> .cpi-article img { max-width: 100%; height: auto; } </style> <script> const postType = 'default'; </script> <div class="main mt-3 mb-5 my-md-5" id="singleContainer"> <div class="container"> <div class="row" id="articlePost"> <div class="col-12 col-lg-8 ms-auto" id="insertArticle"> <div class="row"> <div class="col-12 my-auto"> <h1 class="my-auto blog-post-title text-center"> New iOS Changes, New Antitrust Clashes Ahead? </h1> <div class="row mt-3"> <div class="col-8 col-md-9 my-auto"> <span class="post-info-text fs-6 text-uppercase">By</span> <span class="author-name vcard fs-6 text-uppercase fw-bold" itemprop="author"> <a href="https://www.pymnts.com/author/colangelog/" title="Posts by Giuseppe Colangelo" rel="author" class="fs-6">Giuseppe Colangelo</a> </span> <span class="fs-6 d-none d-md-inline">&nbsp;|&nbsp;</span> <span class="fs-6 text-uppercase d-block d-md-inline">August 12, 2024</span> </div> <div class="col-4 col-md-3 my-auto"> <!-- Share icons --> <a href="https://www.facebook.com/sharer.php?u=https://www.pymnts.com/cpi-posts/new-ios-changes-new-antitrust-clashes-ahead/" class="link-dark"><i class="bi bi-facebook pe-2 fs-6"></i></a> <a href="https://twitter.com/intent/tweet?text=New+iOS+Changes%2C+New+Antitrust+Clashes+Ahead%3F&url=https://www.pymnts.com/cpi-posts/new-ios-changes-new-antitrust-clashes-ahead/" class="link-dark"><i class="bi bi-twitter-x pe-2 fs-6"></i></a> <a href="https://www.linkedin.com/sharing/share-offsite/?url=https://www.pymnts.com/cpi-posts/new-ios-changes-new-antitrust-clashes-ahead/" class="link-dark"><i class="bi bi-linkedin pe-2 fs-6"></i></a> <a href="mailto:?subject=New+iOS+Changes%2C+New+Antitrust+Clashes+Ahead%3F&body=I+found+this+article+interesting+and+want+to+share+it+with+you.+Check+it+out:+https://www.pymnts.com/cpi-posts/new-ios-changes-new-antitrust-clashes-ahead/" class="link-dark"><i class="bi bi-envelope-fill pe-2 fs-6"></i></a> <a href="javascript:window.print()" class="link-dark"><i class="bi bi-printer-fill fs-6"></i></a> </div> </div> </div> <div class="row mt-4 mx-auto"> <div class="col-12 px-0 cpi-article"> <p><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-150322" src="https://www.pymnts.com/wp-content/uploads/2023/07/CPI-COLUMNS-Europe-cover-web-e1631352264781-768x313.jpg" alt="CPI COLUMNS Latin America cover" width="980" height="400" /></p> <p><em>By Giuseppe Colangelo</em><a href="#_ftn10" name="_ftnref10">*</a></p> <p><strong> </strong></p> <p>Over the past decade, the intersection of privacy and antitrust has become a significant focus in the literature on data’s role in digital markets.<a href="#_ftn1" name="_ftnref1"><sup>1</sup></a> In a landscape where platforms acquire data to strategically offer sellers preferential access to consumers’ attention, personal data is indeed the most valuable asset in a platform’s information arsenal. As a result, privacy has moved to the forefront, with policy makers keen to evaluate whether data accumulation strategies could compromise individuals’ privacy and reinforce platforms’ market power. Consequently, there is a growing argument that the unique characteristics of digital markets and the potential uses of data in the digital economy require an approach that integrates privacy considerations into antitrust enforcement, fostering close collaboration between antitrust authorities and data protection regulators.</p> <p>However, there are indications of a new trend where data protection requirements might be interpreted by companies in ways that could distort competition. Specifically, as privacy concerns become part of the interests protected in antitrust proceedings, platforms might be incentivized to adjust their strategies, using data protection as a justification for potentially anticompetitive behavior. For example, some platforms may claim that denying competitors access to their services is necessary to protect user privacy, while app store providers might present restrictions — such as requiring the use of their own payment processors for in-app purchases, limiting sideloading, and preventing developers from informing users about alternative payment options — as essential for safeguarding user security and privacy, even though these measures could lead to anticompetitive self-preferencing.</p> <p>Therefore, in such a scenario, privacy may be weaponized as a business justification for potential anticompetitive conduct and data protection requirements may be leveraged to distort competition.</p> <p>One of the most discussed examples of the growing tension between data protection and antitrust concerns is Apple’s adoption of the App Tracking Transparency (“ATT”) policy as part of the iOS 14.5 privacy update. This policy introduced new consent and notification requirements, altering how app developers can collect and use consumer data for mobile advertising on iOS. While the ATT framework may offer privacy benefits by enhancing users’ control over their personal data, it also establishes a different process for obtaining user consent for Apple’s advertising services compared to third-party services. This disparity could result in discrimination, potentially favoring Apple’s own advertising services and strengthening its dominance in app distribution at the expense of competitors.<a href="#_ftn2" name="_ftnref2"><sup>2</sup></a> As a result, several antitrust authorities are currently investigating the ATT policy.<a href="#_ftn3" name="_ftnref3"><sup>3</sup></a></p> <p>In the meantime, the announced changes to iOS 18 may soon raise further competitive concerns. According to Apple’s press release, the new iOS 18 — expected to launch in mid-September — will include “new privacy features designed to empower users.”<a href="#_ftn4" name="_ftnref4"><sup>4</sup></a> Notably, among the other things, iOS 18 is changing the Contact Import (“CI”) flow, purportedly to give users “more control” by allowing them to “share only specific contacts with an app.”<a href="#_ftn5" name="_ftnref5"><sup>5</sup></a> As a result, while users previously gave consent for developers to access their entire address books, in iOS18 the default setting will require users to select individual contacts to share with third-party apps. However, most of Apple’s key apps (such as all of the ones that come pre-loaded on iPhone) will seemingly not be subject to the same policy.</p> <p>The solution would, therefore, dangerously resemble the features (and the anticompetitive risks) of the ATT policy, specifically, an additional prompt requiring users’ consent that applies only to third-party apps. Once again, under the declared aim of enhancing user privacy, Apple seems poised to introduce a differential process that grants its own apps preferential treatment over third-party apps. As with the ATT policy, this raises suspicion that Apple’s noble intentions around privacy may actually conceal a strategy to gain anticompetitive advantages at the expense of rivals and business users.</p> <p>Indeed, for many apps, access to contacts is essential for ensuring a good user experience. In other words, if a user refuses permission or grants only partial access to her contacts, her experience with the app could be significantly degraded. Apple’s first-party apps would not be exposed to such a risk, being exempt from the application of the above policy. Therefore, by generating frictions between third-party apps and users, hence reducing users’ willingness to share their address books with third-party apps, the discrimination introduced under iOS 18 changes to the CI flow may lead to significant exclusionary effects.</p> <p>Efforts by companies to enhance data protection and deliver privacy-enhancing solutions are certainly welcome. Yet, one question remains: why are only third-party developers subject to these policies? If the forthcoming iOS 18 changes are truly necessary to ensure greater user privacy, there is a straightforward way to reconcile both competitive and privacy concerns: subject all apps, including Apple’s own, to the same treatment. Otherwise, the privacy justification may simply serve as a pretext for regulatory gaming.</p> <p><strong> <em><a href="https://www.pymnts.com/wp-content/uploads/2024/08/EU-Column-August-2024-Full.pdf">Click here for a PDF version of the article</a></em></strong></p> <hr /> <p><a href="#_ftnref10" name="_ftn10"></a>* Jean Monnet Professor of EU Innovation Policy; Associate Professor of Law and Economics, University of Basilicata; TTLF Fellow, Stanford Law School; <strong><a href="about:blank">https://orcid.org/0000-0002-0089-3545</a></strong>; <a href="mailto:giuseppe.colangelo@unibas.it">giuseppe.colangelo@unibas.it</a>.</p> <p><a href="#_ftnref1" name="_ftn1">1</a> For a recent analysis, see Giuseppe Colangelo, <em>The privacy/antitrust curse: insights from GDPR application in competition law proceedings</em>, (2023) <strong><a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4599974">https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4599974</a></strong>.</p> <p><a href="#_ftnref2" name="_ftn2">2</a> About the impact of ATT on online advertising market, namely on rivals’ ability to target advertisements, see Guy Aridor &amp; Yeon-Koo Che, <em>Privacy Regulation and Targeted Advertising: Evidence from Apple’s App Tracking Transparency</em>, (2024) <strong><a href="https://ssrn.com/abstract=4698374">https://ssrn.com/abstract=4698374</a></strong><strong>;</strong> Lennart Kraft, Bernd Skiera &amp; Tim Koschella, <em>Economic Impact of Opt-in versus Opt-out Requirements for Personal Data Usage: The Case of Apple’s App Trackin</em><em>g Transparency (ATT)</em>, (2023) <strong><a href="https://ssrn.com/abstract=4598472">https://ssrn.com/abstract=4598472</a></strong>; Reinhold Kesler, <em>Digital platforms implement privacy-centric policies: What does it mean for competition?</em> CPI Antitrust Chronicle 1 (2022); Daniel Sokol &amp; Feng Zhu, <em>Harming Competition and Consumers under the Guise of Protecting Privacy: Review of Empirical Evidence</em>, CPI Antitrust Chronicle 12 (2022); Lennart Kraft, Bernd Skiera &amp; Tim Koschella, <em>Economic Impact of Opt-in versus Opt-out Requirements for Personal Data Usage: The Case of Apple’s App Trackin</em><em>g Transparency (ATT)</em>, (2023) <strong><a href="https://ssrn.com/abstract=4598472">https://ssrn.com/abstract=4598472</a></strong>.</p> <p><a href="#_ftnref3" name="_ftn3">3</a> See Consilium Concurentei, <em>Consiliul Concurenței investighează piața publicității prin aplicații instalate pe dispozitive mobile Apple (iOS)</em>, (2023) Press release, <strong><a href="http://www.competition.ro/wp-content/uploads/2023/10/Inv-App-oct-2023.pdf">http://www.competition.ro/wp-content/uploads/2023/10/Inv-App-oct-2023.pdf</a></strong>; Autorità Garante della Concorrenza e del Mercato, May 11, 2023, Case A561; Bundeskartellamt, <em>Bundeskartellamt reviews Apple’s tracking rules for third-party apps</em>, (2022) Press release, <strong><a href="https://www.bundeskartellamt.de/SharedDocs/Meldung/EN/Pressemitteilungen/2022/14_06_2022_Apple.html">https://www.bundeskartellamt.de/SharedDocs/Meldung/EN/Pressemitteilungen/2022/14_06_2022_Apple.html</a></strong>; Autorité de la concurrence, March 17, 2021, Decision 21-D-07, <em>Apple, </em><strong><a href="https://www.autoritedelaconcurrence.fr/en/decision/regarding-request-interim-measures-submitted-associations-interactive-advertising-bureau">https://www.autoritedelaconcurrence.fr/en/decision/regarding-request-interim-measures-submitted-associations-interactive-advertising-bureau</a></strong>; Urząd Ochrony Konkurencji i Konsumentów, <em>Apple – the President of UOKiK initiates an investigation</em>, (2021) <strong><a href="https://uokik.gov.pl/news.php?news_id=18092">https://uokik.gov.pl/news.php?news_id=18092</a></strong>. See also UK Competition and Markets Authority, <em>Mobile ecosystems</em>, (2022) Market study final report, Chapter 6 and Appendix J, <strong><a href="https://www.gov.uk/cma-cases/mobile-ecosystems-market-study">https://www.gov.uk/cma-cases/mobile-ecosystems-market-study</a></strong>.</p> <p><a href="#_ftnref4" name="_ftn4">4</a> Apple, <em>iOS 18 makes iPhone more personal, capable, and intelligent than ever</em>, (2024) <strong><a href="https://www.apple.com/newsroom/2024/06/ios-18-makes-iphone-more-personal-capable-and-intelligent-than-ever/">https://www.apple.com/newsroom/2024/06/ios-18-makes-iphone-more-personal-capable-and-intelligent-than-ever/</a></strong>.</p> <p><a href="#_ftnref5" name="_ftn5">5</a> <em>Ibid</em>.</p> </div> </div> </div> </div> <div class="d-none d-lg-block col-3 ms-5 me-auto small" id="sidebar-container"> <!-- Inster sidebar content here --> <h4 class="fst-italic">Featured News</h4> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/fifa-faces-antitrust-lawsuit-in-us-federal-court-over-puerto-rico-soccer-dispute/" class="mb-0 fw-bold">FIFA Faces Antitrust Lawsuit in US Federal Court Over Puerto Rico Soccer Dispute</a><br> <small>Nov 26, 2024 by <a href="https://www.pymnts.com/author/nhoch/" title="Posts by CPI" rel="author">CPI</a> </small> </p> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/us-judge-orders-no-delay-in-google-antitrust-trial-despite-potential-shift-in-administration/" class="mb-0 fw-bold">US Judge Orders No Delay in Google Antitrust Trial Despite Potential Shift in Administration</a><br> <small>Nov 26, 2024 by <a href="https://www.pymnts.com/author/nhoch/" title="Posts by CPI" rel="author">CPI</a> </small> </p> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/google-revamps-search-results-in-europe-amid-eu-scrutiny/" class="mb-0 fw-bold">Google Revamps Search Results in Europe Amid EU Scrutiny</a><br> <small>Nov 26, 2024 by <a href="https://www.pymnts.com/author/nhoch/" title="Posts by CPI" rel="author">CPI</a> </small> </p> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/tech-giants-urge-australian-government-to-delay-controversial-social-media-bill/" class="mb-0 fw-bold">Tech Giants Urge Australian Government to Delay Controversial Social Media Bill</a><br> <small>Nov 26, 2024 by <a href="https://www.pymnts.com/author/nhoch/" title="Posts by CPI" rel="author">CPI</a> </small> </p> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/eus-margrethe-vestager-urges-regulators-to-be-bolder-as-she-steps-down/" class="mb-0 fw-bold">EU’s Margrethe Vestager Urges Regulators to Be ‘Bolder’ as She Steps Down</a><br> <small>Nov 26, 2024 by <a href="https://www.pymnts.com/author/nhoch/" title="Posts by CPI" rel="author">CPI</a> </small> </p> <h4 class="fst-italic mt-4">Antitrust Mix by CPI</h4> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/antitrust-chronicle-remedies-revisited/" class="mb-0 fw-bold">Antitrust Chronicle® – Remedies Revisited</a><br> <small>Oct 30, 2024 by <a href="https://www.pymnts.com/author/boydj/" title="Posts by CPI" rel="author">CPI</a> </small> </p> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/fixing-the-fix-updating-policy-on-merger-remedies/" class="mb-0 fw-bold">Fixing the Fix: Updating Policy on Merger Remedies</a><br> <small>Oct 30, 2024 by <a href="https://www.pymnts.com/author/boydj/" title="Posts by CPI" rel="author">CPI</a> </small> </p> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/methodology-matters-the-2017-ftc-remedies-study/" class="mb-0 fw-bold">Methodology Matters: The 2017 FTC Remedies Study</a><br> <small>Oct 30, 2024 by <a href="https://www.pymnts.com/author/boydj/" title="Posts by CPI" rel="author">CPI</a> </small> </p> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/u-s-v-att-five-lessons-for-vertical-merger-enforcement/" class="mb-0 fw-bold"><em>U.S. v. AT&#038;T</em>: Five Lessons for Vertical Merger Enforcement</a><br> <small>Oct 30, 2024 by <a href="https://www.pymnts.com/author/boydj/" title="Posts by CPI" rel="author">CPI</a> </small> </p> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/the-search-for-antitrust-remedies-in-tech-leads-beyond-antitrust/" class="mb-0 fw-bold">The Search for Antitrust Remedies in Tech Leads Beyond Antitrust</a><br> <small>Oct 30, 2024 by <a href="https://www.pymnts.com/author/boydj/" title="Posts by CPI" rel="author">CPI</a> </small> </p> <div class="sticky-top mt-3"> <h4 class="fst-italic mt-4">Subscribe to our newsletter</h4> <form class="sailthru-nl-signup" method="post" action="https://link.competitionpolicyinternational.com/s/daily_nl" data-list="daily_nl" > <div class="mb-3"> <label for="exampleInputEmail1" class="form-label">Your email address</label> <input type="email" class="form-control" required name="email"> </div> <div class="nl-signup-success m-0 p-0 mt-3 mb-3 d-none alert text-success" role="alert"> Thank you for subscribing </div> <div class="nl-signup-error m-0 p-0 mt-3 mb-3 d-none alert text-danger" role="alert"> <span class="nl-signup-error-msg"></span> </div> <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> </div> </div> </div> <script> const config = { host: window.location.hostname, links: JSON.parse('{"current":"https:\/\/www.pymnts.com\/cpi-posts\/new-ios-changes-new-antitrust-clashes-ahead\/","latest":["https:\/\/www.pymnts.com\/cpi-posts\/advice-for-new-ftc-leadership\/","https:\/\/www.pymnts.com\/cpi-posts\/cpi-talks-with-thomas-kramler\/","https:\/\/www.pymnts.com\/cpi-posts\/the-dust-has-settled-for-now-reviewing-the-recent-amendments-to-the-canadian-competition-act\/","https:\/\/www.pymnts.com\/cpi-posts\/ftc-v-rambus-and-the-de-facto-causation-standard-under-sherman-section-2\/","https:\/\/www.pymnts.com\/cpi-posts\/dvt-and-the-limitations-of-local-nexus-test-in-india\/","https:\/\/www.pymnts.com\/cpi-posts\/enhancing-the-effectiveness-of-competition-regulation-in-malawi\/","https:\/\/www.pymnts.com\/cpi-posts\/observations-on-anti-monopoly-developments-in-chinas-pharmaceutical-industry-and-suggestions-for-compliance\/","https:\/\/www.pymnts.com\/cpi-posts\/competition-for-sustainability-the-sugar-case\/","https:\/\/www.pymnts.com\/cpi-posts\/new-commission-mandate-why-modernize-competition-policy-in-europe\/","https:\/\/www.pymnts.com\/cpi-posts\/2024-icn-conference-summary\/","https:\/\/www.pymnts.com\/cpi-posts\/the-eus-investigation-into-microsoft-teams-a-preliminary-assessment\/","https:\/\/www.pymnts.com\/cpi-posts\/ticketmaster-monopolization-case-lessons-from-mexico\/","https:\/\/www.pymnts.com\/cpi-posts\/antitrust-lessons-for-healthcare-roll-ups-and-everyone-else\/","https:\/\/www.pymnts.com\/cpi-posts\/serial-acquisitions-a-framework-for-analysis\/","https:\/\/www.pymnts.com\/cpi-posts\/changing-the-federal-trade-commissions-course\/","https:\/\/www.pymnts.com\/cpi-posts\/criminal-antitrust-enforcement-by-the-california-attorney-general-what-can-we-expect\/","https:\/\/www.pymnts.com\/cpi-posts\/logit-or-leave-it\/","https:\/\/www.pymnts.com\/cpi-posts\/dojs-war-on-progress-in-rental-markets\/","https:\/\/www.pymnts.com\/cpi-posts\/exploring-the-evolution-and-future-of-chinas-anti-monopoly-law-with-prof-huang-yong\/"]}'), sidebarSelector: '.sidebar-wrap', articleSelector: '[id^="article-number-"]', containerSelector: '#articlePost', insertSelector: '#insertArticle' }; const state = { nextArticleIndex: 0, loadedArticles: [], currentArticle: null, currentPath: window.location.pathname, currentTitle: document.title, pathTitles: [], lastUrlViewed: null, partialsAlreadyLoaded: new Set(), showingArticleId: 'orig', sidebarFreezeTrigger: null, isLoading: false, scrollRAF: null // For requestAnimationFrame }; // Utility functions const $ = selector => document.querySelector(selector); const $$ = selector => document.querySelectorAll(selector); /** * Creates an HTML element with specified attributes * @param {HTMLElement|string} parent - Parent element or selector * @param {string} tag - HTML tag name * @param {string} [className] - CSS class name * @param {string} [innerHTML] - Inner HTML content * @param {Object} [attributes] - Additional attributes * @param {Object} [style] - Inline styles * @returns {HTMLElement} - Created element */ const createElement = (parent, tag, className, innerHTML, attributes = {}, style = {}) => { const element = document.createElement(tag); if (parent) { (typeof parent === 'string' ? $(parent) : parent).appendChild(element); } if (className) { element.className = className; } if (innerHTML) { element.innerHTML = innerHTML; } Object.entries(attributes).forEach(([key, value]) => element.setAttribute(key, value)); Object.entries(style).forEach(([key, value]) => element.style[key] = value); return element; }; // Core functionality /** * Loads the next article * @param {boolean} [isFirst=false] - Whether this is the first article load * @returns {Promise<boolean>} - Whether the article was successfully loaded */ async function loadNextArticle(isFirst = false) { if (state.isLoading || state.nextArticleIndex >= config.links.latest.length) { return false; } state.isLoading = true; const nextUrl = config.links.latest[state.nextArticleIndex++]; if (state.partialsAlreadyLoaded.has(nextUrl)) { state.isLoading = false; return false; } try { const response = await fetch(`${nextUrl}?postType=partial`); if (!response.ok) throw new Error('Network response was not ok'); const data = await response.text(); state.partialsAlreadyLoaded.add(nextUrl); state.currentArticle = createElement( $(config.insertSelector), 'div', null, data, { id: `article-number-${state.nextArticleIndex}`, 'data-url': nextUrl } ); state.currentPath = nextUrl; updateArticleMetadata(state.currentArticle); hideContainerScroller(state.currentArticle); triggerPageView(new URL(nextUrl).pathname, isFirst); addDivToIframes(); state.isLoading = false; return true; } catch (error) { console.error('Error loading next article:', error); state.isLoading = false; return false; } } /** * Updates metadata for the newly loaded article * @param {HTMLElement} article - The article element */ function updateArticleMetadata(article) { const h1 = article.querySelector('h1'); state.currentTitle = h1.innerText; state.pathTitles.push({ path: state.currentPath, title: state.currentTitle }); } /** * Hides the container scroller in the loaded article * @param {HTMLElement} article - The article element */ function hideContainerScroller(article) { const containerScroller = article.querySelector('.container-scroller'); if (containerScroller?.classList) { containerScroller.classList.add('d-none'); } } /** * Triggers a page view for analytics * @param {string} url - The URL of the page view * @param {boolean} [isFirst=false] - Whether this is the first page view */ function triggerPageView(url, isFirst = false) { const triggerView = () => { if (url === state.lastUrlViewed) { return; } const info = state.pathTitles.find(entry => entry.path.includes(url)); if (!info) { return; } state.lastUrlViewed = url; if (window.googleTracker) { window.googleTracker.set('page', url); window.googleTracker.send('pageview', { 'title': info.title }); } console.log('Page view registered:', info.title, url); }; isFirst ? setTimeout(triggerView, 12000) : triggerView(); } /** * Handles scrolling behavior */ function handleScrolling() { const scrollPosition = window.scrollY; updateCurrentArticle(scrollPosition); updateSidebarPosition(); if (window.innerHeight + scrollPosition >= document.body.offsetHeight - 1000) { loadNextArticle(); } } /** * Updates the current article based on scroll position * @param {number} scrollPosition - Current scroll position */ function updateCurrentArticle(scrollPosition) { const articles = $$(config.articleSelector); let currentArticle = null; if (scrollPosition < window.innerHeight) { resetToOriginalArticle(); return; } for (const article of articles) { const { offsetTop, offsetHeight } = article; if (scrollPosition >= offsetTop - window.innerHeight / 2 && scrollPosition < offsetTop + offsetHeight) { currentArticle = article; break; } } if (currentArticle && currentArticle.id !== state.showingArticleId) { updatePageForArticle(currentArticle); } } /** * Updates the page URL and title for the current article * @param {HTMLElement} article - The current article element */ function updatePageForArticle(article) { if (!article) { return; } state.showingArticleId = article.id; state.currentPath = article.dataset.url; state.currentTitle = article.querySelector('h1').innerText; document.title = state.currentTitle; history.replaceState(null, '', state.currentPath); triggerPageView(new URL(state.currentPath).pathname); } /** * Resets the view to the original article */ function resetToOriginalArticle() { state.showingArticleId = 'orig'; triggerPageView(new URL(config.links.current).pathname, true); history.replaceState(null, '', config.links.current); state.currentTitle = $('h1').innerText; document.title = state.currentTitle; } /** * Updates the sidebar position based on scroll */ function updateSidebarPosition() { const sidebar = $(config.sidebarSelector); if (!sidebar) return; const { bottom } = sidebar.getBoundingClientRect(); const containerRect = $(config.containerSelector).getBoundingClientRect(); if (state.sidebarFreezeTrigger && window.scrollY < state.sidebarFreezeTrigger) { resetSidebarPosition(sidebar); } else if (bottom <= window.innerHeight) { freezeSidebarPosition(sidebar, containerRect); } } /** * Resets the sidebar to its original position * @param {HTMLElement} sidebar - The sidebar element */ function resetSidebarPosition(sidebar) { state.sidebarFreezeTrigger = null; Object.assign(sidebar.style, { position: 'static', bottom: 'auto' }); } /** * Freezes the sidebar position * @param {HTMLElement} sidebar - The sidebar element * @param {DOMRect} containerRect - The bounding rectangle of the article container */ function freezeSidebarPosition(sidebar, containerRect) { if (sidebar.style.position !== 'fixed') { Object.assign(sidebar.style, { position: 'fixed', bottom: '0px', width: `${(containerRect.width * 0.25) - 24}px` }); state.sidebarFreezeTrigger = window.scrollY; } } /** * Adds a wrapper div to iframes for responsive behavior */ function addDivToIframes() { $$('iframe').forEach(iframe => { const wrapper = createElement(null, 'div', 'ratio ratio-16x9 mb-3'); iframe.parentNode.insertBefore(wrapper, iframe); wrapper.appendChild(iframe); }); } // Event listeners const scrollHandler = () => { cancelAnimationFrame(state.scrollRAF); state.scrollRAF = requestAnimationFrame(handleScrolling); }; window.addEventListener('scroll', scrollHandler, { passive: true }); window.addEventListener('DOMContentLoaded', () => { addDivToIframes(); loadNextArticle(true); }); // Cleanup window.addEventListener('beforeunload', () => { window.removeEventListener('scroll', scrollHandler); cancelAnimationFrame(state.scrollRAF); }); </script> </div> <footer class="blog-footer"> <div class="container mx-auto"> <div class="row mx-0 mx-md-5 py-4"> <div class="col-12 col-md-3 text-center text-md-start"> <a href="https://www.pymnts.com/cpi/" class="w-100"> <img src="https://www.pymnts.com/wp-content/uploads/2023/03/CPI_Logo_Black-1.svg" width="100%" height="40" class="img-fluid"> </a> <div class="d-block text-black text-center mt-1 mb-3 my-md-0"> <a href="https://www.competitionpolicyinternational.com/category/cpi-tv/" class="text-black text-uppercase fw-normal">CPI TV</a>&nbsp;|&nbsp; <a href="https://www.competitionpolicyinternational.com/subscribe/" class="text-black text-uppercase fw-normal">Subscribe</a> </div> </div> <div class="col-12 col-md-9 text-center"> <div class="row row-cols-3 g-0"> <div class="col text-center"> <h4 class="text-black mb-3">About</h4> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="https://www.pymnts.com/cpi/about-us/" class="nav-link p-0 text-black">About Us</a></li> <li class="nav-item mb-2"><a href="https://www.pymnts.com/cpi/our-editorial-policy/" class="nav-link p-0 text-black">Editorial Policy</a> </li> <li class="nav-item mb-2"><a href="https://www.pymnts.com/cpi/editorial-advisory-board/" class="nav-link p-0 text-black">Editorial Advisory Board</a> </li> </ul> </div> <div class="col text-center"> <h4 class="text-black mb-3">Getting Started</h4> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="https://www.competitionpolicyinternational.com/contact/" class="nav-link p-0 text-black">Contact Us</a> </li> <li class="nav-item mb-2"><a href="https://www.pymnts.com/cpi/promote-more-engage-more-connect-more/" class="nav-link p-0 text-black">Partnerships</a> </li> <li class="nav-item mb-2"><a href="https://www.competitionpolicyinternational.com/subscribe/" class="nav-link p-0 text-black">Newsletters</a> </li> </ul> </div> <div class="col text-center"> <h4 class="text-black mb-3">Follow CPI</h4> <ul class="nav flex-row justify-content-center"> <li class="nav-item mx-2"><a href="https://www.instagram.com/compolinter/"><i class="bi bi-instagram fs-4 text-black"></i></a></li> <li class="nav-item mx-2"><a href="https://www.linkedin.com/company/competition-policy-international/"><i class="bi bi-linkedin fs-4 text-black"></i></a> </li> <li class="nav-item mx-2"><a href="https://twitter.com/CompPolicyInt"><i class="bi bi-twitter-x fs-4 text-black"></i></a></li> <li class="nav-item mx-2"><a href="https://vimeo.com/competitionpolicyint"><i class="bi bi-vimeo fs-4 text-black"></i></a> </li> </ul> </div> </div> </div> </div> <div class="container"> <div class="row mt-5"> <div class="col-12 text-center"> © Competition Policy International 2024 </div> </div> <div class="row"> <div class="col-12 text-center"> <a href="https://www.pymnts.com/cpi/terms-conditions-cpi#cpiPrivacy" class="p-0 text-black smaller">Privacy Policy</a>&nbsp;<span class="smaller">|</span>&nbsp;<a href=https://www.pymnts.com/cpi/terms-conditions-cpi/" class="p-0 text-black smaller">Terms &amp; Conditions</a> </div> </div> </div> </div> </footer> </body>

Pages: 1 2 3 4 5 6 7 8 9 10