Cordova插件之友盟统计

来源:互联网 发布:郴州市2016年财政数据 编辑:程序博客网 时间:2024/05/17 22:29

本插件包括友盟的基本统计功能,也就是只需在 didFinishLaunchingWithOptions中写的东西还包括深度统计,统计每个页面的情况

本项目时ionic的项目
在插件中监听每个页面的跳转太为难了,但是在app.js 中就能更具angular 的路由机制来调用插件中的不同方法,来实现页面的统计

具体代码(app.js中的):

if(window.cordova && window.cordova.plugins && window.cordova.plugins.umeng){
//初始化友盟插件
var umengInitResult = window.cordova.plugins.umeng.init();
//设置友盟统计Debug模式,上线时候需要改为false
var umengDebugModeResult = window.cordova.plugins.umeng.setDebugMode(true);
//添加Resume监听事件
$ionicPlatform.on(‘resume’, function(data){
window.cordova.plugins.umeng.onResume();

            });            //添加Pause监听事件            $ionicPlatform.on('pause', function (data) {            window.cordova.plugins.umeng.onPause();            });            $rootScope.$on('$stateChangeSuccess',function(event, toState, toParams, fromState, fromParams){              var fromUrl = fromState.url;              if(fromUrl.indexOf("/:") > 0){                fromUrl = fromUrl.substring(0, fromUrl.indexOf("/:"));              }              var toUrl = toState.url;              if(toUrl.indexOf("/:") > 0){                toUrl = toUrl.substring(0, toUrl.indexOf("/:"));              }              console.log("from url: " + fromUrl + " to url: " + toUrl);              var pageEndResult = window.cordova.plugins.umeng.onPageEnd(fromUrl);              var pageStartResult = window.cordova.plugins.umeng.onPageStart(toUrl);            });          }

通过$stateChangeSuccess 来判断是从那个页面到哪个页面

当用户退出app的时候 window.cordova.plugins.umeng.onKillProcess();

具体的插件中的代码是 .h
static BOOL isInit = false;

@interface UmengAnalyticsPlugin : CDVPlugin {
// Member variables go here.
}

  • (void)init:(CDVInvokedUrlCommand*)command;
  • (void)setDebugMode:(CDVInvokedUrlCommand*)command;
  • (void)onPause:(CDVInvokedUrlCommand*)command;
  • (void)onResume:(CDVInvokedUrlCommand*)command;
  • (void)pageStart:(CDVInvokedUrlCommand*)command;
  • (void)pageEnd:(CDVInvokedUrlCommand*)command;
  • (void)pageEvent:(CDVInvokedUrlCommand*)command;
    @end

.m中代码

@implementation UmengAnalyticsPlugin

  • (void)initMobClick{
    if(!isInit){
    NSLog(@”初始化友盟统计插件”);
    isInit = true;
    CDVViewController* viewController = (CDVViewController*)self.viewController;
    //读取配置文件中的 友盟 appId key=umengiosappid
    NSString* umengAppId = [viewController.settings objectForKey:@”umengiosappid”];
    NSLog(@”友盟AppId:%@”, umengAppId);
    //读取配置文件中的 友盟 channelId key=umengioschannel
    NSString* umengChannel = [viewController.settings objectForKey:@”umengioschannel”];
    [MobClick startWithAppkey:umengAppId reportPolicy:BATCH channelId:umengChannel];
    }
    }

  • (void)init:(CDVInvokedUrlCommand*)command
    {
    [self initMobClick];
    }

  • (void)setDebugMode:(CDVInvokedUrlCommand*)command
    {
    NSString* debug = [command.arguments objectAtIndex:0];
    NSLog(@”友盟调试模式:%@”, debug);
    if([@”1” isEqual: debug])
    {
    [MobClick setLogEnabled:YES];
    }else{
    [MobClick setLogEnabled:NO];
    }
    }

  • (void)onPause:(CDVInvokedUrlCommand*)command;
    {
    NSLog(@”App Pause!”);
    }

  • (void)onResume:(CDVInvokedUrlCommand*)command;
    {
    NSLog(@”App Resume!”);
    }

  • (void)pageStart:(CDVInvokedUrlCommand*)command
    {
    [self initMobClick];
    NSString* pageName = [command.arguments objectAtIndex:0];
    NSLog(@”%@ - 页面开始”, pageName);
    [MobClick beginLogPageView:pageName];
    }

  • (void)pageEnd:(CDVInvokedUrlCommand*)command
    {
    [self initMobClick];
    NSString* pageName = [command.arguments objectAtIndex:0];
    NSLog(@”%@ - 页面结束”, pageName);
    [MobClick endLogPageView:pageName];
    }

-(void)pageEvent:(CDVInvokedUrlCommand*)command
{
[self initMobClick];
NSString* eventId = [command.arguments objectAtIndex:0];
[MobClick event:eventId];
}

@end

插件里面的东西没啥所说的,关键是要知道从app.js中根据路由状态的改变来调用插件中的方法,从而实现页面的统计,如果你只是需要统计一个Umeng启动的时候的方法
[MobClick startWithAppkey:umengAppId reportPolicy:BATCH channelId:umengChannel];
那么你完全没有必要搞的这么复杂,写一个运行时候appdelegate的类目就OK了,可以仿照我在百度地图的插件中写的一个类目来,完全一模一样。

1 0
原创粉丝点击