我们一直在开发联属网络营销系统,并希望以某种方式检测已编译的 SWF 广告是否实现了 clickTAG。有没有办法自动化这个过程?
5 回答
您可以使用像 www.adbannerking.com 这样的点击标签检查器,它会显示 SWF 文件中的点击标签。该软件甚至允许您相应地更改点击标签,而无需源文件 (.fla)。同时,您可以快速同时检查/更改 x 个 SWF 文件。
这是一个复杂的问题。
建议的解决方案仅解决不正确的 clicktag 的情况(例如 clickTAG 与 clickTag)。以下是其他潜在问题: - 没有可点击层,没有点击标签代码 - 带有硬编码 URL 的可点击层 - 可点击层仅覆盖横幅的一小部分 - AS3 中的上述所有内容(flasm 仅支持 AS2)
当我调试 flash 横幅时,我使用 flasm (http://www.nowrap.de/flasm.html windows+linux) 来反编译 swf 文件。您既可以将输出输出到控制台(-d),也可以将其转储到文件中:
$ flasm -d 文件.swf > out.txt
然后在文件/输出中搜索 clickTag/clickTAG。
- 需要执行权限。
http://adopstools.net允许您提交 swf 并检查它的点击标签以及其他内容
如果我正确理解了您需要做什么,则应该可以通过加载广告来构建半自动测试 swf,然后模拟对其显示树中所有内容的点击。
您可以使用 URLRequest 的 data 属性将参数传递给加载的 swf,如下所示:
var loader:Loader = new Loader();
var req:URLRequest = new URLRequest("ad.swf");
var clickTagURL:String = "http://www.example.com";
req.data = new URLVariables("clickTAG=" + clickTagURL + "&clickTag=" + clickTagURL + "&clicktag=" + clickTagURL);
loader.load(req);
(虽然您需要在浏览器中或独立运行它,因为 Flash IDE 抱怨查询字符串参数。)
然后您可以递归地遍历触发点击的显示列表:
testClicks(loader.content as DisplayObjectContainer);
function testClicks(target:DisplayObjectContainer):void {
var numC:uint = target.numChildren;
for (var i:uint = 0; i < numC; i++) {
target.getChildAt(i).dispatchEvent(new MouseEvent(MouseEvent.CLICK));
if (target.getChildAt(i) is DisplayObjectContainer) {
testClicks(target.getChildAt(i) as DisplayObjectContainer);
}
}
}
如果您将包含测试广告的文件夹设置为受信任,或者使用调试播放器,您将能够查看是否有任何这些点击导致广告打开 URL。
它可能值得触发MOUSE_DOWN
,MOUSE_UP
如果开发人员使用了它们,显然这不会揭示像 jdangu 提到的点击区域非常小的问题,但希望它作为基本测试有用。