Android 集成第三方SDK 友盟+统计 浓缩版

前言:

也是有段时间没有更新博客了,也是自己比较懒,一有事情做一些事就会放一边,没有去动。一个多月没更新了,发现博客访问量有两千多了。想想还是得更新多几篇也是对自己做笔记的加固(其实就是自己记性差)

正文:

当让需要集成这个SDK,是需要账号注册的。没注册的朋友就注册一下。

 注:如果是公司的项目最好还是让公司的负责人去申请注册,避免日后个人离职带来不必要的麻烦。如果是自己练习的话,自己顺便注册一个就好了。


接下来就直接来开发步骤吧!!!


第一步:注册账号


额~ 这一步我就省略了...  不难。不是什么国外网站,都是中文都是可以看得懂的


第二步:在友盟中账号创建程序




   



到这一步项目已经在友盟上创建好了。那接下来就是开始嵌入到APP中了


第三步:将友盟嵌入到自己的APP中


详细文档可以看官方文档:http://dev.umeng.com/analytics/android-doc/integration

我这里写呢,就是集成基本的统计而已。给官方的文档做了浓缩版(简约笔记)


我们将官方的SDK 下载下来并且解压后:进去找到libs 文件





下列jar包中utdid4all-1.0.4.jar 可以根据自己的情况拷贝到项目中去,没报错可以不加,如添加后,出现错误,就麻烦自己百度一下啦。一般就将这个包直接删除就好了,不影响友盟功能的。






Android Studio 嵌入

在Gradle依赖中添加:

如果是用Android Studio工具开发的话就不用管上面的jar包啦。使用更简单的方法,Android Studio 添加下列的依赖,就可以了

dependencies {
   compile 'com.umeng.analytics:analytics:latest.integration'
}

如果无法正常集成请添加如下代码 :

allprojects {
repositories {
mavenCentral()
}
}


在 AndroidManifest.xml 中配置权限,以及友盟配置信息

<manifest……>
<!-- 友盟统计需要使用到的权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application ……>
……

<!-- 友盟统计配置信息 -->
<activity ……/>
<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"/>
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>
</application>    
</manifest>


填写appkey

 

中的替换为您在友盟后台申请的应用Appkey(Appkey可在统计后台的 页面查看),其他部分均不需改动。

channel填写

 

中的替换为您应用的推广渠道名称,

例如在豌豆荚渠道推广此包,代码示例: 


渠道命名规范

1.可以由英文字母、阿拉伯数字、下划线、中划线、空格、括号组成,可以含汉字以及其他明文字符,但是

2.首尾字符不可以为空格

3.不要使用纯数字作为渠道ID

4.最多256个字符

5."unknown" 及其各种大小写形式,作为友盟保留的字段,不可以作为渠道名

在您查看数据时,渠道会作为一个数据细分的维度。

权限说明

权限 用途
ACCESS_NETWORK_STATE(必须) 检测联网方式,区分用户设备使用的是2G、3G或是WiFi
READ_PHONE_STATE(必须) 获取用户设备的IMEI,通过IMEI和mac来唯一的标识用户。
ACCESS_WIFI_STATE(必须) 获取用户设备的mac地址,在平板设备上,无法通过imei标示设备,我们会将mac地址作为用户的唯一标识
INTERNET(必须) 允许应用程序联网,以便向我们的服务器端发送数据。

 在代码中配置Appkey和Channel

如果希望在代码中配置Appkey、Channel、Token(Dplus)等信息,请在程序入口处调用如下方法:

MobclickAgent. startWithConfigure(UMAnalyticsConfig config)

UMAnalyticsConfig初始化参数类,提供多参数构造方式:


UMAnalyticsConfig(Context context, String appkey, String channelId)
UMAnalyticsConfig(Context context, String appkey, String channelId, EScenarioType eType)
UMAnalyticsConfig(Context context, String appkey, String channelId, EScenarioType eType,Boolean isCrashEnable)

构造意义:
String appkey:官方申请的Appkey
String channel: 渠道号
EScenarioType eType: 场景模式,包含统计、游戏、统计盒子、游戏盒子
Boolean isCrashEnable: 可选初始化. 是否开启crash模式

在程序入口调用一下方法:


//使用集成测试服务
MobclickAgent.setDebugMode( true );
//捕获程序崩溃日志,并在程序喜下次启动时发送到服务器 如果不需要可以通过此方法关闭
//详细查看官方文档  http://dev.umeng.com/analytics/android-doc/integration#4
MobclickAgent.setCatchUncaughtExceptions(false);
// SDK在统计Fragment时,需要关闭Activity自带的页面统计,
// 然后在每个页面中重新集成页面统计的代码(包括调用了 onResume 和 onPause 的Activity)。
MobclickAgent.openActivityDurationTrack(false);
//场景类型设置接口。
     /**
      *  EScenarioType. E_UM_NORMAL  普通统计场景类型
      *  EScenarioType. E_UM_GAME       游戏场景类型
      *  EScenarioType. E_UM_ANALYTICS_OEM  统计盒子场景类型
      *  EScenarioType. E_UM_GAME_OEM        游戏盒子场景类型
      */
MobclickAgent.setScenarioType(Context context, EScenarioType etype)


 包含Activity、Fragment或View的应用

(这些的话如果你都有封装了BaseActivity 或者 BaseActivity的话。其实就直接写到 Base里面就可以了)

统计应用中包含Fragment的情况比较复杂,首先要明确一些概念。

1.  和 方法是用来统计应用时长的(也就是Session时长,当然还包括一些其他功能)

2.方法是用来统计页面跳转的

在仅有Activity的应用中,SDK 自动帮助开发者调用了  中的方法,并把Activity 类名作为页面名称统计。但是在包含fragment的程序中我们希望统计更详细的页面,所以需要自己调用方法做更详细的统计。

首先,需要在程序入口处,调用  禁止默认的页面统计方式,这样将不会再自动统计Activity。

然后需要手动添加以下代码:

1. 使用  和 方法统计时长, 这和基本统计中的情况一样(针对Activity)

2. 使用  和  方法统计页面(针对页面,页面可能是Activity 也可能是Fragment或View)

如果页面是直接由Activity实现的,统计代码大约是这样:

public void  {
    super.onResume();    //MobclickAgent.onPageStart(getClass().getSimpleName);
    MobclickAgent.; //统计页面(仅有Activity的应用中SDK自动调用,不需要单独写。"SplashScreen"为页面名称,可自定义)
    MobclickAgent.onResume(this);          //统计时长
}
public void  {
    super.onPause();    //MobclickAgent.onPageEnd(getClass().getSimpleName());
    MobclickAgent.; // (仅有Activity的应用中SDK自动调用,不需要单独写)保证 onPageEnd 在onPause 之前调用,因为 onPause 中会保存信息。"SplashScreen"为页面名称,可自定义
    MobclickAgent.onPause(this);
}

如果页面是使用FragmentActivity + Fragment实现的,需要在 FragmentActivity 中统计时长:

public void  {
    super.onResume();
    MobclickAgent.onResume(this);       //统计时长
}
public void  {
    super.onPause();
    MobclickAgent.onPause(this);
}

并在其包含的 Fragment 中统计页面:

public void onResume() {
    super.onResume();    //MobclickAgent.onPageStart(getClass().getSimpleName);    //MobclickAgent.onResume(this)
    MobclickAgent.; //统计页面,"MainScreen"为页面名称,可自定义
}
public void onPause() {
    super.onPause();    //MobclickAgent.onPageEnd(getClass().getSimpleName());    //MobclickAgent.onPause(this);
    MobclickAgent.; 
}


注意:这些方法的调用,需要,每个 onResume 都对应一个 onPause ,每个 Start 都有一个 End 配对。这样才能保证每个页面统计的正确,关于页面统计API的最佳实践说明见这里 。

自此已经是嵌入完成了,下面有更详细的一些其他的统计。


第四步:完成


更多Android 植入友盟统计:   Android+WebView  加入统计:点击打开链接

        计数统计事件:点击打开链接

自定义事件统计(计数事件):点击打开链接

代码混淆:点击打开链接

账号统计:点击打开链接

    实现友盟多渠道打包:点击打开链接

猜你喜欢

转载自blog.csdn.net/qq_35070105/article/details/75387140
今日推荐