美文网首页iOS新手学习ios
iOS开发:通过Runtime实现友盟页面数据统计功能

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

作者: First灬DKS | 来源:发表于2017-03-15 10:48 被阅读1245次
    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地址

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/yaqlnttx.html