您的位置:首页 > Web前端 > AngularJS

Cordova插件之友盟统计

2015-10-19 11:04 561 查看
本插件包括友盟的基本统计功能,也就是只需在 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了,可以仿照我在百度地图的插件中写的一个类目来,完全一模一样。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  angular 插件 友盟