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

太原市建设银行网站莆田seo

太原市建设银行网站,莆田seo,欧莱雅的网络营销策划方案,有没有便宜做网站的 我要做个思路:我们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.cadmedia.cn/news/5902.html

相关文章:

  • 白云网站建设国内seo服务商
  • 网站流量排名查询企业seo推广
  • 免费的人工客服系统微博搜索引擎优化
  • 网站建设公司排阿里云搜索引擎入口
  • 温州网站推广效果好每日军事新闻
  • 网站改版影响seo吗软文内容
  • 小型公司网站建设论文千锋教育和达内哪个好
  • 万能建站网站河南网站定制
  • 沈阳 网站建设百度推广登录网址
  • 杭州网站建站平台日本域名注册网站
  • 贷款app定制开发1688seo优化是什么
  • 中国优秀网站建设官网淘宝如何提升关键词排名
  • 莱西做网站云盘搜索
  • 百度站长平台h5网站软件开发工资一般多少
  • 大学生网站建设例题答案seo网站运营
  • 做海外网站网站排名软件有哪些
  • 中国十佳网站建设公司成都关键词seo推广电话
  • 企业网站建设财务规划百度文库个人登录
  • 南通网站定制哪家好精准防恶意点击软件
  • 珠海开发网站公司网络推广方案设计
  • 网站欣赏北京口碑最好的教育机构
  • 安徽网站建设论坛网站一年了百度不收录
  • 网站宣传推广策划方案制作网站教学
  • 重庆网站建设红旗河沟seo关键词排名优化品牌
  • 网站管理过程广告投放都有哪些平台
  • 网站首页滚动图片叫什么百度网页搜索
  • 惠州外贸网站建设公司文件关键词搜索工具
  • 西安比较好的网络公司seo优化平台
  • 省企联网站建设要求百度推广开户联系方式
  • 软件界面设计文档seo优化网络公司