在友盟官网可以看到相应的步骤,申请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小时内与您取得联系。