友盟Umeng统计、更新功能使用教程 分类: Android安装及配置 2014-06-29 18:19 223人阅读 评论(0) 收藏
http://www.eoeandroid.com/thread-309340-1-1.html
友盟统计分析是移动终端上不可多得的佳品,鉴于在开发中使用到,随笔写下使用过程。
友盟SDK下载(包含统计功能和自动更新功能):
第一步:导入SDK
1. 解压文件,libs 文件夹内的文件直接复制到eclipse工程同名文件夹内;
2. 将 res 内所有文件复制到eclipse工程内,合并res资源,所有资源前缀均为 umeng_ 。
第二步:添加权限及相关信息
1. 使用统计功能添加如下权限:
1 |
< uses-permission
android:name = "android.permission.ACCESS_NETWORK_STATE" ></ uses-permission > |
2 |
< uses-permission
android:name = "android.permission.INTERNET" ></ uses-permission > |
3 |
< uses-permission
android:name = "android.permission.READ_PHONE_STATE" ></ uses-permission > |
4 |
< uses-permission
android:name = "android.permission.READ_LOGS"
/> <!--
用于读取日志信息 --> |
2. 使用统计功能添加如下信息:
1 |
< application >...... |
2 |
< meta-data
android:value = "MyAppKey"
android:name = "UMENG_APPKEY"
/> |
3 |
< meta-data
android:value = "eoeAndroid"
android:name = "UMENG_CHANNEL"
/> |
4 |
......</ application > |
提示:UMENG_APPKEY 的值可在友盟添加App获取; UMENG_CHANNEL 是市场的渠道号,用于统计用户通过哪个市场下载应用,可通过友盟提供的渠道号填写。
第三步:开始使用统计功能
1. 鉴于程序内可能有多个Activity,在此建议新建一个基类,让所有Activity继承这个类,增加代码的可重用性:
01 |
public
class
BaseActivity extends
Activity { |
02 |
03 |
@Override |
04 |
protected
void
onCreate(Bundle savedInstanceState) { |
05 |
super .onCreate(savedInstanceState); |
06 |
MobclickAgent.onError( this ); //捕捉未捕捉异常,通过调用这个方法,可以收集引起程序异常退出的错误信息,如不用可注释 |
07 |
} |
08 |
/**
在重载函数中为统计代码 **/ |
09 |
@Override |
10 |
protected
void
onPause() { |
11 |
super .onPause(); |
12 |
MobclickAgent.onPause( this ); |
13 |
} |
14 |
15 |
@Override |
16 |
protected
void
onResume() { |
17 |
super .onResume(); |
18 |
MobclickAgent.onResume( this ); |
19 |
} |
2. 定义好基类后,在以后生成新 Activity 过程中,可直接继承基类:
1 |
public
class
MyActivity extends
BaseActivity { |
2 |
3 |
@Override |
4 |
protected
void
onCreate(Bundle savedInstanceState) { |
5 |
super .onCreate(savedInstanceState); |
6 |
setContentView(R.layout.activity_splash); |
7 |
} |
8 |
9 |
} |
第四步:使用自动更新功能
1. 使用自动更新功能添加如下权限:
1 |
< uses-permission
android:name = "android.permission.WRITE_EXTERNAL_STORAGE" ></ uses-permission > |
2. 使用自动更新添加如下信息:
1 |
< service
android:name = "com.umeng.common.net.DownloadingService" |
2 |
android:process = ":DownloadingService"
> |
3 |
</ service > |
3. 开始调用更新函数,详细信息可见注释:
01 |
public
class
UpdateActivity extends
BaseActivity { |
02 |
/**
用户手动检测更新交互按钮 **/ |
03 |
private
Button btnChecknew; |
04 |
|
05 |
private
Context mContext = this ; |
06 |
07 |
@Override |
08 |
protected
void
onCreate(Bundle savedInstanceState) { |
09 |
super .onCreate(savedInstanceState); |
10 |
setContentView(R.layout.activity_update); |
11 |
initview(); |
12 |
/**
开始调用自动更新函数 **/ |
13 |
UmengUpdateAgent.update( this );
//从服务器获取更新信息 |
14 |
UmengUpdateAgent.setUpdateOnlyWifi( false );
//是否在只在wifi下提示更新,默认为
true |
15 |
UmengUpdateAgent.setUpdateAutoPopup( true );
//是否自动弹出更新对话框 |
16 |
UmengUpdateAgent.setDownloadListener( null );
//下载新版本过程事件监听,可设为
null |
17 |
UmengUpdateAgent.setDialogListener( null );
//用户点击更新对话框按钮的回调事件,直接
null |
18 |
//从服务器获取更新信息的回调函数 |
19 |
UmengUpdateAgent.setUpdateListener( new
UmengUpdateListener() { |
20 |
@Override |
21 |
public
void
onUpdateReturned( int
updateStatus,UpdateResponse updateInfo) { |
22 |
switch
(updateStatus) { |
23 |
case
0 :
//
有更新 |
24 |
UmengUpdateAgent.showUpdateDialog(mContext,
updateInfo); |
25 |
break ; |
26 |
case
1 :
//
无更新 |
27 |
OnNotice( "当前已是最新版." ); |
28 |
break ; |
29 |
case
2 :
//
如果设置为wifi下更新且wifi无法打开时调用 |
30 |
break ; |
31 |
case
3 :
//
连接超时 |
32 |
OnNotice( "连接超时,请稍候重试" ); |
33 |
break ; |
34 |
} |
35 |
} |
36 |
}); |
37 |
} |
38 |
private
void
initview() { |
39 |
btnChecknew
= (Button) findViewById(R.id.wgupdate_btn_check_new); |
40 |
btnChecknew.setOnClickListener( new
View.OnClickListener() { |
41 |
|
42 |
@Override |
43 |
public
void
onClick(View arg0) { |
44 |
//UmengUpdateAgent.setUpdateAutoPopup(false); |
45 |
UmengUpdateAgent.forceUpdate(mContext);
//先前用户可能忽略更新,“强制”弹出更新对话款 |
46 |
} |
47 |
}); |
48 |
|
49 |
} |
50 |
|
51 |
} |