1. MTA(Android)接入指南

1.1. 开始嵌入SDK


1.1.1. 安装和部署

欢迎使用腾讯移动分析(简称MTA)Android统计SDK,您可以按照下面手动接入jcenter自动接入开始集成SDK。

手动接入

Step 1 获取AppKey

登陆腾讯移动分析移动统计前台,按照步骤提示注册应用,可获得AppKey。

腾讯内部用户:http://mta.oa.com

腾讯外部用户:http://mta.qq.com

Step 2 向工程中导入SDK

下载SDK压缩包,解压至本地目录,将其中lib目录下的mta-sdk-x.x.x.jar[1]复制到您的应用工程libs目录(若不存在请新建一个)中。以Eclipse为例:右键点击工程根目录→选择Properties

→ Java Build Path →Libraries →点击Add JARs…选中当前工程libs目彔下的mta-sdk-x.x.x.jar文件,点击“OK”按钮即导入成功。

Step 3 配置AndroidManifest.xml文件

需要添加下面两类配置:

Meta-Data
类型
用途
必选
TA_APPKEY

 String,不能为纯数字字符串

MTA提供给每个app的appkey,用来定位该应用程序的唯一性

InstallChannel
String,若为纯数字字符串不能超过int表示的范围
用来标注应用推广渠道,区分新用户的来源来查看统计

Provider Android组件 兼容Android 6.0系统(MID 3.5以上版本才需要)
(注意:appkey和installChannel也能够在代码中设置,见APP设置接口)
需要的权限
用途
必选
INTERNET

 允许应用程序联网,以便向我们的服务器端发送数据


READ_PHONE_STATE
获取用户手机的IMEI,用来唯一的标识用户。(运行在平板上的应用会读取mac地址作为用户的唯一标识

ACCESS_NETWORK_STATE
获取设备的网络状态

ACCESS_WIFI_STATE
获取设备的WIFI网络状态

WRITE_EXTERNAL_STORAGE
获取SD卡信息

示例文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest ......>
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="7"/>
<!—为MTA授权。< -->
<!—如果是第三方lib项目,请在手册中提示app开发者授予以下权限! < -->
<uses-permission android:name="android.permission.INTERNET"/>
<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.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<!-- 请在application处配置appkey和渠道或在代码处调用StatConfig类接口 < -->
<application ......>
<activity ......>
 ......
</activity>
    <!-- MID3.5(mid-sdk-3.5.jar) 以上版本请务必增加此配置-->
<provider
  android:name="com.tencent.mid.api.MidProvider"
  android:authorities="你的包名.TENCENT.MID.V3"
  android:exported="true" >
</provider>
<meta-data android:name="TA_APPKEY" android:value="ABCDEFG12233456"/>
<!-- 请将value改为app发布对应的渠道,不同的发布渠道使用不同的名字 < -->
<meta-data android:name="InstallChannel" android:value="play"/>
<!-- 注意:若填写的渠道为纯数字字符串类型,请不要超过int表示的范围! < -->

step 4 在代码中添加SDK的引用

import com.tencent.stat.StatConfig

import com.tencent.stat.StatService

StatConfig类:MTA配置类,可以设置上报策略、Debug开关、session超时时间等,需要在初始化MTA之前被调用才能及时生效,通常使用SDK默认配置即可。

StatService类:MTA统计类,需要开发者按下面的步骤主动调用接口。

Step5 添加SDK的统计

在代码处调用类StatService提供的接口(见章节2、3、4、5、6),开始嵌入MTA的统计功能。

Step 6 验证数据上报是否正常

当您完成以下的MTA嵌入工作后,启动app,触发MTA统计接口,经过5秒左右,正常情况下,在您的app首页就能看到实时指标在更新,说明您已成功嵌入MTA,可继续深入的统计开发。

如果经过几分钟后,尚未看到实时指标更新,请检查以下事项:

(1)设备的wifi是否打开,是否正常联网;

(2)APPKEY、权限等设置是否正确;

(3)确保已触发MTA统计接口;

(4)打开MTA的debug开关,查看标签为“MtaSDK“的logcat提示,是否有错误日志;

(5)如果logcat提示“Compatibility problem was found in this device!“,请先删除apk重新安装,可参考兼容性错误。

jcenter 自动接入

AndroidStudio上可以使用jcenter远程仓库自动接入,不需要在项目中导入jar包和so文件;在AndroidManifest.xml中不需要配置MTA相关的内容,jcenter 会自动导入。(升级SDK删除老版本SDK的配置)

在app build.gradle文件下配置 以下内容

android {
    ......
    defaultConfig {

        //信鸽官网上注册的包名.
        applicationId "你的包名" 
        ......

        ndk {
            //根据需要 自行选择添加的对应cpu类型的.so库。 
            abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' 
            // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
        }

        manifestPlaceholders = [

        MTA_APPKEY:"注册应用的appkey",
               MTA_CHANNEL:"渠道名称"
        ]
        ......
    }
    ......
}

dependencies {
    ......
    //以MTA3.0为例
    //MTA的版本
    compile 'com.qq.mta:mta:3.0.1-alpha'
    //mid包的版本
    compile 'com.tencent.mid:mid:3.721-alpha'
    //可视化埋点的版本
     compile 'com.qq.visual:visual:1.0.0-alpha'
    ......
}

注意

如果在添加以上 abiFilter 配置之后android Studio出现以下提示:

NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin.

则在 Project 根目录的gradle.properties文件中添加:

android.useDeprecatedNdk=true

1.1.2. 升级SDK

新版本SDK兼容老版本接口,升级时只需要替换旧的jar包即可:先在工程所在libs目录下删除旧的jar包,复制新jar包到libs路径,同时,在Java Build Path里面删除旧的jar包,并添加新jar包引用。

1.1.3. 代码混淆

请保留以下选项:

-keep class com.tencent.stat.* { ;}

-keep class com.tencent.mid.* { ;}

1.1.4. 初始化并启动MTA


在所有其它StatService方法被调用之前调用以下接口初始化MTA。第三方合作SDK lib必须初始化MTA,其它非lib类的项目可自行决定是否初始化,不影响正常使用。初始化MTA并不会上报任何数据,仅仅是激活MTA,并预加载数据库的配置信息。

boolean StatService.startStatService(Context ctx, String appkey, String mtaSdkVersion)

(1)参数:

Ctx 页面的设备上下文

Appkey MTA提供的appkey,若为null,则按读取StatConfig.setAppKey()或manifest.xml配置的appkey requiredMtaVer当前app依赖的MTA SDK版本号,只能为com.tencent.stat.common.StatConstants.VERSION,用于SDK版本冲突检测

MtaSDkException异常:启动失败时会抛出MtaSDkException异常,可能是参数出错,也可能是SDK版本冲突,具体的冲突解决办法见注意事项中的“SDK冲突问题”。同时,MTA会自动禁止所有功能。

(2)调用位置:

1、对于普通app:AndroidManifest.xml指定首先启动的activity的onCreate()处,StatConfig类的方法之后。

2、对于lib工程,在其它所有StatService方法被调用之前,StatConfig类的方法之后。 (注意:StatConfig配置类需要在此方法前才能及时生效)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mtamain);
    // androidManifest.xml指定本activity最先启动
    // 因此,MTA的初始化工作需要在本onCreate中进行
    // 在startStatService之前调用StatConfig配置类接口,使得MTA配置及时生效
    initMTAConfig(true);
    String appkey = "amtaandroid0";
    // 初始化并启动MTA
    // 第三方SDK必须按以下代码初始化MTA,其中appkey为规定的格式或MTA分配的代码。
    // 其它普通的app可自行选择是否调用
    try {
        // 第三个参数必须为:com.tencent.stat.common.StatConstants.VERSION
        StatService.startStatService(this, appkey,
                com.tencent.stat.common.StatConstants.VERSION);
    } catch (MtaSDkException e) {
        // MTA初始化失败
        logger.error("MTA start failed.");
        logger.error("e");
    }
}

1.2. 基础指标统计


基础指标包括页面统计,会话统计,错误统计3个部分。

1.2.1. 页面统计

使用下面的函数统计某个页面的访问情况:

Ø 标记一次页面访问的开始

void StatService.onResume(Context ctx)或
void StatService.trackBeginPage(Context ctx, String pageName)

(1)参数:

Ctx 页面的设备上下文

pageName 自定义页面名称,需跟trackEndPage一一匹配使用

@Override
protected void onResume() {
    super.onResume();
    StatService.onResume(this);
}

(2)调用位置:

每个activity的onResume()

(注意:每次调用,MTA会检查是否产生新会话(session超时),即生成启动次数。)

Ø 标记一次页面访问的结束

void StatService.onPause (Context ctx)或
void StatService.trackEndPage(Context ctx, String pageName)

参数:

Ctx 页面的设备上下文

pageName 自定义页面名称,需跟trackBeginPage一一匹配使用

调用位置:

每个activity的onPause()

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

(注意:onResume和onPause或trackBeginPage和trackEndPage需要成对使用才能正常统计activity,为了统计准确性,建议在每个activity中都调用以上接口,否则可能会导致MTA上报过多的启动次数,解决办法参考“特殊需求”)

Ø 通过继承的方式统计页面访问

开发者可以通过app本身的acivity基类,调用MTA的onResume和onPause,并在所有子类中,重载这2个方法,实现页面统计功能。可参考MtaDemo中的BaseActivity和DrivedActivity代码。

另外,MTA SDK中的下面两个类实现了StatService.onResume()和StatService.onPause()的调用,可直接继承以下类并在子类中重载页面统计接口。

com.tencent.stat.EasyActivity       继承自android.app.Activity
com.tencent.stat.EasyListActivity   继承自android.app.ListActivity

1.2.2. 会话统计

会话统计用于统计启动次数,由SDK本身维护,通常开发者无需额外设置或调用接口。

以下3种情况下,会视为用户打开一次新的会话:

1) 应用第一次启动,或者应用进程在后台被杀掉之后启动

2) 应用退到后台或锁屏超过X之后再次回到前台

X秒通过StatConfig.setSessionTimoutMillis(int)函数设置,默认为30000ms,即30秒

举例说明:用户打开手机QQ连续操作10分钟,之后按home键(或锁屏)退到后台,超过30秒后再次回到QQ,此时,SDK会上报一次会话。

注意:请根据您的app业务情况决定是否调整超时时间。

3) 调用SDK提供的startNewSession()函数

void StatService.startNewSession(Context ctx)

参数:

Ctx 页面的设备上下文

results matching ""

    No results matching ""