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

 更新时间:2017年06月26日 11:31:38   作者:奋斗的七月  
本篇文章主要介绍了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解析HTMl标签以及开发中的一些坑

    浅谈iOS解析HTMl标签以及开发中的一些坑

    这篇文章主要介绍了浅谈iOS解析HTMl标签以及开发中的一些坑,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • iOS 10自定义相机功能

    iOS 10自定义相机功能

    这篇文章主要为大家详细介绍了iOS 10自定义相机功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • 使用ARM汇编破解iOS程序基础知识分享

    使用ARM汇编破解iOS程序基础知识分享

    最近对iOS逆向工程很感兴趣。但查到的资料中都涉及到有ARM汇编,但都只是很泛地用到,并没有对iOS上的ARM汇编进行比较详细的讲解。因此,经过一系列的学习对iOS下的ARM有了一定的理解。在此打算用几篇文字记录下来, 限于本人水平有限,如有错误请不吝赐教。
    2015-11-11
  • 详解适配iOS10 的相关权限设置

    详解适配iOS10 的相关权限设置

    在最新版本的iOS10系统中,如果你的项目中访问了隐私数据,比如:相机、相册、录音、定位、联系人等等。涉及到权限问题,本篇文章主要介绍了适配iOS10 的相关权限设置,有兴趣的可以了解一下。
    2016-12-12
  • ios利用正则表达式判断手机号码格式是否正确的实例

    ios利用正则表达式判断手机号码格式是否正确的实例

    下面小编就为大家分享一篇ios利用正则表达式判断手机号码格式是否正确的实例,具有很好的参考价值。希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • iOS tableView实现单选和多选的实例代码

    iOS tableView实现单选和多选的实例代码

    本篇文章主要介绍了iOS tableView实现单选和多选的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • 解决iOS11刷新tableview会出现漂移的现象

    解决iOS11刷新tableview会出现漂移的现象

    这篇文章主要介绍了解决iOS11刷新tableview会出现漂移的现象,需要的朋友可以参考下
    2017-10-10
  • iOS中的通知机制

    iOS中的通知机制

    网上经常说iOS的通知机制是使用了观察者模式,里面有两个角色,其一是poster(发送者),另一个是observer(接受信息的订阅者)。接下来通过本文给大家介绍iOS中的通知机制,感兴趣的朋友一起学习吧
    2016-04-04
  • iOS设置UIButton文字显示位置和字体大小、颜色的方法

    iOS设置UIButton文字显示位置和字体大小、颜色的方法

    这篇文章给大家分享了iOS如何设置UIButton的文字显示位置和字体的大小、颜色,文中给出了示例代码,相信对大家的学习和理解很有帮助,有需要的朋友们下面来一起看看吧。
    2016-09-09
  • IOS开发基础之二维数组详解

    IOS开发基础之二维数组详解

    这篇文章主要介绍了IOS开发基础之二维数组详解的相关资料,需要的朋友可以参考下
    2017-04-04

最新评论