您的位置:首页 > 其它

友盟统计多渠道打包页面访问路径

2016-11-22 11:29 316 查看
第一次在项目中集成友盟统计,参照官方文档(http://dev.umeng.com/analytics/android-doc/integration#2),很容易理解。稍微记录一下,以便下次使用时可以再参考一下。关于友盟的使用这些只是一些基本功能,后续还有代码混淆、自定义事件、错误统计、社交统计等功能,项目需求有用到的话会继续更新,不过参照官方文档应该都不难。

一、多渠道打包

1、在AndroidManifest文件中添加以下代码

<!-- 友盟统计 -->
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />

<meta-data android:value="key"
android:name="UMENG_APPKEY"/>


还需要额外加权限

<permission
android:name="包名.permission.JPUSH_MESSAGE"
android:protectionLevel="signature" />

2、在build.gradle文件中添加

compile 'com.umeng.analytics:analytics:latest.integration'


引用友盟依赖库。

在android标签下添加:

productFlavors {
xiaomi {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "MIDevelop"]
}
qh360 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "360MobileDevelop"]
}
baidu {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "BaiduDevelop"]
}
yingyongbao{
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "YingYongBao"]
}
huawei {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "HuaWei"]
}
}


xiaomi、qh360、baidu等这些是渠道名,自己命名的。尽量不要有中文,有可能会乱码。

之后打包的时候会出现多个渠道的打包。如下图所示:




二、页面访问路径

一般的项目都会包含Activity和Fragment,因此页面统计的步骤如下:
1、在程序的入口处调用 
 MobclickAgent.openActivityDurationTrack(false)
 禁止默认的页面统计方式,这样将不会再自动统计Activity。(不调用这一句的话会统计不到Fragment)
2、所有的Activity集成如下的BaseActivity,所有的Fragment集成如下的BaseFragment,所有的FragmentActivity集成如下的BaseFragmentActivity。
BaseActivity类中的代码:

public abstract class BaseActivity extends Activity {

@Override
protected void onResume() {
super.onResume();
//统计页面(仅有Activity的应用中SDK自动调用,不需要单独写。"SplashScreen"为页面名称,可自定义)
MobclickAgent.onPageStart(getClass().getName());
//session的统计
MobclickAgent.onResume(this);  //统计时长
}

@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPageEnd(getClass().getName());
MobclickAgent.onPause(this);
}

@Override
protected void onDestroy() {
setContentView(R.layout.empty);
System.gc();
super.onDestroy();
}
}

BaseFragment类中的代码:

public abstract class BaseFragment extends Fragment {
@Override
public void onResume() {
super.onResume();
MobclickAgent.onPageStart(getClass().getName());
Log.e("name", getClass().getName().replaceAll("com.example.gazrey.model.", ""));
}

@Override
public void onPause() {
super.onPause();
MobclickAgent.onPageEnd(getClass().getName());
Log.e("name", getClass().getName().replaceAll("com.example.gazrey.model.", ""));
}
}


BaseFragmentActivity类中的代码如下:

public abstract class BaseFragmentActivity extends FragmentActivity {
@Override
protected void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}

@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}

@Override
protected void onDestroy() {
setContentView(R.layout.empty);
System.gc();
super.onDestroy();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息