Android友盟统计的集成与多渠道打包配置

序言

记得很久以前有做过友盟这个东西,不过这个功能是同事弄的。现在在另一家公司做了,自己要实现这个功能了app上线后,一般公司都希望跟踪app在市场上的使用情况。包括新增用户、活跃用户、渠道信息、错误信息等,还有例如商城类的app,需要跟踪用户最喜欢浏览哪种类型的店铺或商品。这些都可以通过集成友盟统计来轻松实现。

集成

一、添加新应用

集成友盟SDK之前,首先需要到友盟官网注册并且添加新应用如下图所示:

二、获取Appkey

获取Appkey(一般公司项目不需要自己申请账号,跟项目经理要即可)。每个应用对应的Appkey是唯一的,如下:

 

三、导入SDK

有两种方法:(本例中采用第二种方法)

 方法一:下载SDK,将解压出来的jar包复制到工程libs/目录下。
下载地址:https://developer.umeng.com/sdk/android?refer=UApp
只需要下载Analytics SDK即可,如下:

方法二:添加SDK在maven中心库的线上依赖1、在app的builde.gradle中添加依赖

/*友盟统计需要的最新版本组件化基础库和统计SDK*/
    implementation 'com.umeng.sdk:common:latest.integration'
    implementation 'com.umeng.sdk:analytics:latest.integration'

如果无法正常集成,则需要在项目的builde.gradle中添加如下配置:

allprojects {
    repositories {
            mavenCentral()     
    }
}

四、在AndroidManifest.xml中添加权限、配置Appkey与渠道(Channel)

manifest的配置主要包括添加权限,以下权限缺一不可,填写Appkey和填写渠道id三部分,代码示例如下:

<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"/>
<!--value的值填写渠道名称,例如yingyongbao。这里设置动态渠道名称变量-->
 <meta-data android:value="${UMENG_CHANNEL_VALUE}"android:name="UMENG_CHANNEL"/></application>    
</manifest>

在app的builde.gradle中配置需要的渠道(这里只测试应用宝、豌豆荚、小米),对应上面的渠道名称变量。

/*配置渠道*/
    productFlavors {
        yingyongbao {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "yingyongbao"]
        }
        wandoujia {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
        }
        xiaomi {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
        }
    }

完整app的build。gradle如下:

apply plugin: 'com.android.application'

android {
    //签名信息配置
    signingConfigs {
        android_studio_app {
            keyAlias 'key'
            keyPassword '123456'
            storeFile file('D:/asdemo/MyViewPagerFragment/key/umeng.jks')
            storePassword '123456'
        }
    }
    compileSdkVersion 25
    buildToolsVersion '27.0.3'
    defaultConfig {
        applicationId "com.example.a31210.myviewpagerfragment"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.android_studio_app
        }
        debug {
            signingConfig signingConfigs.android_studio_app
        }
    }
    flavorDimensions "a"
    /*配置渠道*/
    productFlavors {
        yingyongbao {
            dimension "a"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "yingyongbao"]
        }
        wandoujia {
            dimension "a"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
        }
        xiaomi {
            dimension "a"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation 'com.android.support:appcompat-v7:25.3.1'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    /*友盟统计需要的最新版本组件化基础库和统计SDK*/
    implementation 'com.umeng.sdk:common:latest.integration'
    implementation 'com.umeng.sdk:analytics:latest.integration'
}

五、添加初始化方法

在项目工程的自定义application中的onCreate方法中添加以下方法:

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        /**
         * 参数1:上下文,必须的参数,不能为空
         * 参数2:友盟 app key,非必须参数,如果Manifest文件中已配置app key,该参数可以传空,则使用Manifest中配置的app key,否则该参数必须传入
         * 参数3:友盟 channel,非必须参数,如果Manifest文件中已配置channel,该参数可以传空,则使用Manifest中配置的channel,否则该参数必须传入,channel命名请详见channel渠道命名规范
         * 参数4:设备类型,必须参数,传参数为UMConfigure.DEVICE_TYPE_PHONE则表示手机;传参数为UMConfigure.DEVICE_TYPE_BOX则表示盒子;默认为手机
         * 参数5:Push推送业务的secret,需要集成Push功能时必须传入Push的secret,否则传空
         */
        UMConfigure.init(this,UMConfigure.DEVICE_TYPE_PHONE,"");
    }
}

通过上面的步骤,友盟统计就已经集成好了,下面来看看它各种统计的使用。

使用

Session统计

即启动数据的统计(包括新增用户、活跃用户、启动次数、使用时长等基本数据)

需要在每个Activity的onResume方法中调用 MobclickAgent.onResume(Context),
onPause方法中调用 MobclickAgent.onPause(Context),如下:

  @Override
    protected void onResume() {
        //设置为竖屏
        if(getRequestedOrientation()!= ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
        super.onResume();
        MobclickAgent.onResume(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        MobclickAgent.onPause(this);
    }
  • 确保在所有的Activity中都调用 MobclickAgent.onResume() 和onPause()方法。

  • 如果Activity之间有继承或者控制关系请不要同时在父和子Activity中重复添加nPause和nResume方法,否则会造成重复统计。例如在BaseActivity中添加过,则它的子类就不需要添加了。

安装app启动后。在友盟后台就可以看到统计的数据了。如下:

新增用户、启动次数、日活等数据:

渠道分析数据:

自定义事件统计

自定义事件可以实现在应用程序中埋点来统计用户的点击行为。如果应用是商城类的,就需要统计用户是喜欢进入“picture

”店铺,还是“new banlance"店铺。自定义事件目前包括"计数事件"和"计算事件",这里主要讲下计数事件。

1、首先需要在友盟后台添加自定义事件:设置-事件-手工添加-添加事件。如下:

2、在需要监听自定义事件的地方添加代码,如下模拟点击进入”picture“店铺。
第二个参数为当前统计的事件ID,需要与友盟后台设置的事件ID一致(即上图的事件ID)。

 MobclickAgent.onEvent(getActivity(),"picture");

3、运行app,触发该事件后。在友盟后台就可以看到统计的数据了。如下:
其中消息数量即为事件被触发的次数。

错误统计

错误分析是友盟为移动开发者提供的Crash收集和分析工具,帮助开发者监测App在移动设备上的运行状况,及时发现并解决错误,提升App的稳定性。

Android统计SDK从V4.6版本开始内建错误统计,不需要开发者再手动集成。
SDK通过Thread.UncaughtExceptionHandler 捕获程序崩溃日志,并在程序下次启动时发送到服务器。 如不需要错误统计功能,可通过此方法关闭

MobclickAgent.setCatchUncaughtExceptions(false);

如果开发者自己捕获了错误,需要上传到【友盟+】服务器可以调用下面方法:

public static void reportError(Context context, String error)   
//或  
public static void reportError(Context context, Throwable e)

现在我在demo中模拟一次错误,如下:

tv_pic.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getActivity(),"图片",Toast.LENGTH_SHORT).show();
                int i = 1 / 0;
            }
        });

再到友盟后台查看错误,如下:

其他统计

上面三个统计是比较常用的统计,还有很多统计,例如账号统计、页面统计等就不一一列举了。有需求的可以参考友盟统计集成文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值