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();
通过$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了,可以仿照我在百度地图的插件中写的一个类目来,完全一模一样。
本项目时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了,可以仿照我在百度地图的插件中写的一个类目来,完全一模一样。
相关文章推荐
- java自动生成验证码插件-kaptcha
- jQuery菜单插件用法实例
- 加载flash9.ocx出现错误的解决方法
- jquery实现的代替传统checkbox样式插件
- 10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
- 推荐40个非常优秀的jQuery插件和教程【系列三】
- Node.js插件的正确编写方式
- 推荐十款免费 WordPress 插件
- 使用JavaScript开发IE浏览器本地插件实例
- 推荐25个超炫的jQuery网格插件
- 纯JavaScript实现的分页插件实例
- JQuery插件jcarousellite的参数中文说明
- jQuery插件kinMaxShow扩展效果用法实例
- jQuery插件制作之全局函数用法实例
- 精心收集的jQuery常用的插件1000
- 40款非常棒的jQuery 插件和制作教程(系列二)
- 40款非常有用的 jQuery 插件推荐(系列一)
- 制作高质量的JQuery Plugin 插件的方法
- 经典海量jQuery插件 大家可以收藏一下
- jQuery图片播放8款精美插件分享