个人 App 上线准备工作系列事项(集成一款数据采集、分析、管理的工具)

背景

  • 准备个人 App 的上线工作
  • 在开发的应用中集成数据统计功能,可以方便开发者分析用户数据来对应用做出对应的改进优化。

选择

使用 友盟的U-App(移动统计)产品


注册成为开发者

  • 登录友盟官网
  • 执行注册流程,成为一名开发者,然后登录友盟

创建应用获取 APPKEY

如下图示:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
按照上图所示步骤进行应用 AppKey 的获取


集成方式-自动集成(推荐)

看官网的 SDK 文档集成说明可知有自动集成手动集成两种方式,这里就以自动集成为例,也是官方推荐的方式

我们采用官方的推荐的自动集成方式,我接下来会在自己的应用中添加这部分的内容,然后通过实际应用来介绍必要的配置使用。

  • 添加统计SDK在maven中心库的线上依赖

通过在Android Studio工程build.gradle配置脚本中添加maven线上依赖,导入最新版本组件化统计SDK。

在这里插入图片描述
在工程build.gradle配置脚本中buildscript和allprojects段中添加【友盟+】sdk 新maven仓库地址。如下:

maven { url 'https://dl.bintray.com/umsdk/release' }

在这里插入图片描述

  • 在工程App 对应build.gradle配置脚本dependencies段中添加基础组件库和统计SDK库依赖。如下:
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    
    // 友盟统计
    implementation 'com.umeng.umsdk:analytics:8.0.0'
    implementation 'com.umeng.umsdk:common:2.0.0'
}

在这里插入图片描述
注意:在Android Studio 3.1及以上版本开发环境下,指定引用最新版本依赖写法”latest.integration”可能导致下载库超时,此时需要指定具体版本号。

  • 权限配置。如下:

统计SDK需要宿主APP授予如下权限:

权限 用途
ACCESS_NETWORK_STATE 检测联网方式,在网络异常状态下避免数据发送,节省流量和电量。
READ_PHONE_STATE 获取用户设备的IMEI,通过IMEI对用户进行唯一标识,以便提供统计分析服务。
ACCESS_WIFI_STATE 获取WIFI mac地址,在平板设备或电视盒子上,无法通过IMEI标识设备,我们会将WIFI mac地址作为用户的唯一标识,以便正常提供统计分析服务。
INTERNET 允许应用程序联网和发送统计数据的权限,以便提供统计分析服务。
ACCESS_FINE_LOCATION(可选) 通过获取位置信息,为开发者提供反作弊功能,剔除作弊设备;同时校正用户的地域分布数据,使报表数据更加准确。
ACCESS_COARSE_LOCATION(可选) 通过获取位置信息,为开发者提供反作弊功能,剔除作弊设备;同时校正用户的地域分布数据,使报表数据更加准确。

下面给出AndroidManifest.xml清单文件示例:

<manifest ……>
<uses-sdk android:minSdkVersion="8"></uses-sdk>
<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"/>
<application ……>

在这里插入图片描述

  • 混淆设置

如果您的应用使用了代码混淆,请添加如下配置,以避免【友盟+】SDK被错误混淆导致SDK不可用。

-keep class com.umeng.** {*;}

-keepclassmembers class * {
   public <init> (org.json.JSONObject);
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

SDK需要引用导入工程的资源文件,通过了反射机制得到资源引用文件R.java,但是在开发者通过proguard等混淆/优化工具处理apk时,proguard可能会将R.java删除,如果遇到这个问题,请添加如下配置:

-keep public class [您的应用包名].R$*{
public static final int *;
}

实际,我的 App 混淆文件中添加如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 初始化及通用接口

初始化方法由基础组件包提供,要使用统计SDK,必须在宿主应用application.onCreate函数中调用基础组件包提供的初始化函数:

/**
* 注意: 即使您已经在AndroidManifest.xml中配置过appkey和channel值,也需要在App代码中调
* 用初始化接口(如需要使用AndroidManifest.xml中配置好的appkey和channel值,
* UMConfigure.init调用中appkey和channel参数请置为null)。
*/
UMConfigure.init(Context context, String appkey, String channel, int deviceType, String pushSecret);

/** 
* 注意:如果您已经在AndroidManifest.xml中配置过appkey和channel值,可以调用此版本初始化函数。
*/
UMConfigure.init(Context context, int deviceType, String pushSecret);

Channel渠道的使用规范

每台设备仅记录首次安装激活的渠道,在其他渠道再次安装不会重复计量。 所以在测试不同的渠道的时候,请使用不同的设备来分别测试不要改变’UMENG_CHANNEL’。

Channel渠道的命名规范

1.可以由英文字母、阿拉伯数字、下划线、中划线、空格、括号组成,可以含汉字以及其他明文字符,但是不建议使用中文命名,会出现乱码。

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

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

4.最多256个字符。

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

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

实际,我的App中如下图示:
在这里插入图片描述

在这里插入图片描述

  • 打开日志

查看日志,添加代码如下:

在这里插入图片描述

  • 页面采集模式选择

官方有4种模式供选择,这里我选择了 AUTO 模式,如下:

在这里插入图片描述
Android 4.0及以上版本支持Activity生命周期的自动监控(通过注册自定义callback函数)。在Android 4.0以上设备中,推荐使用系统自动监控机制进行页面及基础指标自动埋点(AUTO模式下SDK会自动调用MobclickAgent.onResume/MobclickAgent.onPause接口,用户无须手动调用这两个接口)。

首次使用【友盟+】统计SDK的用户选用AUTO模式采集页面数据,仅需执行SDK初始化函数后调用 MobclickAgent.setPageCollectionMode(PageMode mode) 函数即可。

在AUTO或MANUAL模式下,如果需要对非Activity页面,如Fragment、自定义View等非标准页面进行统计。需要通过MobclickAgent.onPageStart/MobclickAgent.onPageEnd接口在合适的时机进行页面统计。

一次成对的 onPageStart -> onPageEnd 调用,对应一次非Activity页面(如:Fragment)生命周期统计。

// viewName 表示自定义的页面名
public static void onPageStart(String viewName);
public static void onPageEnd(String viewName);

手动统计Fragemnt页面的例子代码:

// Fragment页面onResume函数重载
public void onResume() {
    super.onResume();
    MobclickAgent.onPageStart("MainScreen"); //统计页面("MainScreen"为页面名称,可自定义)

}

// Fragment页面onPause函数重载
public void onPause() {
    super.onPause();
    MobclickAgent.onPageEnd("MainScreen");
}

至此,完成了基本的集成功能。

不过对于 activity + fragment 架构的项目,需要考虑到几种特殊的情况,才能正确的统计 fragment 页面。

解决方案请参考:当友盟统计遇上Fragment


添加 baidu 渠道

这部分内容就不再讨论了,请参考Android 开发–多渠道打包实现


baidu 渠道的 release 版安装

  • 选择 release 版构建类型

在这里插入图片描述

  • usb连接手机进行安装,同时能看到生成的 release 版apk,如下:

在这里插入图片描述
然后我们打开使用一段时间。


查看友盟统计数据

经过一段时间的使用后,友盟平台的统计数据就可以看到了,如下:

在这里插入图片描述

页面访问数据当天创建的应用看不到,得第二日了,这里就不给出了。

至此,我们就成功的集成了友盟的基础统计功能。

本文只是教大家简单的集成使用,后面同学们可以完善添加更多的高级统计功能。


技术永不眠,我们下期见!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章