iOS开发基础145-Apple Search Ads
<p>AdServices框架是Apple引入的一种用于衡量广告效果的工具,特别是针对应用安装广告 (App Install Ads) 的归因。它有助于广告主和广告平台了解他们的广告是否成功引导了用户下载和安装应用。使用AdServices集成在iOS应用中,一般目标是获得与广告相关的追踪参数,如广告活动(Campaign)、广告组(Ad Group)等。以下是详细介绍AdServices集成的步骤、角色和概念,以及示例代码。</p><h3 id="概念和角色">概念和角色</h3>
<ol>
<li>
<p><strong>AdServices框架</strong>:这是iOS 14.3引入的一个框架,用于获取广告标识符和其他与广告相关的参数。</p>
</li>
<li>
<p><strong>Ad Attribution</strong>:广告归因,将应用的安装归因于特定广告活动、广告组等。</p>
</li>
<li>
<p><strong>Token</strong>:标识应用安装和广告点击之间关系的唯一标识符。</p>
</li>
<li>
<p><strong>Ad Attribution Details</strong>:包括广告活动、广告组、广告创意、点击时间等信息,这些详情可以帮助追踪和衡量广告效果。</p>
</li>
</ol>
<h3 id="步骤">步骤</h3>
<h4 id="1-导入框架">1. 导入框架</h4>
<p>首先你需要在项目中导入AdServices框架。在你的项目的<code>Podfile</code>中添加以下内容并运行<code>pod install</code>:</p>
<pre><code class="language-ruby">platform :ios, '14.3'
use_frameworks!
target 'YourTargetName' do
pod 'AdServices'
end
</code></pre>
<p>或者你可以手动导入。如果你不使用CocoaPods,可以在Xcode中手动添加框架:</p>
<ol>
<li>打开Xcode项目。</li>
<li>选择你的项目目标。</li>
<li>选择“Build Phases”选项卡,点击"Link Binary With Libraries"展开。</li>
<li>点击“+”按钮,添加<code>AdServices.framework</code>。</li>
</ol>
<h4 id="2-请求authorization认证">2. 请求Authorization认证</h4>
<p>在iOS 14.5和更新的版本中,应用需要显式请求用户同意 (ATT,App Tracking Transparency) 才能访问广告标识符。</p>
<p>在你的<code>Info.plist</code>中添加以下配置:</p>
<pre><code class="language-xml"><key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>
</code></pre>
<p>在代码里请求用户授权:</p>
<pre><code class="language-objc">#import <AdSupport/AdSupport.h>
#import <AppTrackingTransparency/AppTrackingTransparency.h>
- (void)requestTrackingAuthorization {
if (@available(iOS 14.5, *)) {
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
// Handle authorization status
if (status == ATTrackingManagerAuthorizationStatusAuthorized) {
// Authorized
} else {
// Not authorized
}
}];
}
}
</code></pre>
<p>在适当的时机,调用<code>requestTrackingAuthorization</code>函数,以便获取用户的授权。</p>
<h4 id="3-获取广告token">3. 获取广告Token</h4>
<p>调用AdServices框架获取广告Token:</p>
<pre><code class="language-objc">#import <AdServices/AdServices.h>
- (void)fetchAdServicesToken {
if (@available(iOS 14.3, *)) {
NSError *error = nil;
NSString *token = ;
if (error) {
NSLog(@"%@", error.localizedDescription);
} else {
NSLog(@"AdServices Token: %@", token);
;
}
}
}
- (void)sendTokenToServer:(NSString *)token {
// Implement server communication to send the token, this step involves your backend server
// You can use NSURLSession or any preferred network library to send token to your server
// Example: send a POST request with the token data
}
</code></pre>
<h4 id="4-服务器端验证和解析token">4. 服务器端验证和解析Token</h4>
<p>在你的服务器端,你需要解码和验证从应用中获取的Token。你可以使用Apple提提供的广告归因API接口进行Token的验证和解析。这里的服务器端实现根据你的后端技术栈会有所不同,下面是一个简化的Python示例:</p>
<pre><code class="language-python">import requests
def verify_ad_token(token):
url = "https://api-adservices.apple.com/api/v1/"
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
response = requests.post(url, headers=headers)
if response.status_code == 200:
ad_attribution_data = response.json()
print(ad_attribution_data)
# Process the attribution data as necessary
else:
print(f"Error: {response.status_code}")
# Example usage
token = "your_ad_services_token_from_app"
verify_ad_token(token)
</code></pre>
<h3 id="总结">总结</h3>
<p>通过上述步骤和代码示例,你可以在iOS应用中集成AdServices框架来获取广告Token,并在服务器端验证和解析该Token以获取广告投放的具体表现和效果。这可帮助广告主和开发者更好地调整和优化广告策略。如果你需要更复杂的操作和逻辑(如用户日志记录和多重广告平台集成),可以基于这些基础进一步扩展。</p>
<h2 id="补充">补充</h2>
<p>还没看明白?那么请接着往下看。</p>
<h3 id="adservices框架的工作流程概述">AdServices框架的工作流程概述</h3>
<ol>
<li><strong>广告投放</strong>:广告主通过广告平台(如Apple Search Ads)投放广告,目标是引导用户下载和安装应用。</li>
<li><strong>用户点击广告</strong>:用户在广告平台上看到广告并点击。</li>
<li><strong>应用安装</strong>:用户被引导到App Store下载并安装应用。</li>
<li><strong>Token获取</strong>:应用通过AdServices框架获取广告归因Token。</li>
<li><strong>Token上报</strong>:应用将获取的Token上报给广告主的服务器。</li>
<li><strong>Token验证和解析</strong>:广告主的服务器验证和解析Token,获取广告活动相关信息,完成广告归因。</li>
<li><strong>数据分析</strong>:基于解析的归因数据,广告主可以调整和优化广告策略。</li>
</ol>
<h3 id="每一步的角色和操作细节">每一步的角色和操作细节</h3>
<h4 id="1-广告投放">1. 广告投放</h4>
<p><strong>角色</strong>:广告主和广告平台(如Apple Search Ads)。</p>
<p><strong>操作</strong>:广告主使用广告平台创建广告系列,设定目标受众和预算等。广告平台负责展示广告给合适的用户。</p>
<h4 id="2-用户点击广告">2. 用户点击广告</h4>
<p><strong>角色</strong>:用户和广告平台。</p>
<p><strong>操作</strong>:用户在广告平台上看到广告并点击,广告平台记录这次点击事件。</p>
<h4 id="3-应用安装">3. 应用安装</h4>
<p><strong>角色</strong>:用户和App Store。</p>
<p><strong>操作</strong>:用户被引导到App Store下载并安装应用。</p>
<h4 id="4-token获取">4. Token获取</h4>
<p><strong>角色</strong>:应用、AdServices框架。</p>
<p><strong>操作</strong>:应用启动后,通过AdServices框架获取广告归因Token。</p>
<pre><code class="language-objc">#import <AdServices/AdServices.h>
- (void)fetchAdServicesToken {
if (@available(iOS 14.3, *)) {
NSError *error = nil;
NSString *token = ;
if (error) {
NSLog(@"%@", error.localizedDescription);
} else {
NSLog(@"AdServices Token: %@", token);
;
}
}
}
</code></pre>
<h4 id="5-token上报">5. Token上报</h4>
<p><strong>角色</strong>:应用、广告主的服务器。</p>
<p><strong>操作</strong>:应用将获取到的Token上报给广告主的服务器。</p>
<pre><code class="language-objc">- (void)sendTokenToServer:(NSString *)token {
NSURL *url = ;
NSMutableURLRequest *request = ;
request.HTTPMethod = @"POST";
;
NSDictionary *body = @{@"token": token};
NSData *bodyData = ;
request.HTTPBody = bodyData;
NSURLSessionDataTask *dataTask = [ dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"Error: %@", error.localizedDescription);
} else {
NSLog(@"Token sent successfully");
}
}];
;
}
</code></pre>
<h4 id="6-token验证和解析">6. Token验证和解析</h4>
<p><strong>角色</strong>:广告主的服务器、Apple的广告归因API。</p>
<p><strong>操作</strong>:广告主的服务器使用Apple的广告归因API验证和解析Token,获取广告活动相关信息。</p>
<pre><code class="language-python">import requests
def verify_ad_token(token):
url = "https://api-adservices.apple.com/api/v1/"
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
response = requests.post(url, headers=headers)
if response.status_code == 200:
ad_attribution_data = response.json()
print(ad_attribution_data)
# Process the attribution data as necessary
else:
print(f"Error: {response.status_code}")
# Example usage
token = "your_ad_services_token_from_app"
verify_ad_token(token)
</code></pre>
<h4 id="7-数据分析">7. 数据分析</h4>
<p><strong>角色</strong>:广告主。</p>
<p><strong>操作</strong>:广告主基于解析的归因数据衡量广告效果,并据此优化广告策略。例如,识别出哪些广告系列效果好,哪些需要调整。</p>
<h3 id="如何确定归因给谁">如何确定归因给谁?</h3>
<p>广告归因是为了确定用户的安装行为是否由某个特定广告触发。确定归因主要通过以下步骤:</p>
<ol>
<li><strong>广告平台记录点击事件</strong>:当用户点击广告时,广告平台记录这次点击事件,并在用户点击广告后将相关的数据传递给AdServices。</li>
<li><strong>生成归因Token</strong>:AdServices框架在用户成功安装应用后,通过这些数据生成一个归因Token。</li>
<li><strong>验证和解析归因Token</strong>:服务器端使用广告归因API验证和解析Token,以获取广告活动相关的详细信息,如广告系列ID、广告组ID等。这些信息可以用来确定用户的安装行为归因于哪个广告活动。</li>
</ol>
<h3 id="投入广告在哪里">投入广告在哪里?</h3>
<p>广告可以通过不同的平台投入,例如Apple Search Ads。广告主使用这些平台来创建和管理广告活动。当用户点击这些广告并下载了应用时,广告平台将这些点击事件的数据通过AdServices框架传递给应用,以便进行广告归因。</p>
<h3 id="用户点击之后下载客户端如何归因">用户点击之后下载,客户端如何归因?</h3>
<p>客户端通过AdServices框架来获取广告归因Token。这个Token在用户点击广告并成功安装应用后生成,包含了与广告点击事件相关的详细信息。应用会将这个Token发送给广告主的服务器,服务器通过解析这个Token来确定用户的下载行为归因于哪个广告活动。</p>
<h3 id="数据上报给谁上报什么东西">数据上报给谁?上报什么东西?</h3>
<p>数据上报给广告主的服务器。上报的主要是通过AdServices框架获取的广告归因Token:</p>
<ol>
<li><strong>Token内容</strong>:由AdServices生成的归因Token。</li>
<li><strong>其他相关信息</strong>:可以根据需要上报其他用户相关的信息(如用户ID、设备信息等),以帮助进行更精细的归因和数据分析。</li>
</ol>
<p>上报Token的目的是为了在服务器端验证和解析这个Token,从而获取更多详细的广告活动信息。</p>
<h3 id="总结-1">总结</h3>
<p>当广告主通过广告平台投放广告并引导用户下载和安装应用时,应用通过AdServices框架获取广告归因Token,并将这个Token上报给广告主的服务器。服务器使用广告归因API验证和解析Token,以确定哪个广告活动引导了用户的安装行为。这些数据帮助广告主分析广告效果并优化广告策略。整个流程中涉及的主要角色包括广告主、广告平台、用户、和应用(客户端)。</p>
</div>
<div id="MySignature" role="contentinfo">
将来的你会感谢今天如此努力的你!
版权声明:本文为博主原创文章,未经博主允许不得转载。<br><br>
来源:https://www.cnblogs.com/chglog/p/18336912
頁:
[1]