What is the iOS IDFA, and Why is Facebook angry with Apple?

Originally published at https://fek.io.
Free AI web copilot to create summaries, insights and extended knowledge, download it at here
2977
Abstract
00000000000</span></pre></div><p id="ec66">By doing this, all users that opt out will have the same IDFA, rendering it useless for the campaign.</p><p id="bf8d"><b>How do you currently get the IDFA?</b></p><p id="5988">To retrieve the IDFA for the device now, there is a simple API call that is made to the <code>ASIdentifierManager</code> in the code. Here are some examples in Swift and Objective-C;</p><p id="96b6">In iOS 14.5 and greater, if you want to get a valid identifier back, you will need to add a key to your info.plist for <code>NSUserTrackingUsageDescription</code>. You will have to make sure the description here is valid, otherwise Apple will reject your application. Here is what it looks like on the Xcode project 'info' tab;</p><figure id="2b1b"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/0*QvItkL-qTOMlAwuf.png"><figcaption></figcaption></figure><p id="8e60">If you were to ask most mobile phone users if they want to be tracked, I believe most would say no. This is one of the reasons why Facebook is so upset. This may not satisfy Facebook, but Apple has added an API to try to find a middle ground with advertisers while satisfying the privacy concerns of their customers.</p><p id="448a">Apple has a framework called SKAdNetwork which allows advertisers to run campaigns without gathering the unique identifier of a users device. While this does not replace what advertising networks can do with a IDFA, it does give them feedback on the success of a campaign.</p><figure id="4b7a"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/0*fsf_N88UlDDN_VlR.png"><figcaption>Graphic courtesy of Apple, Inc.</figcaption></figure><p id="4d49">To use the new functionality, developers will need to <a href="https://developer.apple.com/contact/request/ad-network-id/">register</a> their Ad Network with Apple. Once they have registered their network, the developer will need to configure the participating apps for the network identifier, or <code>SKAdNetworkIdentifier</code>. This can be done by adding a dictionary to the 'info.plist' for the key 'SKAdNetworkItems'.</p><div id="4b4a"><pre><span class="hljs-tag"><<span class="hljs-name">array</span>></span> <span class="hljs-tag"><<span class="hljs-name">dict</span>></span> <span class="hljs-tag"><<span class="hljs-name">key</span>></span>SKAdNetworkIdentifier<span class="hljs-tag"></<span class="hljs-name">key</span>></span> <span class="hljs-tag"><<span class="hljs-name">string</span>></span>adnetworkA<span class="hljs-tag"></<span class="hljs-name">string</span>></span> <span class="hljs-tag"></<span class="hljs-name">dict</span>></span> <span class="hljs-tag"><<span class="hljs-name">dict</span>></span> <span class="hljs-tag"><<span class="hljs-name">key</span>></span>SKAdNetworkIdentifier<span class="hljs-tag"></<span class="hljs-name">key</span>></span> <span class="hljs-tag"><<span class="h
Options
ljs-name">string</span>></span>adnetworkB<span class="hljs-tag"></<span class="hljs-name">string</span>></span> <span class="hljs-tag"></<span class="hljs-name">dict</span>></span> <span class="hljs-tag"></<span class="hljs-name">array</span>></span></pre></div><p id="452f">The apps that are installed can update Apple about the conversion by calling the <b>registerAppForAdNetworkAttribution()</b> or <b>updateConversionValue(_:)</b> methods in <b>SkAdNetwork</b>. No personal information is shared with the advertiser. Apple will update the advertiser with a callback within 24 hours of the conversion.</p><p id="1cec">The advertiser will have to host a service to receive the callback. This is done when registering the advertising network. Apple will provide feedback with 24 hours. If the request is unsuccessful, they will try again nine times over nine days.</p><h1 id="0c32">Relevant documentation</h1><p id="09a6">Here is some of the relevant documentation from Apple’s developer site that explains how to use the <b>SkAdNetwork</b>.</p><div id="ab54" class="link-block"> <a href="https://developer.apple.com/documentation/storekit/skadnetwork/registering_an_ad_network"> <div> <div> <h2>Apple Developer Documentation</h2> <div><h3>undefined</h3></div> <div><p>undefined</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/)"></div> </div> </div> </a> </div><div id="e35d" class="link-block"> <a href="https://developer.apple.com/documentation/storekit/skadnetwork/configuring_the_participating_apps"> <div> <div> <h2>Apple Developer Documentation</h2> <div><h3>Configuring </h3></div> <div><p>the Participating Apps developer.apple.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/)"></div> </div> </div> </a> </div><div id="bc0f" class="link-block"> <a href="https://developer.apple.com/documentation/storekit/skadnetwork/receiving_ad_attributions"> <div> <div> <h2>Apple Developer Documentation</h2> <div><h3>Edit dReceiving Ad Attributions </h3></div> <div><p>developer.apple.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/)"></div> </div> </div> </a> </div><p id="c175">I am sure that advertisers are going to find ways to get around this limitation with the IDFA, but there are tools that we can use to track the success of a campaign.</p></article></body>

Originally published at https://fek.io.
Apple will be releasing OS updates for most of their mobile devices pretty soon. There is a change that has ruffled the features of a lot of people in the online advertising industry.
The issue revolves around an API that Apple has for iOS called the Advertising Identifier, or IDFA for short.
The IDFA is used by advertisers to tie advertising campaigns back to a specific device. This is very similar to how they track users with cookies on certain browsers. I say certain browsers because Apple’s Safari and Brave have blocked this type of tracking. This is why when you are searching for a certain product or service on one page, and then you browse to another website you will sometimes see ads for what you were just searching. Advertisers are doing this mainly so they can tie campaigns and their success to the users viewing the ads.
For mobile app developers like Facebook, they sell advertising campaigns for other mobile apps. If a user installs a mobile app based on an ad campaign they saw on Facebook, they use the IDFA to tie the device back to the campaign to know how effective the campaign was for that app install.
In the upcoming release of iOS 14.5 developers are being required to get permission from the user to get their IDFA. Facebook and other companies believe that when users are prompted to allow them to track, the users will simply deny them that permission.
If the user does not give permission to use their IDFA, the app developer will get a series of zeros when they look up this identifier. It will look something like this to the developer;
00000000-0000-0000-0000-000000000000By doing this, all users that opt out will have the same IDFA, rendering it useless for the campaign.
How do you currently get the IDFA?
To retrieve the IDFA for the device now, there is a simple API call that is made to the ASIdentifierManager in the code. Here are some examples in Swift and Objective-C;
In iOS 14.5 and greater, if you want to get a valid identifier back, you will need to add a key to your info.plist for NSUserTrackingUsageDescription. You will have to make sure the description here is valid, otherwise Apple will reject your application. Here is what it looks like on the Xcode project 'info' tab;

If you were to ask most mobile phone users if they want to be tracked, I believe most would say no. This is one of the reasons why Facebook is so upset. This may not satisfy Facebook, but Apple has added an API to try to find a middle ground with advertisers while satisfying the privacy concerns of their customers.
Apple has a framework called SKAdNetwork which allows advertisers to run campaigns without gathering the unique identifier of a users device. While this does not replace what advertising networks can do with a IDFA, it does give them feedback on the success of a campaign.

To use the new functionality, developers will need to register their Ad Network with Apple. Once they have registered their network, the developer will need to configure the participating apps for the network identifier, or SKAdNetworkIdentifier. This can be done by adding a dictionary to the 'info.plist' for the key 'SKAdNetworkItems'.
<array> <dict> <key>SKAdNetworkIdentifier</key> <string>adnetworkA</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>adnetworkB</string> </dict> </array>The apps that are installed can update Apple about the conversion by calling the registerAppForAdNetworkAttribution() or updateConversionValue(_:) methods in SkAdNetwork. No personal information is shared with the advertiser. Apple will update the advertiser with a callback within 24 hours of the conversion.
The advertiser will have to host a service to receive the callback. This is done when registering the advertising network. Apple will provide feedback with 24 hours. If the request is unsuccessful, they will try again nine times over nine days.
Here is some of the relevant documentation from Apple’s developer site that explains how to use the SkAdNetwork.
I am sure that advertisers are going to find ways to get around this limitation with the IDFA, but there are tools that we can use to track the success of a campaign.
Alexander Nguyen1-page. Well-formatted.
Andrew ZuoI recently saw this meme about async and await.
Afan KhanHere’s why Microsoft considers React a mistake for Edge.
Olenin SlavaAre you wondering why Zig programmers make so much money? Guess what? It is not what you are thinking.
Mike ScarpielloStriving and surviving in my 50s in a very crowded profession