iOS14 支持说明
<h1>iOS14 支持说明<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#ios14-%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E"></a></h1>
<h2>1. 概述<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#_1-%E6%A6%82%E8%BF%B0"></a></h2>
<p>从iOS 14.5开始,只有在获得用户明确许可的前提下,应用才可以访问用户的IDFA数据并向用户投放定向广告。在应用程序调用 <a href="https://developer.apple.com/documentation/apptrackingtransparency?language=objc"><strong>App Tracking Transparency</strong></a> 框架向最终用户提出应用程序跟踪授权请求之前,IDFA将不可用。如果某个应用未提出此请求,则读取到的IDFA将返回全为0的字符串。</p>
<h2>2. 获取广告标识IDFA<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#_2-%E8%8E%B7%E5%8F%96%E5%B9%BF%E5%91%8A%E6%A0%87%E8%AF%86idfa"></a></h2>
<h3>2.1 前提<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#_2-1-%E5%89%8D%E6%8F%90"></a></h3>
<p>开发工具需要升级到Xcode12及以上</p>
<h3>2.2 申请IDFA权限<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#_2-2-%E7%94%B3%E8%AF%B7idfa%E6%9D%83%E9%99%90"></a></h3>
<p>为了申请IDFA权限,需要info.plist里添加NSUserTrackingUsageDescription键,内容为自定义的字符串,说明为什么要获取IDFA,可根据应用本身的需求决定是否对此字符串做国际化处理。</p>
<p>xml</p>
<pre><code>//注意⚠️
//如果加上了这个,必须执行第2步,弹出IDFA权限申请,否则无法通过Appstore审核。
&lt;key&gt;NSUserTrackingUsageDescription&lt;/key&gt;
&lt;string&gt;该标识符将用于向您投放个性化广告。&lt;/string&gt;</code></pre>
<p>在应用启动后,弹出IDFA权限申请,这个弹框只会出现一次,后续如果要变更IDFA权限,需要在手机的系统设置【隐私】-【跟踪】里调整。</p>
<p>objective-c</p>
<pre><code>if (@available(iOS 14.5, *)) {
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
}];</code></pre>
<p>> ⚠️ 注意: 在iOS 15.0中,如果是在启动方法中调用授权,是不会弹出授权提示框的。</p>
<p>objective-c</p>
<pre><code>- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions</code></pre>
<h4>解决方案<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88"></a></h4>
<p>1、可以在这两个方法中注册 UIApplicationDidBecomeActiveNotification 通知</p>
<p>objective-c</p>
<pre><code>[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didBecomeActive) name:UIApplicationDidBecomeActiveNotification object:nil];</code></pre>
<p>然后在接受到通知后进行授权操作</p>
<p>objective-c</p>
<pre><code>- (void)didBecomeActive
{
if (@available(iOS 14.5, *))
{
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
}];
}
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];
}</code></pre>
<p>2、如果你的app 不支持 Application Scene 也可以在 AppDelegate 中的 applicationDidBecomeActive 回调中进行处理</p>
<p>objective-c</p>
<pre><code>- (void)applicationDidBecomeActive:(UIApplication *)application
{
if (@available(iOS 14.5, *))
{
if([ATTrackingManager trackingAuthorizationStatus] == ATTrackingManagerAuthorizationStatusNotDetermined)
{
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
}];
}
}
}</code></pre>
<h2>3. 启用SKAdNetwork跟踪转化<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#_3-%E5%90%AF%E7%94%A8skadnetwork%E8%B7%9F%E8%B8%AA%E8%BD%AC%E5%8C%96"></a></h2>
<p>支持了Apple官方的 <a href="https://developer.apple.com/documentation/storekit/skadnetwork"><strong>SKAdNetwork</strong></a> 框架的三方渠道,会在获取不到IDFA的时候,正常获取转化。为了实现这个功能,需要在info.plist添加对应的SKAdNetworkItems。</p>
<p>> ⚠️ 按Apple要求,所有的SKAdNetworkIdentifier必须小写。 ⚠️ 建议对SKAdNetworkIdentifier做去重处理。</p>
<h3>3.1 Sigmob<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#_3-1-sigmob"></a></h3>
<p>配置</p>
<h3>3.2 穿山甲<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#_3-2-%E7%A9%BF%E5%B1%B1%E7%94%B2"></a></h3>
<p>配置</p>
<h3>3.3 腾讯广告<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#_3-3-%E8%85%BE%E8%AE%AF%E5%B9%BF%E5%91%8A"></a></h3>
<p>配置</p>
<h3>3.4 快手<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#_3-4-%E5%BF%AB%E6%89%8B"></a></h3>
<p>配置</p>
<h3>3.5 AdMob<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#_3-5-admob"></a></h3>
<p>配置</p>
<h3>3.6 Vungle<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#_3-6-vungle"></a></h3>
<p>配置</p>
<h3>3.7 ironSource<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#_3-7-ironsource"></a></h3>
<p>配置</p>
<h3>3.8 Mintegral<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#_3-8-mintegral"></a></h3>
<p>配置</p>
<h3>3.9 Applovin<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#_3-9-applovin"></a></h3>
<p>配置</p>
<h3>3.10 UnityAds<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#_3-10-unityads"></a></h3>
<p>配置</p>
<h3>3.11 【重要说明】<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/iOS/iOS14%E6%94%AF%E6%8C%81%E8%AF%B4%E6%98%8E/#_3-11-%E3%80%90%E9%87%8D%E8%A6%81%E8%AF%B4%E6%98%8E%E3%80%91"></a></h3>
<p>> 因三方广告平台的SKAdNetwork ID可能不定期更新,为尽可能降低收入损失风险,建议从下述链接处获取各平台最新的SKAdNetwork ID List。</p>
<table>
<thead>
<tr>
<th>广告网络</th>
<th>SKAdNetwork获取链接</th>
</tr>
</thead>
<tbody>
<tr>
<td>Sigmob</td>
<td>-</td>
</tr>
<tr>
<td>穿山甲</td>
<td><a href="https://www.csjplatform.com/union/media/union/download/detail?id=1&amp;docId=5f327098d44dc5000e1d45d5&amp;osType=ios"><a href="https://www.csjplatform.com/union/media/union/download/detail?id=1&docId=5f327098d44dc5000e1d45d5&osType=ios">https://www.csjplatform.com/union/media/union/download/detail?id=1&docId=5f327098d44dc5000e1d45d5&osType=ios</a></a></td>
</tr>
<tr>
<td>腾讯广告</td>
<td><a href="https://developers.adnet.qq.com/doc/ios/union/union_support_ATT#skadnetwork%20%E6%8E%A5%E5%85%A5"><a href="https://developers.adnet.qq.com/doc/ios/union/union\_support\_ATT#skadnetwork">https://developers.adnet.qq.com/doc/ios/union/union\_support\_ATT#skadnetwork</a> 接入</a></td>
</tr>
<tr>
<td>快手</td>
<td><a href="https://u.kuaishou.com/access"><a href="https://u.kuaishou.com/access">https://u.kuaishou.com/access</a></a></td>
</tr>
<tr>
<td>AdMob</td>
<td><a href="https://developers.google.com/admob/ios/ios14"><a href="https://developers.google.com/admob/ios/ios14">https://developers.google.com/admob/ios/ios14</a></a></td>
</tr>
<tr>
<td>Vungle</td>
<td><a href="https://vungle.com/skadnetworkids.xml"><a href="https://vungle.com/skadnetworkids.xml">https://vungle.com/skadnetworkids.xml</a></a></td>
</tr>
<tr>
<td>ironSource</td>
<td><a href="https://developers.ironsrc.com/ironsource-mobile/ios/managing-skadnetwork-ids/"><a href="https://developers.ironsrc.com/ironsource-mobile/ios/managing-skadnetwork-ids/">https://developers.ironsrc.com/ironsource-mobile/ios/managing-skadnetwork-ids/</a></a></td>
</tr>
<tr>
<td>UnityAds</td>
<td><a href="https://skan.mz.unity3d.com/v2/partner/skadnetworks.plist.xml"><a href="https://skan.mz.unity3d.com/v2/partner/skadnetworks.plist.xml">https://skan.mz.unity3d.com/v2/partner/skadnetworks.plist.xml</a></a></td>
</tr>
<tr>
<td>Mintegral</td>
<td><a href="https://dev.mintegral.com/skadnetworkids.xml"><a href="https://dev.mintegral.com/skadnetworkids.xml">https://dev.mintegral.com/skadnetworkids.xml</a></a></td>
</tr>
<tr>
<td>Applovin</td>
<td><a href="https://dash.applovin.com/documentation/mediation/ios/getting-started/skadnetwork-info"><a href="https://dash.applovin.com/documentation/mediation/ios/getting-started/skadnetwork-info">https://dash.applovin.com/documentation/mediation/ios/getting-started/skadnetwork-info</a></a></td>
</tr>
</tbody>
</table>