全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

iOS通过Runtime实现友盟统计的实例代码

在友盟官网可以看到相应的步骤,申请appkey,导入SDK,然后在AppDelegate里面写入相应的代码,下面就是关键的代码:

实现页面的统计需要在每个UIViewController中配对调用如下方法:

  - (void)viewWillAppear:(BOOL)animated
  {
    [super viewWillAppear:animated];
    [MobClick beginLogPageView:@"PageOne"];//("PageOne"为页面名称,可自定义)
  }
- (void)viewWillDisappear:(BOOL)animated 
  {
    [super viewWillDisappear:animated];
    [MobClick endLogPageView:@"PageOne"];
  }

几年之前做过这个,那时候才刚开始做iOS,就按照这个文档在每一个UIViewController里面写了这个方法,现在看来真是太low了。

这次又做这个友盟统计,就想起来用runtime解决这个问题。

在工程中创建一个UIViewController的Category,然后通过Runtime动态添加两个方法,分别替代viewWillAppear和viewWillDisappear方法。这样就不需要在每一个 UIViewController写这段代码了。

新建一个分类:

UIViewController+Statistics.h

//
// UIViewController+Statistics.h
// TongYuanHospital
//
// Created by ZSP on 2017/6/16.
// Copyright © 2017年 ZSP. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface UIViewController (Statistics)

@end

UIViewController+Statistics.m

//
// UIViewController+Statistics.m
// TongYuanHospital
//
// Created by ZSP on 2017/6/16.
// Copyright © 2017年 ZSP. All rights reserved.
//

#import "UIViewController+Statistics.h"

@implementation UIViewController (Statistics)


+ (void)load {

  //原本的viewWillApper方法
  Method viewWillAppear = class_getInstanceMethod(self, @selector(viewWillAppear:));

  //需要替换成能够输入日志的viewWillAppear
  Method logViewWillAppear = class_getInstanceMethod(self, @selector(logViewWillAppear:));


  //原本的viewWillDisappear方法
  Method viewWillDisappear = class_getInstanceMethod(self, @selector(viewWillDisappear:));
  //需要替换成能够输入日志的viewWillDisappear
  Method logviewWillDisappear = class_getInstanceMethod(self, @selector(logviewWillDisappear:));

  //两方法进行交换
  method_exchangeImplementations(viewWillAppear, logViewWillAppear);
  method_exchangeImplementations(viewWillDisappear, logviewWillDisappear);

}
-(void)logViewWillAppear:(BOOL)animated
{
  [self logViewWillAppear:animated];  
  NSString *selfClass = NSStringFromClass([self class]);
  [MobClick beginLogPageView:selfClass];
  //当然这里也可以使用self.title作为页面的名称,这样在友盟后台查看的时候更加方便些
  //[MobClick endLogPageView:self.title];  
}

-(void)logviewWillDisappear:(BOOL)animated
{
  [self logviewWillDisappear:animated];
  NSString *selfClass = NSStringFromClass([self class]);
  [MobClick endLogPageView:selfClass];
}


@end

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# iOS  # 友盟统计  # iOS实现友盟统计  # 总结iOS中runtime的使用  # iOS runtime forwardInvocation详解及整理  # iOS使用runtime修改文本框(TextField)的占位文字颜色  # iOS runtime动态添加方法示例详解  # IOS Object-C 中Runtime详解及实例代码  # IOS 中runtime使用方法整理  # iOS利用Runtime实现友盟页面数据统计的功能示例  # iOS runtime知识梳理  # iOS中Runtime的几种基本用法记录  # iOS Runtime详解(新手也看得懂)  # 替换成  # 就不  # 几年  # 这段  # 可以看到  # 做过  # 那时候  # 写了  # 自定义  # 在每一个  # 可以使用  # 就想  # 真是太  # 创建一个  # 官网  # 解决这个问题  # 大家多多  # 新建一个  # 来用  # 文档 


相关文章: 高防服务器租用指南:配置选择与快速部署攻略  Swift开发中switch语句值绑定模式  如何自定义建站之星模板颜色并下载新样式?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  制作旅游网站html,怎样注册旅游网站?  如何通过宝塔面板实现本地网站访问?  如何通过wdcp面板快速创建网站?  黑客如何通过漏洞一步步攻陷网站服务器?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  如何在企业微信快速生成手机电脑官网?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  c++怎么用jemalloc c++替换默认内存分配器【性能】  建站之星导航如何优化提升用户体验?  如何通过主机屋免费建站教程十分钟搭建网站?  建站之星展会模板:智能建站与自助搭建高效解决方案  郑州企业网站制作公司,郑州招聘网站有哪些?  官网网站制作腾讯审核要多久,联想路由器newifi官网  建站OpenVZ教程与优化策略:配置指南与性能提升  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  建站之星北京办公室:智能建站系统与小程序生成方案解析  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  建站之星如何开启自定义404页面避免用户流失?  如何快速搭建高效可靠的建站解决方案?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  建站主机CVM配置优化、SEO策略与性能提升指南  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  如何快速查询网址的建站时间与历史轨迹?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  php json中文编码为null的解决办法  北京网站制作网页,网站升级改版需要多久?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  seo网站制作优化,网站SEO优化步骤有哪些?  小型网站制作HTML,*游戏网站怎么搭建?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  网站制作模板下载什么软件,ppt模板免费下载网站?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  如何获取免费开源的自助建站系统源码?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  如何用西部建站助手快速创建专业网站?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何配置WinSCP新建站点的密钥验证步骤?  如何做网站制作流程,*游戏网站怎么搭建?  如何在阿里云通过域名搭建网站?  如何快速生成ASP一键建站模板并优化安全性?  如何快速生成专业多端适配建站电话?  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  已有域名和空间如何搭建网站?  如何批量查询域名的建站时间记录?  如何用景安虚拟主机手机版绑定域名建站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。