本插件包括友盟的基本统计功能,也就是只需在 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了,可以仿照我在百度地图的插件中写的一个类目来,完全一模一样。