当前位置: 首页 > wzjs >正文

广州 海珠 建网站使用最佳搜索引擎优化工具

广州 海珠 建网站,使用最佳搜索引擎优化工具,公众号做微网站,怎么发布自己的网站思路:我们HOOK UIControl的 addtarget:action:forControlEvents方法,交换UIControl的 addtarget:action:forControlEvents 方法的实现, 在交换的方法中添加原来响应的同时,再添加一个埋点响应,该响应方法实现了点击埋点…

思路:我们HOOK UIControl的 addtarget:action:forControlEvents方法,交换UIControl的 addtarget:action:forControlEvents
方法的实现, 在交换的方法中添加原来响应的同时,再添加一个埋点响应,该响应方法实现了点击埋点操作,同时要添加一个标记为,记录我们添加过
点击埋点响应了,防止外部再次添加响应的时候,我们这里重复添加埋点响应,同时,还要hook removeTarget:action:forControlEvents方法,在该方法中记录我们绑定的点击处理次数,当次数大于0时,进行埋点上报

一下是我们的实现代码

static const void *lbmonitorActionNameKey = "monitorActionNameKey";
static const void *lbSenderAction = "lbSenderAction";
static const void *lbTabButtonId = "lbTabButtonId";
static const void *lbClickActionCounts = "lbClickActionCounts";@implementation UIControl (LB)
@dynamic actionName;+ (void)load
{lbinstanceMethod_fastExchangeImplementations([self class], @selector(addTarget:action:forControlEvents:), [self class], @selector(lbtracker_addCagegoryTarget:action:forControlEvents:));instanceMethod_fastExchangeImplementations([self class], @selector(removeTarget:action:forControlEvents:), [self class], @selector(lbtracker_removeCagegoryTarget:action:forControlEvents:));
}- (void)lbtracker_addCagegoryTarget:(id)targetaction:(SEL)actionforControlEvents:(UIControlEvents)controlEvents
{// 自动化埋点:只针对”点击“进行埋点,一次点击一次上报,且先埋点后业务。if ([self isKindOfClass:[UITextField class]] == NO && controlEvents == UIControlEventTouchUpInside) {// 避免:业务添加多次点击回调时,触发多次埋点或者点击处理顺序错乱。NSNumber *hookClickMethod = objc_getAssociatedObject(self, "lb_track_click");NSLog(@"哈哈哈哈哈这里的hookClickMethod%@ %@", self, hookClickMethod);if (!hookClickMethod) {objc_setAssociatedObject(self, "lb_track_click", @(1), OBJC_ASSOCIATION_RETAIN);[self setSenderAction:NSStringFromSelector(action)];[self autotracker_addCagegoryTarget:selfaction:@selector(autotracker_monitorAction:forEvent:)forControlEvents:controlEvents];}// 记录控件绑定点击处理次数,当次数大于0时,进行点击埋点上报。NSArray *actionNames = [self actionsForTarget:target forControlEvent:controlEvents];NSLog(@"哈哈哈哈哈这里这里的数量数量%@ %@", actionNames, NSStringFromSelector(action));if (actionNames.count == 0 || ![actionNames containsObject:NSStringFromSelector(action)]) {NSLog(@"这里的原始数量%ld %@", [self lbtracker_clickActionCounts], self);[self setAutotracker_clickActionCounts:[self autotracker_clickActionCounts] + 1];}}[self autotracker_addCagegoryTarget:targetaction:actionforControlEvents:controlEvents];
}- (void)lbtracker_removeCagegoryTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents
{// 减少控件绑定点击处理次数,当次数大于0时,进行点击埋点上报。NSArray *actionNames = [self actionsForTarget:target forControlEvent:controlEvents];if (actionNames.count > 0 && [actionNames containsObject:NSStringFromSelector(action)]) {APLogInfo(@"AutoTrack", @"Click %@ remove T", NSStringFromSelector(action));[self setlbTracker_clickActionCounts:[self lbtracker_clickActionCounts] - 1];}[self lbtracker_removeCagegoryTarget:target action:action forControlEvents:controlEvents];
}- (void)lbtracker_monitorAction:(UIControl *)sender forEvent:(UIEvent *)event
{LBLog(@"lbTrack", @"Click %@ counts = %@", self.senderAction, @([self lbtracker_clickActionCounts]));if (self.skipTrack || 0 == [self lbtracker_clickActionCounts]) {return;}[self lbtracker_parseClickPoint:event];//执行埋点操作
}- (NSString *)actionName {return objc_getAssociatedObject(self, monitorActionNameKey);
}- (void)setActionName:(NSString *)monitorActionName{objc_setAssociatedObject(self, monitorActionNameKey,monitorActionName,OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}- (NSString *)senderAction {return objc_getAssociatedObject(self, KSenderAction);
}- (void)setSenderAction:(NSString *)senderAction{objc_setAssociatedObject(self, KSenderAction,senderAction,OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}- (NSString *)tabButtonId {return objc_getAssociatedObject(self, KTabButtonId);
}- (void)setTabButtonId:(NSString *)tabButtonId {objc_setAssociatedObject(self, KTabButtonId, tabButtonId, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}- (NSInteger)autotracker_clickActionCounts
{NSNumber *counts = objc_getAssociatedObject(self, LBClickActionCounts);return [counts integerValue];
}- (void)setLBtracker_clickActionCounts:(NSInteger)count
{NSLog(@"这里的数量这里的数量%ld", count);objc_setAssociatedObject(self, LBClickActionCounts, @(count), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}- (void)lbtracker_parseClickPoint:(UIEvent *)event
{// 获取点击位置坐标CGPoint clickPoint;UITouch *touch = [event touchesForView:self].anyObject;if (touch) {clickPoint = [touch locationInView:self];}if ([self respondsToSelector:@selector(lbLogModel_auk)]) {LBLogModel *model = [self performSelector:@selector(lbLogModel_auk)];model.clickPoint = clickPoint;}
}
http://www.dtcms.com/wzjs/211661.html

相关文章:

  • 新网站建设的感想seo优化诊断工具
  • 做视频网站多大服务器谷歌下载
  • 安徽建筑大学学工在线网站长沙网站定制公司
  • 酷站欣赏飓风seo刷排名软件
  • 宝塔自助建站系统源码seo优化方案案例
  • 青岛大学网站建设百度联盟是什么
  • 电脑怎样做幻灯片的网站精准营销的典型案例
  • wordpress评论推广白杨seo课程
  • 东莞做网站哪家公司好网站关键词优化推广
  • 什么网站做推广比较好谈谈对seo的理解
  • 网站管理方案如何在百度上添加自己的店铺
  • 怎么做自己的优惠券网站网站的优化公司
  • 有什么超好用的做简历的网站友情链接交换的方法
  • 外网有哪些有趣的网站对网络推广的理解
  • https下直接安装wordpress百度推广seo
  • 考试类网站如何做今日足球赛事推荐
  • 做高级电工题的网站抖音关键词排名系统
  • 各大b2b网站分析网站运营推广
  • 网站子站怎么做的怎么联系百度推广
  • 网站logo怎么做才清晰咸阳seo
  • WordPress区块的大小百度seo快速
  • 北京网站设计成功a刻百度快照在哪里找
  • 做自动化设备哪个网站百度收录批量提交入口
  • 山东做网站建设的好公司不屏蔽的国外搜索引擎
  • 自己做钓鱼网站seo关键词搜索优化
  • 北京平台网站建设创建免费网站
  • 红酒哪个网站做的好谷歌广告优化师
  • 个人博客网站制作教程运营商大数据精准营销获客
  • 西安公司网站费用seo优化技术厂家
  • 可以用 我爱乳房做网站名不东莞网站公司哪家好