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

UM.png

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

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


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

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

#import "UIViewController+UMTool.h"
#import <UMMobClick/MobClick.h>
#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
效果图.png

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容