新版的友盟不需要再去配置多渠道了,文档也更简单了.友盟文档,对着文档引入就可以了.大体步骤如下:
- 1.在友盟新建应用,获取AppKey
-
- 集成 sdk,推荐自动集成
maven依赖配置
在工程build.gradle配置脚本中buildscript和allprojects段中添加【友盟+】sdk 新maven仓库地址。如下图。
代码:
复制代码到剪切板
maven { url 'https://dl.bintray.com/umsdk/release' }
在工程App 对应build.gradle配置脚本dependencies段中添加基础组件库和统计SDK库依赖:
代码:
复制代码到剪切板
compile 'com.umeng.umsdk:analytics:8.0.0'
compile 'com.umeng.umsdk:common:2.0.0'
在Android Studio 3.1及以上版本开发环境下,指定引用最新版本依赖写法”latest.integration”可能导致下载库超时,此时需要指定具体版本号。
-
- 集成配置,主要是一些权限和混淆
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
-keep class com.umeng.** {*;}
-keepclassmembers class * {
public <init> (org.json.JSONObject);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-
- 选择想要集成的功能, 可以自选,下面主要集成渠道和统计功能
//加入渠道名称,上传给友盟,在 Application 里初始化
UMConfigure.init(this, "友盟 AppKey",
Utils.getUMChannelName(this), UMConfigure.DEVICE_TYPE_PHONE, "")
UMConfigure.setLogEnabled(true)
获取渠道的方法,和渠道有关,方法如下:
/**
* 获取渠道名
*
* @param ctx 此处习惯性的设置为activity,实际上context就可以
* @return 如果没有获取成功,那么返回值为空
*/
public static String getUMChannelName(Context ctx) {
if (ctx == null) {
return null;
}
String channelName = null;
try {
PackageManager packageManager = ctx.getPackageManager();
if (packageManager != null) {
//注意此处为ApplicationInfo 而不是 ActivityInfo,因为友盟设置的meta-data是在application标签中,而不是某activity标签中,所以用ApplicationInfo
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA);
if (applicationInfo != null) {
if (applicationInfo.metaData != null) {
channelName = applicationInfo.metaData.getString("UMENG_CHANNEL");
}
}
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return channelName;
}
- 5.在App中每个Activity的onResume方法中调用 MobclickAgent.onResume(context),onPause方法中调用 MobclickAgent.onPause(context)。
@Override
public void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
@Override
public void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
注意:
确保在所有的Activity中都调用 MobclickAgent.onResume和onPause方法(如果是在AUTO页面采集模式下,则需要注意,所有Activity中都不能调用MobclickAgent.onResume和onPause方法,详见后续页面采集章节),这两个调用不会阻塞应用程序的主线程,也不会影响应用程序的性能。
注意:如果您的Activity之间有继承或者控制关系,请不要同时在父和子Activity中重复添加nPause和nResume方法,否则会造成重复统计,导致启动次数异常增高。(例如:使用TabHost、TabActivity、ActivityGroup时)。
当应用在后台运行超过30秒(默认)再回到前台,将被认为是两次独立的Session(启动),例如:用户回到home,或进入其他程序,经过一段时间后再返回之前的应用。即被认为是两个独立的Session。