英文原文档:https://interactiveadvertisingbureau.github.io/Open-Measurement-SDKAndroid/validation.html
概括
当SDK通过错误和异常发出重要的实施问题信号时,您应该执行其他验证步骤,以确保实施工作端到端。您可以通过使用与SDK分发捆绑在一起的JavaScript脚本(称为Validation Verification Client)来执行此操作。
下面我们描述如何执行脚本并监视脚本中的事件以确认正确的实现。请注意,尽管您当然应该自己执行此验证,但是您应该从IAB技术实验室寻求进一步的指导,以确保您的实施获得独立认证。
脚步
1.加载并注入脚本。
确切的方法会因您要验证的是WebView还是原生广告而异。
如果您要验证WebView广告,则需要将Validation Verification Client脚本嵌入广告响应中。
如果您要验证原生广告,则需要确保将Validation Client注入为一种测量资源。您可以将脚本托管在远程服务器上,也可以在本地代理。
iOS中的示例:
NSMutableArray *scripts = [NSMutableArray new];
NSURL *url = [NSURL urlWithString:@"127.0.0.1/omid-validation-verification-script-v1.js"];
NSString *vendorKey = @"dummyVendor"; // you must use this value as is
NSString *params = @"{\"k\":\"v\"}"
[scripts addObject:[[OMIDVerificationScriptResource alloc] initWithURL:url vendorKey:vendorKey
parameters:params]];
该脚本通常omid-validation-verification-script-v1.js
是开箱即用的。
2.按照广告格式的标准实施步骤进行操作。
确保您已根据要验证的广告格式执行了实施说明中指定的验证步骤。
3.开始您的代理会话。
Validation Verification Client将通过HTTP请求“登录”到本地主机。这些请求将响应各种事件(会话开始,印象事件,播放进度,可见性更新等)而发送,并将包括这些事件附带的参数。为了查看这些事件,您将需要运行代理会话以捕获ping。
4.构建并运行您的应用程序。
然后继续进行下一步,您将在其中加载应用中的广告并与之互动。
5.加载广告并观察来自Validation Client的日志。
与应用互动并加载广告时,请监控代理中Validation Client的日志。默认情况下,它们将转到localhost:66
。例如,
http://localhost:66/sendMessage?msg=[url encoded message content]
消息的确切内容将根据记录的事件而有所不同,但是,除了少数例外,您可以期望该事件将被序列化为具有以下结构的JSON对象:
{
"adSessionId": "5CAE70B9-2D92-4F09-A10F-44358F316B40",
"timestamp": "[timestamp]",
"type": "[eventType]",
"data": {}
}
关于上述几点注意事项:
- 在给定广告会话的所有事件中,广告会话ID均相同。
- 该
"data"
属性可能并非在所有事件中都存在。 - 上面的JSON对象将被序列化并引用URL,因为该事件将通过HTTP进行ping操作。
以下是您应检查的事件。
所有广告
- 初始化。
OmidSupported[true]
- 会话开始。请注意,事件
"type"
为"sessionStart"
。您还应该确认"data"
属性的内容包含期望值。
{
"adSessionId": "A811D9AE-947E-49FB-9572-BCB13B0F9FC8",
"timestamp": 1513975492522,
"type": "sessionStart",
"data": {
"context": {
"environment": "app",
"omidNativeInfo": {
"partnerName": "partner",
"partnerVersion": "1.0"
},
"deviceInfo": {
"deviceType": "iPhone7,1",
"osVersion": "11.1.0",
"os": "iOS"
},
"adSessionType": "html",
"app": {
"appId": "com.partner.TestApp",
"libraryVersion": "1.0.0"
},
"customReferenceData": "",
"supports": [
"clid",
"vlid"
],
"omidJsInfo": {
"serviceVersion": "1.0.1"
}
}
}
}
- 印象。对于给定的广告会话,应仅触发一次。
{
"adSessionId": "A811D9AE-947E-49FB-9572-BCB13B0F9FC8",
"timestamp": 1515021621358,
"type": "impression",
"data": {
"mediaType": "video",
"viewport": {
"width": 414,
"height": 736
},
"adView": {
"percentageInView": 100,
"reasons": [],
"geometry": {
"width": 300,
"height": 250,
"x": 57,
"y": 164
},
"onScreenGeometry": {
"width": 300,
"height": 250,
"x": 57,
"y": 164,
"obstructions": []
}
}
}
}
- 几何形状更改(可视性更新)。请确认事件是在滚动广告时触发的(如果可以滚动进出视图),并且所反映的可见百分比
adView.percentageInView
是准确的。
{
"adSessionId": "A811D9AE-947E-49FB-9572-BCB13B0F9FC8",
"timestamp": 1513978723380,
"type": "geometryChange",
"data": {
"viewport": {
"width": 375,
"height": 667
},
"adView": {
"percentageInView": 0,
"reasons": [
"clipped"
],
"geometry": {
"width": 300,
"height": 300,
"x": 0,
"y": 1100
},
"onScreenGeometry": {
"width": 300,
"height": 0,
"x": 0,
"y": 1100,
"obstructions": []
}
}
}
}
展示广告
上一节中描述的事件应封装您需要监视的所有事件。请确保针对给定的广告会话在适当的时间调度事件。
例如,如果在滚动浏览和滚动浏览时看到一个嵌入式广告的多个会话开始事件,则本机实施中可能会出现问题,因此应确保始终维护一个广告会话。
如果您没有看到可见度更新,则可能是初始化过程中存在先前的问题,例如未设置广告视图。
并且,作为最后一个示例,如果可见百分比不正确,请确保检查是否有可能阻碍广告的障碍物。
对于本机显示,请确保正确传递测试脚本的验证参数。您可以通过检查会话开始事件的"verificationParameters"
属性中的 "data"
属性来执行此操作:
{
"adSessionId": "A811D9AE-947E-49FB-9572-BCB13B0F9FC8",
"timestamp": 1513975492522,
"type": "sessionStart",
"data": {
"verificationParameters": "..."
}
}
}
影片广告
对于视频广告,除了前面概述的事件之外,您还应该查找播放事件。
如“显示”部分中有关“本机显示”的说明,您还应该检查verificationParameters
会话开始事件中是否正确传递了“本地显示” 。
您应该检查所有必需的视频事件是否在正确的时间以正确的顺序触发。这是start
事件输出的示例:
{
"adSessionId": "A811D9AE-947E-49FB-9572-BCB13B0F9FC8",
"timestamp": 1515021630122,
"type": "start",
"data": {
"duration": 30.022,
"videoPlayerVolume": 1,
"deviceVolume": 0.6
}
}
如果可以将视频播放器静音,请确保使用适当的值记录了适当的音量更改事件。检查"data"
字典中的设备和播放器音量值。
{
"adSessionId": "A811D9AE-947E-49FB-9572-BCB13B0F9FC8",
"data": {
"deviceVolume": 0.06666667,
"videoPlayerVolume": 1
},
"timestamp": 1515699112351,
"type": "volumeChange"
}
请注意,并非每个回放事件都将包含data属性。例如:
{
"adSessionId": "A811D9AE-947E-49FB-9572-BCB13B0F9FC8",
"timestamp": 1515021638157,
"type": "firstQuartile"
}
了解 工作生活心情记忆 的更多信息
Subscribe to get the latest posts sent to your email.