iOS开发:通过Runtime实现友盟页面数据统计功能

iOS开发:通过Runtime实现友盟页面数据统计功能_第1张图片
UM.png

上面这张图片是友盟统计官网的截图,由此可知,如果想要实现友盟的页面统计功能,需要在每个VC中添加viewWillAppearviewWillDisappear方法,然后再相应的实现友盟统计的API;当然,如果你的工程中有一个基类,只需要在基类中实现一次也是可以的;

如果说项目中没有基类或者是基类不唯一,也不想多次实现这两个方法,我们可以使用Runtime,动态的截取UIViewController的上述两个方法,只需要实现一次即可;


在工程中创建一个UIViewController的Category,然后通过Runtime动态添加两个方法,分别替代viewWillAppearviewWillDisappear方法,我使用的是RuntimeKit,有兴趣的可以了解下;

在创建的UIViewController+UMTool.m下,实现下面的方法:

#import "UIViewController+UMTool.h"
#import 
#import "RuntimeKit.h"

@implementation UIViewController (UMTool)

+ (void)load
{
    //创建新的viewWillAppear方法
    [RuntimeKit methodSwap:[self class] firstMethod:@selector(viewWillAppear:) secondMethod:@selector(sy_viewWillAppear:)];
    //创建新的viewWillDisappear方法
    [RuntimeKit methodSwap:[self class] firstMethod:@selector(viewWillDisappear:) secondMethod:@selector(sy_viewWillDisappear:)];
}

//新的viewWillAppear方法
- (void)sy_viewWillAppear:(BOOL)animated
{
    [self sy_viewWillAppear:animated];
    //开始友盟页面统计
    [MobClick beginLogPageView:[RuntimeKit fetchClassName:[self class]]];
    
    //当然这里也可以使用self.title作为页面的名称,这样在友盟后台查看的时候更加方便些
    //[MobClick beginLogPageView:self.title];
}

//新的viewWillDisappear方法
- (void)sy_viewWillDisappear:(BOOL)animated
{
    [self sy_viewWillDisappear:animated];
    //结束友盟页面统计
    [MobClick endLogPageView:[RuntimeKit fetchClassName:[self class]]];
    
    //当然这里也可以使用self.title作为页面的名称,这样在友盟后台查看的时候更加方便些
    //[MobClick endLogPageView:self.title];
}

@end
iOS开发:通过Runtime实现友盟页面数据统计功能_第2张图片
效果图.png

希望对有所困惑的你提供一些小小的帮助!
Demo地址

你可能感兴趣的:(iOS开发:通过Runtime实现友盟页面数据统计功能)