一种轮播广告控制的方法
技术领域
本发明涉及网络广告信息推送技术领域,特别涉及一种轮播广告控制的方法。
背景技术
视频内广告投放中的轮播广告是指在某个资源的某个广告位下,在同一时间段内的多支广告轮流播放的情况。例如有三轮播广告位置,在同一天会有三个客户的广告轮流播放,第一个出现的广告是随机的,每刷新一次都会换一个广告,从而保证每一个广告的出现次数基本相同,从而保证广告效果。
但是在实际操作过程中,所涉及的轮播广告形式比较复杂,例如轮播广告中,各广告之间的播放策略根据广告主的预定要求,通常是按比例N/M,N为广告播放的此时,M为同一个用户刷新的次数。实现比例N/M有以下几点要求:
首先要求同一个用户刷新M次播放页时能固定播放N次某广告;同时还要求广告最终的播放次数占页面总体VV的N/M。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
视频内轮播广告算法当前存在几个技术难题,首先广告主在相同广告下的N/M要求中的M和N可能不一致,例如某广告主要求广告A按1/3的概率展示,另一广告主要求广告B按2/4的概率展示;其次,广告主可能会要求自己的广告尽量不能被连续播放;最后,目前的广告系统对这种广告投放的实现会依赖固定的广告位或者资源包的概念,这样会增加系统的复杂度和耦合度。
发明内容
为了解决上述技术问题,本发明提供一种轮播广告控制的方法,在达到广告主投放要求的情况下,极大地降低广告投放系统的各模块之前的耦合度,使轮播广告的投放更加合理。
本发明公开的一种轮播广告控制的方法,该方法包括以下步骤:
接收至少两个可投放的广告轮播数据请求;
将接收到的至少两个可投放的广告轮播数据请求分别按照广告位进行分组;
给分组后的每组广告同时分配固定的轮播序列和轮播数;
按照轮播序列和轮播数按需求对广告进行筛选播放。
进一步的,所述接收至少两个可投放的广告轮播数据请求之前还包括:
接收至少两个广告轮播数据请求,判断接收到的至少两个广告轮播数据请求是否符合可投放预设值标准,将不符合可投放预设值标准的广告轮播数据请求过滤掉。
进一步的,所述将接收到的至少两个可投放的广告轮播数据请求分别按照广告位进行分组具体包括:
将符合可投放预设值标准的多个广告中具有相同广告位的广告保存为一个CarouselCookie对象,该CarouselCookie对象作为该组的分组依据。
进一步的,所述轮播序列是指广告的播放序号,每个广告对应唯一的播放序号。
进一步的,所述轮播数表示同一个用户端对播放页刷新的次数,同一个用户端对播放页刷新时,cookie中的用户浏览历史信息还原为对象,该对象与广告的轮播序列进行匹配后;进行广告投放,并将更新后的对象序列化为字符串存为浏览器cookie。
进一步的,所述按照轮播序列和轮播数对广告进行筛选播放具体包括:
根据同一个用户端对播放页刷新的次数,选择这组广告中轮播序列命中播放序号的广告,更新命中播放序号的各组广告的当前轮数。
更进一步的,所述更新命中播放序号的各组广告的当前轮数具体包括:
将命中播放序号的各组广告的轮播数自增1,并按最大轮播数取模作为更新后的当前轮数,更新后的当先轮数表示这组广告下一轮播放的轮播序列。
进一步的,所述按照轮播序列和轮播数对广告进行筛选播放后,还包括:
服务器端根据分组后的广告过滤出待播放的广告列表。
进一步的,使用HashMap数据结构来保存广告分组后的关系,使用广告id作为键值来保存各组广告的轮播数据,其中,广告分组后的场景具体包括以下场景:
定义投放资源,投放资源可能是独立、交叉或者是包含关系;
定义广告投放,广告投放在相同或者不同的资源下;
定义广告位,广告位包括广告的类型和广告的位置。
进一步的,所述按照轮播序列和轮播数按需求对广告进行筛选播放之前还包括筛选校验的步骤,具体包括:
S1:获取广告所在的组;
S2:获取广告所在组的轮播序列;
S3:判断是否存在轮播序列;
S4:如果存在轮播序列,进入S6步骤;
S5:如果不存在轮播序列,初始化当前组广告的轮播序列和轮播数后,进入S6步骤;
S6:判断广告是否命中轮播数;
S7:命中轮播数后,选中该广告;
S8:无命中轮播数,结束该筛选校验的流程步骤。
与现有技术相比,本发明公开的技术方案具有以下优点:
首先,本发明提出的算法在完成广告主的基本要求上,灵活地把广告进行分组,以分组的广告作业key来生存和保存轮播序列,不依赖传统的资源包的概念,这样极大地提高了系统的灵活性,又能更大程度地保证了广告商的利益。
其次,从实现技术上讲,本发明提出了一种思想:定义了一种数据结构来对用户的广告浏览历史信息进行结构化描述,并提供了对该数据结构序列化和还原的方法。在广告投放时,cookie中的用户浏览历史信息还原为对象,然后用于广告匹配;在完成匹配工作进行广告投放时,再将更新后的对象序列化为字符串存为浏览器cookie,广告投放逻辑得到大大简化。
目前的广告系统对这种广告投放的实现会依赖固定的广告位或者资源包的概念,这样对会增加了系统的复杂度和耦合度。本发明提出的一种轮播广告控制方法,在达到广告主投放要求的情况下,极大地降低广告投放系统的各模块之前的耦合度,使轮播广告的投放控制更加合理有效。
附图说明
图1为本发明实施例一中的一种轮播广告控制的方法流程图;
图2为本发明实施例一中的筛选校验的方法流程图;
图3为本发明实施例一中广告分组后的其中一个场景图;
图4为本发明实施例一中广告分组后的另一个场景图;
图5为本发明实施例一中广告分组后的另一个场景图;
图6为本发明实施例一中广告轮播序列示意图;
图7为本发明实施例一中对CarouselCookie对象序列化后的结果示意图;
图8为本发明实施例二中初始化轮播数据示意图;
图9为本发明实施例三中初始化轮播数据示意图;
图10为本发明实施例三中用户轮播cookie示意图。
具体实施方式
下面根据附图对本发明实施例的具体实施方式进行详细描述:
实施例一:
如图1所示,为本发明实施例的系统架构图,主要包括以下部分:
1、本发明实施例用到的基本协议:
浏览器Cookie的读写协议、http协议等。
该方法具体包括以下步骤:
S101:接收至少两个可投放的广告轮播数据请求;
接收至少两个广告轮播数据请求,判断接收到的至少两个广告轮播数据请求是否符合可投放预设值标准,将不符合可投放预设值标准的广告轮播数据请求过滤掉,将符合可投放预设值标准的多个广告中具有相同广告位的广告保存为一个CarouselCookie对象,该CarouselCookie对象作为该组的分组依据。
其中,CarouselCookie数据结构的具体内容如表1所示:
表1:
表1中各组成元素的含义如下:
1.adPos:这组广告轮播的广告位,如前贴1或暂停等等,为整型数(Integer);
2.ad与seqs:表示这组广告中各广告所对应的播放序列。ad为广告的ID,seqs为列表,保存了广告的播放序列,ad和seqs中的属性都为整型数。具体结构为HashMap<Integer,List<Integer>>;
3.Lun:当前这组广告的轮播数,表示用户所观看视频的次数,为整型数,数值范围是1至最大轮播数。
S102:将接收到的至少两个可投放的广告轮播数据请求分别按照广告位进行分组;
S103:给分组后的每组广告同时分配固定的轮播序列和轮播数;
所述轮播序列是指广告的播放序号,每个广告对应唯一的播放序号;所述轮播数表示同一个用户端对播放页刷新的次数。
如图6所示,生成轮播序列的过程如下:
处理广告请求并得到广告分组后,对各组内的广告按照广告的预定要求分配轮播序列,假设广告A的投放需求为N1/M1,B的投放需求为N2/M2。
1.首先求M1和M2的最小公倍数M,则:
N1/M1=N1*(M/M1)/M;
N1/M1=N2*(M/M2)/M。
2.分别分配组内各广告的序列
首先为这组广告生成一个最大长度为M的数组,保存着1至M的整型数,为某广告生成序列时,随机生成第一个序列L,剩下的序列长度间隔1获得序号,最终得到N1*(M/M1)个序号作为广告的轮播序列。如图6所示为广告A和B在投放需求为1/2和1/3时所分配的轮播序列。
轮播数表示同一个用户端对播放页刷新的次数,同一个用户端对播放页刷新时,cookie中的用户浏览历史信息还原为对象,该对象与广告的轮播序列进行匹配后;进行广告投放,并将更新后的对象序列化为字符串存为浏览器cookie。
S104:按照轮播序列和轮播数按需求对广告进行筛选播放。
根据同一个用户端对播放页刷新的次数,选择这组广告中轮播序列命中播放序号的广告,更新命中播放序号的各组广告的当前轮数。
所述更新命中播放序号的各组广告的当前轮数具体包括:
将命中播放序号的各组广告的轮播数自增1,并按最大轮播数取模作为更新后的当前轮数,更新后的当先轮数表示这组广告下一轮播放的轮播序列。
为各组广告生成轮播序列和轮播数后,每个用户的广告轮播序列将保持不变,只需要更新各组广告的轮播数即可。假设某组广告的轮播数为Lun,最大轮播数为M,则:
Lun = Lun%M + 1。
每个用户的客户端请求广告时,服务器都会获取并更新该用户观看该广告的历史轮播信息,这些信息是以CarouselCookie数据结构存放在服务器端的,当CarouselCookie被更新后,广告系统将CarouselCookie对象序列化为一个字符串,然后通过向用户浏览器写cookie的方式将这个字符串存入用户浏览器端。图7展示了对CarouselCookie对象序列化后的结果。
所述按照轮播序列和轮播数对广告进行筛选播放后,还包括:
服务器端根据分组后的广告过滤出待播放的广告列表。
使用HashMap数据结构来保存广告分组后的关系,使用广告id作为键值来保存各组广告的轮播数据,其中,广告分组后的场景具体包括以下场景:
定义投放资源,投放资源可能是独立、交叉或者是包含关系;
定义广告投放,广告投放在相同或者不同的资源下;
定义广告位,广告位包括广告的类型和广告的位置。
广告列表中的广告并不是一定可以被选中,分组的目的是将这些等选择的广告进行分类,各广告的播放顺序在相应的分组里进行。
其中,图3、图4、图5描述了广告投放和用户观看视频时3个不同的场景。
定义投放资源:{S1、S2、S3},投放资源可能是独立、交叉或者是包含关系;
定义广告投放:{A、B、C、D},广告可能投放在不同的资源下,广告A、B、C投放在视频资源的前贴1,广告C投放在前贴2。
定义广告位:{2, 3, 9, 20, 7…},表示前贴1、前贴2、前贴3、前贴4、角标等。
使用HashMap数据结构来保存广告分组后的关系,HashMap<Integer, List<Integer>>,表示:
{广告位->[广告ID]}。
如图3所示,
用户在观看S1时,通过内容定向得到广告A和B,最终的分组关系为:{ 2->[A, B]};
用户在观看S2时,通过内容定向得到广告C和D,最终的分组关系为:{ 2->[C] ,3->[D] };
如图4所示,
用户在观看S1中非S3内容时,通过内容定向得到广告A和B,最终的分组关系为
{ 2->[A, B] };
用户在观看S2中非S3内容时,通过内容定向得到广告D,最终的分组关系为
{ 3->[D] };
用户在观看S3时,通过内容定向得到广告A、B、C、D,最终的分组关系为
{ 2->[A, B, C], 3->[ D] };
如图5所示,
用户在观看S1中非S2资源内容时,通过内容定向得到广告A、B,最终的分组关系为
{ 2->[A, B] };
用户在观看S2时,通过内容定向得到广告A、B、C,最终的分组关系为
{ 2->[A, B, C] };
通过上述按广告位对广告进行分组之后,广告只在的组内建立与各广告的轮播关系,各组之间的轮播关系相互不影响。
为各组广告分配轮播序列的同时,也需为各组广告分配一个轮播数,轮播数代表当前用户观看视频的次数。如图2所示,所述按照轮播序列和轮播数按需求对广告进行筛选播放之前还包括筛选校验的步骤,筛选校验的方法具体包括以下步骤:
S1:获取广告所在的组;
S2:获取广告所在组的轮播序列;
S3:判断是否存在轮播序列;
S4:如果存在轮播序列,进入S6步骤;
S5:如果不存在轮播序列,初始化当前组广告的轮播序列和轮播数后,进入S6步骤;
S6:判断广告是否命中轮播数;
S7:命中轮播数后,选中该广告;
S8:无命中轮播数,结束该筛选校验的流程步骤。
实施例二:
北京某知名化妆品客户的广告A投放。
广告投放在某剧场的前贴1位置,并以2/10的机率播放广告,即用户刷新10页面能固定观看到2次该客户的广告。
如图8所示,当用户初次观看此广告时,系统为广告A生成轮播序列和轮播数,当轮播数从初始的6 变成3或者5时才会命中广告A,达到轮播的效果。
实施例三:
北京某化妆品品牌广告A1、A2、A3投放。
广告投放需求是:3个广告同时投放在一个剧场的前贴1,并且是全流量投放,投放比例分别是2/10,3/10,5/10。
如图9所示,当用户初次观看此广告时,系统为广告生成轮播序列和轮播数,用户第一次观看视频时,命中广告A3,更新轮播数据后并将数据保存到用户浏览器cookie中,下一次广告请求时再从cookie中获取历史数据,校验并筛选新一轮广告。图10为用户cookie中的轮播数据。
本发明,通过将广告分组,对分组的广告轮播序列的分配,并使用广告id作为键值来保存各组广告的轮播数据,极大了提高了逻辑的灵活性;
通过将用户信息进行结构化描述,并提供数据对象的序列化和序列化结果进行反序列化的方法,完成了用户信息的封装,这样既节约了有限的浏览器cookie资源,又简化了服务器端处理用户用信息的逻辑。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。