iOS通过Runtime实现友盟统计的实例代码
发布时间 - 2026-01-11 02:03:38 点击率:次在友盟官网可以看到相应的步骤,申请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详解(新手也看得懂)
# 替换成
# 就不
# 几年
# 这段
# 可以看到
# 做过
# 那时候
# 写了
# 自定义
# 在每一个
# 可以使用
# 就想
# 真是太
# 创建一个
# 官网
# 解决这个问题
# 大家多多
# 新建一个
# 来用
# 文档
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
Laravel如何使用模型观察者?(Observer代码示例)
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Laravel如何使用Collections进行数据处理?(实用方法示例)
JS碰撞运动实现方法详解
制作企业网站建设方案,怎样建设一个公司网站?
动图在线制作网站有哪些,滑动动图图集怎么做?
Laravel如何集成Inertia.js与Vue/React?(安装配置)
Python面向对象测试方法_mock解析【教程】
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
PHP正则匹配日期和时间(时间戳转换)的实例代码
手机网站制作与建设方案,手机网站如何建设?
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
Android中AutoCompleteTextView自动提示
如何在橙子建站上传落地页?操作指南详解
Laravel如何处理异常和错误?(Handler示例)
高防服务器租用指南:配置选择与快速部署攻略
Laravel观察者模式如何使用_Laravel Model Observer配置
如何快速上传建站程序避免常见错误?
用v-html解决Vue.js渲染中html标签不被解析的问题
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
,网页ppt怎么弄成自己的ppt?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
使用Dockerfile构建java web环境
米侠浏览器网页背景异常怎么办 米侠显示修复
焦点电影公司作品,电影焦点结局是什么?
如何用y主机助手快速搭建网站?
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
如何快速生成凡客建站的专业级图册?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
如何快速生成高效建站系统源代码?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
Laravel如何优化应用性能?(缓存和优化命令)
创业网站制作流程,创业网站可靠吗?
如何自定义建站之星网站的导航菜单样式?
Swift中循环语句中的转移语句 break 和 continue
高防服务器:AI智能防御DDoS攻击与数据安全保障
如何在七牛云存储上搭建网站并设置自定义域名?
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
如何实现建站之星域名转发设置?
详解MySQL数据库的安装与密码配置
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
JS实现鼠标移上去显示图片或微信二维码
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
JavaScript常见的五种数组去重的方式
nginx修改上传文件大小限制的方法
常州企业网站制作公司,全国继续教育网怎么登录?

