直接易用的移动App数据统计分析产品,快捷高效地为开发者收集、处理和分析相关数据,全面掌握用户使用行为,掌握用户行为,改善产品设计,提高用户体验。

Android SDK 集成说明

1 概要

1.1 文档目的

本文档的目的是讲解海度云移动分析系统(以下简称海度系统)Android SDK 的使用规则,方便开发者的使用。

1.2 适用范围

本文档适用于海度系统的 Android SDK 的使用者。
统计 SDK 适用于 Android 2.1 (API Level 7) 及以上设备。

2 集成准备

2.1 获取 Appkey

登录海度系统,进入添加应用页面中注册应用并填写应用相关信息获取 AppKey,用于唯一标识。

2.2 下载 SDK

下载海度系统 Android SDK 包

2.3 导入 SDK

将下载海度系统 SDK(hiido_statis-xxx.jar)包合并到本地工程 libs 子目录下;在 Eclipse 中右键工程根目录,选择 Properties -> Java Build Path -> Libraries,然后点击 Add External JARs... 选择指向 jar 的路径,点击 OK,即导入成功。Edit By MaHua

3 基本功能集成

3.1 配置 ANDROIDMANIFEST.XML 文件

3.1.1 配置权限

  • 添加权限 android.permission.INTERNET
  • 添加权限 android.permission.READ_PHONE_STATE
  • 添加权限 android.permission.ACCESS_WIFI_STATE
  • 添加权限 android.permission.WRITE_EXTERNAL_STORAGE
  • 添加权限 android.permission.ACCESS_NETWORK_STATE

AndroidManifest.xml 文件详细如下:

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

3.2 添加代码

使用海度系统需要至少添加以下调用方法,才能保证获取正确的新增用户、活跃用户、启动次数、使用时长等基本数据。

3.2.1 初始化SDK(重要)

在 Android 应用全局 Application 的 onCreate() 中初始化SDK。调用 HiidoSDK.instance().appStartLaunchWithAppKey(...) 方法,初始化 SDK。
(注:这一步必须调用,不然 SDK 无法正常工作)
API:

appStartLaunchWithAppKey(Context context, String appKey, String appId, String from, OnStatisListener listener)
// SDK的初始化,必须调用,否则SDK无法正常工作。在应用启动时调该方法,建议在你的Application中调用该方法,如果没有Application,建议自定义一个。
// Parameters:
//      context 上下文对象,最好是 Application。
//      appKey 应用 key,必须与海度系统后台申请的应用 key 保持一致,否则无法统计数据。也可以在 Androidmanifest.xml 文件配置 meta-data[HIIDO_APPKEY]
//      appId 应用id,应用标识,可为空。
//      from 渠道信息,客户端所发布的渠道,客户端自定义。也可以在 Androidmanifest.xml 文件配置 meta-data[HIIDO_CHANNEL]
//      listener 用户 id 的监听器,客户端需要实现该监听器,维护用户 id

例子:

//appkey 必须与后台申请的 appkey 保持一致,必选
String appKey = "your appkey";
//appId 不设置默认获取包名,可选
String appId = "hiido_statis-demo";
//from 为发布的渠道,必选
String from = "your from";
//设置 uid,默认为 0,需客户端自己维护 uid,如用户登录后把 uid 赋值。必选
OnStatisListener listener = new OnStatisListener() {
    @Override
    public long getCurrentUid() {
        return SysConstants.UID;
    }
};
//初始化 sdk(方式1),必选
HiidoSDK.instance().appStartLaunchWithAppKey(this, appKey, appId, from, listener);

注意:

  1. 设置 appkey,必须与 2.1 中获取的 appkey 保持一致,必选。也可以在 Androidmanifest.xml文件配置 meta-data[HIIDO_APPKEY]。详细请看 5.7 章节。
  2. 设置 appId,备用,可选项。
  3. 设置 from,设置该应用的发布渠道,必选。也可以在 Androidmanifest.xml 文件配置 meta-data[HIIDO_CHANNEL],详细请看 5.7 章节。
  4. 维护一个 uid 的 listener ,方便自动上传 uid,必选。
  5. 如果你工程中没有全局的 Application,那么你需要自定义一个。

3.2.2 页面行为统计(重要)

在 Android 应用的每个 Activity 的 onResume()onPause() 中分别调用 HiidoSDK.instance().onResume()HiidoSDK.instance().onPause()
此步骤集成非常重要,如集成不正确,将会导致页面统计,应用使用时长,活跃用户等统计不正确。
**方式1:调用者自定义 pageid **

API:

onResume(long uid, String pageId)
// 页面行为统计。在每个 activity 的 onResume(),onPause() 方法中分别调用 onResume(long, String),onPause(String, PageActionReportOption)。
// 如需自动填充 pageId,请使用另一组方法 onResume(long, Activity),onPause(Activity, PageActionReportOption)
// Parameters:
//      uid 用户 id。
//      pageId 当前页面 id,客户端自己定义。

onPause(String pageId, PageActionReportOption reportOption)
// 页面行为统计。在每个 activity 的 onResume(),onPause()方法中分别调用onResume(long, String),onPause(String, PageActionReportOption)。如需自动填充 pageId,请使用另一组方法 onResume(long, Activity),onPause(Activity, PageActionReportOption)
//  Parameters:
//      pageId 当前页面 id,客户端自己定义.
//      reportOption 如果为 PageActionReportOption.DO_NOT_REPORT_ON_FUTURE_RESUME, 当前页面行为将不会被统计。 如果为 PageActionReportOption.DO_REPORT_ON_FUTURE_RESUME, 当前页面行为将会被统计。

// ....

例子:

//页面统计
//(方式1:调用者自定义 pageid)
//在每个 activity 的 onResume 中调用 HiidoSDK.instance().onResume(uid, pageId)
//在每个 activity 的 onPause 中调用 HiidoSDK.instance().onPause(pageId, reportOption)
@Override
protected void onResume() {
    super.onResume();
    String pageName = "MainActivity"; 
    HiidoSDK.instance().onResume(SysConstants.UID, pageName);
}

@Override
protected void onPause() {
    super.onPause();
    String pageName = "MainActivity";  
    HiidoSDK.instance().onPause(pageName,HiidoSDK.PageActionReportOption.REPORT_ON_FUTURE_RESUME);
}

方式2:SDK 自动获取 pageid(建议使用该方式,利用基类集成方便):

API:

onResume(long uid, Activity activity)
// 页面行为统计。在每个 activity 的 onResume(),onPause() 方法中分别调用 onResume(long, Activity),onPause(Activity, PageActionReportOption)。也可以在一个基类里调用一次即可,注意父子关系的类请不要重复调用。只需在其中一方调用即可。pageId 默认为 activity 的包名加上类名。如需自定义 pageId,请使用另一组方法 onResume(long, String),onPause(String, PageActionReportOption)
// Parameters:
//      uid 用户 id。
//      activity 当前 activity。

onPause(Activity activity, PageActionReportOption reportOption)
// 页面行为统计,必须调用。在每个 activity的onResume(),onPause()方法中分别调用 onResume(long, Activity),onPause(Activity, PageActionReportOption)。也可以在一个基类里调用一次即可,注意父子关系的类请不要重复调用。只需在其中一方调用即可。pageId 默认为 activity 的包名加上类名。
// 如需自定义 pageId,请使用另一组方法 onResume(long, String),onPause(String, PageActionReportOption)
// Parameters:
//      activity 当前 activity。
//      reportOption 如果为 PageActionReportOption.DO_NOT_REPORT_ON_FUTURE_RESUME, 当前页面行为将不会被统计。 如果为 PageActionReportOption.DO_REPORT_ON_FUTURE_RESUME, 当前页面行为将会被统计。

例子:

//页面统计
//(方式2:SDK 自动获取 activity 的包名与类包作为页面 id)
//在每个 activity 的 onResume 中调用 HiidoSDK.instance().onResume(uid, activity)
//在每个 activity 的 onPause 中调用 HiidoSDK.instance().onPause(activity, reportOption)
@Override
protected void onResume() {
    super.onResume();
    HiidoSDK.instance().onResume(SysConstants.UID, this);   
}
 
@Override
protected void onPause() {
    super.onPause();
    HiidoSDK.instance().onPause(this,HiidoSDK.PageActionReportOption.REPORT_ON_FUTURE_RESUME);
}

注意:

  1. 建议在 Android 应用的所有的 Activity 中都调用 HiidoSDK.instance().onResume()HiidoSDK.instance().onPause()方法。如果在某些 Activity 中不添加也可以,但会造成相应 Activity 的使用时间等相关信息统计不到。
  2. 注意如果您的 Activity 之间有继承或者控制关系,只需要在父类添加 onResume 和 onPause 方法即可。
    (请不要同时在父类和子类的 Activity 中重复添加 onResume 和 onPause 方法,否则会造成重复统计)

4 高级功能集成

4.1 事件行为统计

自定义事件可以实现在应用程序中埋点来统计用户的点击行为。例如您可以统计广告点击次数或者视频被播放的次数等等。SDK 提供了两种自定义事件,分别是点击次数事件和数值计算事件

4.1.1 点击次数事件

点击次数事件,可以统计该事件的点击数,设备数等。在你需要使用点击事件的地方,你可以调用以下方法 HiidoSDK.instance().reportTimesEvent()

方式1:简单的次数事件上报

API:

reportTimesEvent(long uid, String eid)
// 次数事件上报,客户端埋点调用。统计报表会统计该事件的点击数,设备数等。
// Parameters:
//      uid 用户 id,如无用户 id,请传0
//      eid 事件 id,客户端自定义,可在统计报表后台设置别名

例子:

//如果要统计广告的点击数。
HiidoSDK.instance().reportTimesEvent(0,"ad");

方式2:带有标签的次数事件上报

API:

reportTimesEvent(long uid, String eid, String label)
// 次数事件上报,客户端埋点调用。统计报表会统计该事件的点击数,设备数等。
// Parameters:
//      uid 用户 id,如无用户 id,请传 0
//      eid 事件 id,客户端自定义,可在统计报表后台设置别名
//      label 事件的标签,可为空。如果同类型事件有不同标签,可利用该参数传不同的标签,统计报表会根据此值进行分类统计。

例子:

//如果要统计广告的点击数,而广告有多个位置的广告。可利用 label 进行不同广告位的区分。
HiidoSDK.instance().reportTimesEvent(0,"ad","loc1");
HiidoSDK.instance().reportTimesEvent(0,"ad","loc2");

方式3:带有标签及属性的次数事件上报

API:

reportTimesEvent(long uid, String eid, String label, Property prop)
// 次数事件上报,客户端埋点调用。统计报表会统计该事件的点击数,设备数等。eg:如果要统计广告的点击数,而广告有多个位置的广告。可利用 label 进行不同广告位的区分。除此之外,如果还想统计每个广告所点击的人群职业,可以利用 prop 属性上报数据,统计职业的分布情况。
// Parameters:
//      uid 用户 id,如无用户 id,请传0
//      eid 事件 id,客户端自定义,可在统计报表后台设置别名
//      label 事件的标签,可为空。如果同类型事件有不同标签,可利用该参数传不同的标签,统计报表会根据此值进行分类统计。
//      prop 事件的属性参数,可为空。以 key,value 的形式上报数据,注意:如果 value 为数值类型,则会统计平均数及总数,如果 value 为字符串类型,则会统计 value 出现的频度。
// 注意:key 与 value 不能带有特殊字符,且 key,value 不能超过256字节。

例子:

// 如果要统计广告的点击数,而广告有多个位置的广告。可利用 label 进行不同广告位的区分。
// 除此之外,如果还想统计每个广告所点击的人群职业,可以利用 Property 属性上报数据,统计职业的分布情况。

Property pro = new Property();
pro.putString("点击人职业", "IT");
HiidoSDK.instance().reportTimesEvent(0,"ad","loc1",pro);
HiidoSDK.instance().reportTimesEvent(0,"ad","loc2",pro);

注意:

  1. 如果你想记录同一件事件中的不同类型,无需定义多个 eid,可以使用该方法的参数 label 传入不同标签值来区分。海度会根据该 label 值进行分类汇总统计。
  2. 如果事件上报需要上报更多的参数,请使用属性参数 property,该参数以 key,value 的形式上报数据,如果 value 为数值类型,将会统计数值的总数与平均数,如果 value 为字符串类型,将会统计 value 出现的频度及分布情况。
  3. 事件中的事件 id,标签,属性值均不能带有特殊字符串,且不能超过256字节。

4.1.2 数值计算事件

数值计算事件,除了统计该事件的点击数,设备数等,还提供了一个数字型的参数,对这个参数进行计算求和,求平均数等统计。在你需要使用数值计算事件的地方,调用以下方法 HiidoSDK.instance().reportCountEvent()

方式1:简单的数值事件上报

API:

reportCountEvent(long uid, String eid, double evalue)
// 计算事件上报,客户端埋点调用。统计报表会统计该事件的点击数,设备数等,除此之外还会计算自定义事件值的总和及平均值。
// Parameters:
//      uid 用户id,如无用户id,请传0
//      eid 事件id,客户端自定义,可在统计报表后台设置别名
//      evalue 自定义事件值,统计报表根据此值进行求和,求平均值。

例子:

//如要统计购买游戏币的行为,且游戏币存在5,10面值。
//除了利用事件值上报面值,可统计游戏币的购买总额及平均值等情况。
HiidoSDK.instance().reportCountEvent(0,"gameCurrencyBuy",5);
HiidoSDK.instance().reportCountEvent(0,"gameCurrencyBuy",10);

方式2:带有标签的数值事件上报

API:

reportCountEvent(long uid, String eid, double evalue, String label)
// 计算事件上报,客户端埋点调用。统计报表会统计该事件的点击数,设备数等,除此之外还会计算自定义事件值的总和及平均值。
// Parameters:
//      uid 用户 id,如无用户 id,请传 0
//      eid 事件 id,客户端自定义,可在统计报表后台设置别名
//      evalue 自定义事件值,统计报表根据此值进行求和,求平均值。
//      label 事件的标签,可为空。如果同类型事件有不同属性,可利用该参数传不同的标签,统计报表会根据此值进行分类统计。

例子:

// 如要统计购买游戏币的行为,且游戏币存在 5,10 面值。
// 除了利用事件值上报面值,可统计游戏币的购买总额及平均值等情况。
// 还可以利用 label 上报不同的面值标签,对标签进行分类统计。
HiidoSDK.instance().reportCountEvent(0,"gameCurrencyBuy",5,"gameCurrency5");
HiidoSDK.instance().reportCountEvent(0,"gameCurrencyBuy",10,"gameCurrency10");

方式3:带有标签及属性的数值事件上报

API:

reportCountEvent(long uid, String eid, double evalue, String label, Property prop)
// 计算事件上报,客户端埋点调用。统计报表会统计该事件的点击数,设备数等,除此之外还会计算自定义事件值的总和及平均值。
// Parameters:
//      uid 用户 id,如无用户 id,请传0
//      eid 事件 id,客户端自定义,可在统计报表后台设置别名
//      evalue 自定义事件值,统计报表根据此值进行求和,求平均值。
//      label 事件的标签,可为空。如果同类型事件有不同属性,可利用该参数传不同的标签,统计报表会根据此值进行分类统计。
//      prop 事件的属性参数,可为空。以 key,value 的形式上报数据,注意:如果 value 为数值类型,则会统计平均数及总数,如果 value 为字符串类型,则会统计 value 出现的频度。 
// 注意:key 与 value 不能带有特殊字符,且 key,value 不能超过256字节。

例子:

// 如要统计购买游戏币的行为,且游戏币存在 5,10 面值。
// 除了利用事件值上报面值,可统计游戏币的购买总额及平均值等情况。
// 还可以利用 label 上报不同的面值标签,对标签进行分类统计。
// 除此之外,如果你还想统计购买的玩家级别,可以利用属性参数上报玩家级别,统计玩家级别的分布情况。
Property pro = new Property();
pro.putString("玩家级别", "5");
HiidoSDK.instance().reportCountEvent(0,"gameCurrencyBuy",5,"gameCurrency5",pro);
HiidoSDK.instance().reportCountEvent(0,"gameCurrencyBuy",10,"gameCurrency10",pro);

注意:

  1. 如果你想记录同一件事件中的不同类型,无需定义多个 eid,可以使用该方法的参数 label 传入不同标签值来区分。海度会根据该 label 值进行分类汇总统计
  2. 该接口中的第三个 evalue,就是用来统计相关求和,求平均值的数值,该参数传入的必须为数字,否则将无法计算。
    例如,如果你想统计某一购买行为的金额,那么就可以利用数值计算事件,在 evalue 中把金额上报上来,海度会统计事件所产生的金额总数及平均数。
  3. 如果事件上报需要上报更多的参数,请使用属性参数 property,该参数以 key,value 的形式上报数据,如果 value 为数值类型,将会统计数值的总数与平均数,如果 value 为字符串类型,将会统计 value 出现的频度及分布情况。
  4. 事件中的事件 id,标签,属性值均不能带有特殊字符串,且不能超过256字节。

4.2 崩溃上报

崩溃上报有两种方式。一是崩溃自动上报,二是调用者自己捕获崩溃然后调用 SDK 接口上报。默认方式为 SDK 自动上报。

1、 崩溃 自动 上报,并不需要调用者做任何事情,只要集成了 SDK 的基本功能,就会自动开启了崩溃上报。如果你不想开启崩溃自动上报,你可以在 SDK 初始化的时候设置关闭该功能。

例子:

//设置相应的参数,可选
Options options = HiidoSDK.instance().getOptions();
//设置不开启自动崩溃上报,默认为开启
options.isOpenCrashMonitor = false;
HiidoSDK.instance().setOptions(options);

2、崩溃 手动 上报。

如果开发者希望自己捕获崩溃手动上报,则需要初始化 SDK 时,把 SDK 自动崩溃上报设置 options.isOpenCrashMonitor=false,然后调用 SDK 以下方法手动上报到服务器。

API:

reportCrash(long uid, String crashMsg)
// 崩溃信息上报。SDK 通过 Thread.UncaughtExceptionHandler 自动捕获程序崩溃日志,并发送到服务器。如果开发者自己捕获了崩溃,且关闭了 SDK 自动上报崩溃功能,需要上传到服务器可以调用下面方法
// Parameters:
//      uid 用户 id
//      crashMsg 崩溃信息

例子:

try {
    int i=0/0;
} catch(Exception e) {
    HiidoSDK.instance().reportCrash(SysConstants.UID, e.getMessage());
}

3、如果开发者既想要保留 SDK 崩溃自动上报功能,又想有自己崩溃处理类,那么需要开发者在初始化 SDK 之前利用 Thread.setDefaultUncaughtExceptionHandler(myUncaughtExceptionHandler) 方法,设置自己的崩溃处理类。这样 SDK 就会在自动上报崩溃信息后,调用 myUncaughtExceptionHandler的uncaughtException 方法,执行开发者自己的崩溃处理逻辑。
例子:

//设置相应的参数,可选
Options options = HiidoSDK.instance().getOptions();

//设置不开启自动崩溃上报,默认为开启
options.isOpenCrashMonitor = false;
HiidoSDK.instance().setOptions(options);

//设置开发者自己的崩溃处理,可选
MyUncaughtExceptionHandler myUncaughtExceptionHandler = new MyUncaughtExceptionHandler(this);
Thread.setDefaultUncaughtExceptionHandler(myUncaughtExceptionHandler); 

//appkey 必须与后台申请的 appkey 保持一致,必选
String appKey = "your appkey";

//appId 不设置默认获取包名,可选
String appId = "hiido_statis-demo";

//from 为发布的渠道,必选
String from = "your from";

//设置 uid,默认为0,需客户端自己维护 uid,如用户登录后把 uid 赋值。必选
OnStatisListener listener = new OnStatisListener() {
    @Override
    public long getCurrentUid() {
        return SysConstants.UID;
    }
};

//初始化 sdk(方式1),必选
HiidoSDK.instance().appStartLaunchWithAppKey(this, appKey, appId, from,listener);

4.3 登录行为统计

SDK提供了登录行为上报接口,当客户端存在用户登录行为,则登录成功后,可以把登录行为信息上报,海度会统计登录用户等相关指标。

API:

reportLogin(long uid)
// 登录行为上报。当用户登录成功调用该方法,上报登录行为数据。
HiidoSDK.instance().reportLogin(1);
// Parameters:
//      uid 用户 id

例子:

//模拟登录
int uid = 0;
while(uid==0) {
    uid=random.nextInt(10);
}
//在用户登录成功后,客户端把用户 id 维护起来,且调用登录接口上报
SysConstants.UID = uid;
HiidoSDK.instance().reportLogin(SysConstants.UID);

4.4 行为成功/失败统计

SDK 提供了行为成功/失败上报接口,客户端可调用该接口上部某种行为的成功或失败情况。客户端要使用该接口,成功接口与失败接口所对应的行为 id 必须一致,不然无法正确统计该行为的成功率与失败率。

API:

reportSuccess(long uid, String aid, String typ, long duration, String param)
//
// 行为成功上报。上报某种行为的成功情况,统计该行为的成功率及成功所需时长等。一般情况下,reportSuccess(long, String, String, long, String)与reportFailure(long, String, String, String, String, String)组合使用,上报某一行为的成功与失败情况。
// Parameters:
//      uid 用户 id,如无用户 id,请传 0
//      aid 行为 id,客户端自定义
//      typ 客户端自定义,行为可能存在的不同类型,可空
//      duration 成功所需时长(毫秒),如无请传 0
//      param 附带参数(备用)

reportFailure(long uid, String aid, String type, String failCode, String failMsg, String param)
//
// 行为失败上报。上报某种行为的失败情况,统计该行为的失败率及失败原因分布等。一般情况下,reportSuccess(long, String, String, long, String)与reportFailure(long, String, String, String, String, String)组合使用,上报某一行为的成功与失败情况。
// Parameters:
//      uid 用户 id,如无用户 id,请传 0
//      aid 行为 id,客户端自定义
//      type 客户端自定义,行为可能存在的不同类型,可空
//      failCode 客户端自定义,行为失败码,可空
//      failMsg 失败的详细信息,可空
//      param 附带参数(备用)

例子:

//统计登录行为的成功率与失败率,可调用成功/失败行为接口上报。
//模拟登录
int uid = random.nextInt(10);
boolean isLoginSucceed = uid%2==0;      //模拟登录是否成功
int lastUid = 0;
String aid = "loginId";                 //登录的行为 id
String type = "autoLoginType";          //登录的类型为自动登录
if(isLoginSucceed){
    lastUid = uid;
    long duration = 1000;               //假设登录成功所需时长 1000
    HiidoSDK.instance().reportSuccess(uid, aid, type,duration,null);
} else {
    String failCode = "404";            //假设失败码为 404
    String failMsg = "page not found";  //假设失败原因为 page not found
    HiidoSDK.instance().reportFailure(lastUid, aid, type, failCode,failMsg,null);
}

4.5 在线参数功能

SDK 提供了在线参数功能。客户端开发者可以在海度系统网站后台设置在线参数,以 K,V 的形式。然后在客户端中利用海度 SDK 调用相关接口,获取网站后台上设置的 K,V 值。主要接口有以下两个。

1、开启并更新在线参数。在 app 的主入口处,调用 HiidoSDK.instance().updateOnlineConfigs(Context) 实现开启与更新在线参数。该方法调用越早越好,建议是在程序入口的 Application 中,初始化 SDK 后调用。因为该方法会从海度网站获取设置好的在线参数值,缓存在本地,供 HiidoSDK.instance().getOnlineConfigParams(Context,String) 使用。HiidoSDK.instance().updateOnlineConfigs(Context) 为异步调用,如果你关心何时更新完毕,你可以通过 HiidoSDK.instance().setOnLineConfigListener(OnLineConfigListener) 方法设置一个监听器。该监听器会在更新完毕后回调。HiidoSDK.instance().updateOnlineConfigs(Context) 可多次调用,监听器也会多次回调。

API:

updateOnlineConfigs(Context context)
// 更新并开启在线配置功能,在应用初始化时调用开启。如果你需要更新在线配置及时,你可以根据需要,在多处地方调用该方法。该方法异步更新,如果你关心是否更新完毕,你可以设置监听器回调。setOnLineConfigListener(OnLineConfigListener)。
// Parameters:
//      context 当前上下文
            
setOnLineConfigListener(OnLineConfigListener onLineConfigListener)
// 设置在线更新配置回调监听器。设置该监听器,在 updateOnlineConfigs(Context context)方法执行完之后,将会自动回调一次。
// Parameters:
//      onLineConfigListener

例子:

//开启在线参数功能,并获取更新
HiidoSDK.instance().updateOnlineConfigs(this);
//设置 listener,更新完会回调。
HiidoSDK.instance().setOnLineConfigListener(new OnLineConfigListener() {
    @Override
    public void onDataReceived(JSONObject arg0) {
        //海度后台网站上设置的所有 k,v 值
        Log.i("hiido_statis-demo", ".onCreate:onDataReceived ="+arg0.toString());
    }
});

2、获取在线在线参数。在客户端需要用到在线参数的地方,调用 HiidoSDK.instance().getOnlineConfigParams(Context,String),获取海度后台网站上设置好的 K,V 值。在调该方法之前,必须先至少调一次 HiidoSDK.instance().updateOnlineConfigs(Context) 更新在线参数。

API:

getOnlineConfigParams(Context context, String onlineKey)
//获取在线配置属性值。注意在使用该方法之前,必须要在应用初始化时尽早调用 updateOnlineConfigs(Context context)方法,更新在线配置,不然可能获取不到属性值。
// Parameters:
//      context 当前上下文
//      onlineKey 对应海度系统后台上设置的 key
// Returns:
//      参数值

例子:

//获取海度后台网站上设置 Key 为 T 的值。
String tValue = HiidoSDK.instance().getOnlineConfigParams(MainActivity.this,"T");
Toast.makeText(getBaseContext(), "getOnlineConfigParams(\"T\") = ["+tValue+"]",
Toast.LENGTH_SHORT).show();

5 高级配置项

5.1 发送策略配置

数据发送策略分别以下2种:

  1. 立即发送。
  2. 累计或定时发送,满足其一即可发送。

默认情况下,发送策略为累计或定时发送,如实际情况需要改为立即发送的,可配置options.behaviorSendThreshold = 0

例子:

//设置发送机制为立即发送,默认为累计或定时发送,可选
options.behaviorSendThreshold = 0;

5.2 超时时间配置

当应用按 home 键回到后台,超过一定时间时,会认为是一次启动完毕,这个一定时间为超时时间。
超时时间默认为30秒,开发者可根据实际需要设置超时时间。时间单位为毫秒(注:1秒=1000毫秒)。
例子:

//设置 session 超时时间,默认为30秒,可选
options.backgroundDurationMillisAsQuit = 1000*30;

5.3 崩溃自动上报配置

崩溃上报功能默认为自动上报,为了灵活开发者调用,SDK提供了一个参数,供开发者选择开启还是关闭崩溃自动上报功能。

例子:

//设置不开启自动崩溃上报,默认为开启
options.isOpenCrashMonitor = false;

5.4 APPKEY,渠道配置

Appkey 与渠道的初始化可以通过在 Androidmanifest.xml 文件配置 meta-data[HIIDO_APPKEY][HIIDO_CHANNEL]实现。请不要同时在代码设置与meta-data设置,SDK将会以代码设置为准。

例子:

<!-- 配置渠道信息,-->
<meta-data android:name="HIIDO_CHANNEL" android:value="your channel"></meta-data>
<!-- 配置应用 key,-->
<meta-data android:name="HIIDO_APPKEY" android:value="your appkey"></meta-data>