Android SDK API

SDK 初始化 API

  • JAnalyticsInterface.init(Context context)
    • 接口说明:
      • 初始化接口。建议在Application的onCreate中调用
    • 参数说明:
      • context:android的上下文
    • 调用示例:
  1. JAnalyticsInterface.init(this);
  • JAnalyticsInterface.setDebugMode(boolean enable)
    • 接口说明:
      • 设置是否开启debug模式。true则会打印更多的日志信息。建议在init接口之前调用。
    • 参数说明:
      • enable:debug开关
    • 调用示例:
  1. JAnalyticsInterface.setDebugMode(true);
  • JAnalyticsInterface.initCrashHandler(Context context)
    • 接口说明:
      • 开启crashlog日志上报
    • 参数说明:
      • context:android的上下文
    • 调用示例:
  1. JAnalyticsInterface.initCrashHandler(this);
  • JAnalyticsInterface.stopCrashHandler(Context context)
    • 接口说明:
      • 关闭crashlog日志上报
    • 参数说明:
      • context:android的上下文
    • 调用示例:
  1. JAnalyticsInterface.stopCrashHandler(this);
  • JAnalyticsInterface.setChannel(Context context, String channel)
    • 接口说明:
      • 动态配置channel,优先级比AndroidManifest里配置的高
    • 参数说明:
      • context:android的上下文
      • channel:希望配置的channel,传null表示依然使用AndroidManifest里配置的channel
    • 调用示例:
  1. JAnalyticsInterface.setChannel(this, "channel_1");

页面流统计 API

  • JAnalyticsInterface.onPageStart(Context context,String pageName)
    • 接口说明:
      • 页面启动接口。在页面(activity和fragment)的相关生命周期内调用,和onPageEnd需要成对调用,关于activity和fragment的不同情况下会对生命周期造成影响,详细请见说明
    • 参数说明:
      • context:activity的上下文
      • pageName:页面名称
    • 调用示例:
  1. JAnalyticsInterface.onPageStart(this,this.getClass().getCanonicalName());
  • JAnalyticsInterface.onPageEnd(Context context,String pageName)
    • 接口说明:
      • 页面结束接口。在页面(activity和fragment)的相关生命周期内调用,和onPageStart需要成对调用,关于activity和fragment的不同情况下会对生命周期造成影响,详细请见说明
    • 参数说明:
      • context:activity的上下文
      • pageName:页面名称
    • 调用示例:
  1. JAnalyticsInterface.onPageEnd(this,this.getClass().getCanonicalName());

关于页面流做如下说明:

  • 开发者自己决定activity和fragment是否是一个页面。在相应的方法调用onPageStart和onPageEnd方法,并且需要是成对调用

  • 当activity中包含多个fragment,每个fragment都需当做页面统计时,基于fragment的切换模式,提供以下建议

    • replace模式:这种模式切换fragment,则是正常进行onResume和onPause的生命周期。
    • viewpage中包含多个fragment进行切换:这种模式切换需在fragment中监听 setUserVisibleHint接口,通过其返回的参数进行onPageStart和onPageEnd的调用
    • show/hide模式:这种模式下切换fragment需要监听onHiddenChanged接口来确认fragment是否显示。并需要在onResume中也需要调用onPageStart(onPause不需要调用onPageEnd)

自定义事件统计 API

  • JAnalyticsInterface.onEvent(Context context,Event event)

    • 接口说明:
      • 自定义事件。通过传入不同的事件模型来进行各种事件的统计,具体的事件模型请查看事件模型介绍
    • 参数说明:
      • context:上下文
      • event:事件模型,支持CountEvent(计数事件)、CalculateEvent(计算事件)、RegisterEvent(注册事件)、LoginEvent(登录事件)、BrowseEvent(浏览事件)、PurchaseEvent(购买事件)
        关于自定义事件做如下说明:
  • 字符串字段(key与 value)限制大小不超过256字节,超过限制的key或value该事件将会被丢弃.

  • 自定义键值对数目不能超过10个,超过10个限制该事件将会被丢弃.
    调用示例:
  1. CountEvent cEvent = new CountEvent("eventId","eventName");
  2. JAnalyticsInterface.onEvent(context, cEvent);

计数事件模型

  • CountEvent
    该模型是自定义计数事件模型,可以设置参数进行数据上报。

参数说明:

参数名称参数类型参数说明
eventIdString事件Id(非空)
extMapMap扩展参数

调用示例:

  1. CountEvent cEvent = new CountEvent("test1_event_id");
  2. cEvent.addKeyValue("key1","value1").addKeyValue("key2","value2");

注意:

  1. 自定义计数事件模型中扩展参数中不能使用以下 key 值:
  2. event_id
  3. 此类 key 已被模型使用,如果使用则会导致统计到的数据不准确.

计算事件模型

  • CalculateEvent
    该模型是自定义计算事件模型,计算事件会通过相同的事件不同的值进行累加,可以设置参数进行数据上报。

参数说明:

参数名称参数类型参数说明
eventIdString事件Id(非空)
eventValuedouble事件的值(非空)
extMapMap扩展参数

调用示例:

  1. CalculateEvent cEvent = new CalculateEvent("test2_event_id","test2_event_value");
  2. cEvent.addKeyValue("key1","value1").addKeyValue("key2","value2");

注意:

  1. 自定义计算事件模型中扩展参数中不能使用以下 key 值:
  2. event_id
  3. event_value
  4. 此类 key 已被模型使用,如果使用则会导致统计到的数据不准确.

登录事件模型

  • LoginEvent
    该模型是登录事件模型,可以设置参数进行数据上报。

参数说明:

参数名称参数类型参数说明
loginMethodString登录方式(非空)
loginSuccessboolean登录是否成功(非空)
extMapMap扩展参数

调用示例:

  1. LoginEvent lEvent = new LoginEvent("qq",true);
  2. lEvent.addKeyValue("key1","value1").addKeyValue("key2","value2");

注意:

  1. 登录事件模型中扩展参数中不能使用以下 key 值:
  2. login_method
  3. login_success
  4. 此类 key 已被模型使用,如果使用则会导致统计到的数据不准确.

注册事件模型

  • RegisterEvent
    该模型是注册事件模型,可以设置参数进行数据上报。

参数说明:

参数名称参数类型参数说明
registerMethodString注册方式(非空)
registerSuccessboolean注册是否成功(非空)
extMapMap扩展参数

调用示例:

  1. RegisterEvent rEvent = new RegisterEvent("sina",true);
  2. rEvent.addKeyValue("key1","value1").addKeyValue("key2","value2");

注意:

  1. 注册事件模型中扩展参数中不能使用以下 key 值:
  2. register_method
  3. register_success
  4. 此类 key 已被模型使用,如果使用则会导致统计到的数据不准确.

浏览事件模型

  • BrowseEvent
    该模型是浏览事件模型,可以设置参数进行数据上报。

参数说明:

参数名称参数类型参数说明
browseIdString浏览内容id
browseNameString内容名称(非空)
browseTypeString内容类型
browseDurationlong浏览时长,单位秒
extMapMap扩展参数

调用示例:

  1. BrowseEvent bEvent = new BrowseEvent("browse_id","深圳热点新闻","news",30);
  2. bEvent.addKeyValue("key1","value1").addKeyValue("key2","value2");

注意:

  1. 浏览事件模型中扩展参数中不能使用以下 key 值:
  2. browse_content_id
  3. browse_name
  4. browse_type
  5. browse_duration
  6. 此类 key 已被模型使用,如果使用则会导致统计到的数据不准确.

购买事件模型

  • PurchaseEvent
    该模型是购买事件模型,可以设置参数进行数据上报。

参数说明:

参数名称参数类型参数说明
purchaseGoodsidString商品id
purchaseGoodsNameString商品名称
purchasePricedouble购买价格(非空)
purchaseSuccessboolean购买是否成功(非空)
purchaseCurrencyCurrency货币类型,一个枚举类
purchaseGoodsTypeString商品类型
purchaseGoodsCountint商品数量
extMapMap扩展参数

调用示例:

  1. PurchaseEvent pEvent = new PurchaseEvent("goodsId","篮球",300,true,Currency.CNY,"sport",1);
  2. pEvent.addKeyValue("key1","value1").addKeyValue("key2","value2");

注意:

  1. 购买事件模型中扩展参数中不能使用以下 key 值:
  2. purchase_goods_id
  3. purchase_goods_name
  4. purchase_price
  5. purchase_currency
  6. purchase_goods_type
  7. purchase_quantity
  8. 此类 key 已被模型使用,如果使用则会导致统计到的数据不准确.

统计上报周期API

  • JAnalyticsInterface.setAnalyticsReportPeriod(Context context, int period)
    • 接口说明:
      • 设置统计上报的自动周期,未调用前默认即时上报
    • 参数说明:
      • period:周期,单位秒,最小10秒,最大1天,超出范围会打印调用失败日志。传0表示统计数据即时上报
    • 旧版接口:
      • JAnalyticsInterface.setAnalyticsReportPeriod(int period),请使用带Context参数的新接口
    • 调用示例:
  1. JAnalyticsInterface.setAnalyticsReportPeriod(getApplicationContext(), 60);

账户维度模型介绍

开发者可以为用户增加账户信息,使统计数据可以以账户维度做统计分析现开发的属性有:

中文名英文名类型鉴权/备注
账号IDaccountIDString
账号创建时间creationTimelong时间戳
姓名nameString
性别sexint0未知 1男 2女/不能为其他数字,默认为0
是否付费paidint0未知 1是 2否/不能为其他数字,默认为0
出生年月birthdatelongyyyyMMdd格式校验
手机号码phoneString手机号码校验
电子邮件emailString邮箱格式校验
新浪微博IDweiboIDString
微信IDwechatIDString
QQ IDqqIDString
自定义维度extrakey-valuekey只能为字符串,value只能为字符串或数字类型或null类型; 当value设置为空类型时,将该key从服务器上删除 key不能使用极光内部namespace(符号$)

具体使用方法,是先调用cn.jiguang.analytics.android.api.Account设置属性,再调用JAnalyticsInterface.identifyAccount(context, account, callback)登记账户信息也可以只设置部分属性,再次调用identifyAccount修改账户信息调用示例:

  1. Account account = new Account("account001"); //account001为账号id
  2. account.setCreationTime(1513749859L); //账户创建的时间戳
  3. account.setName("张三");
  4. account.setSex(1);
  5. account.setPaid(1);
  6. account.setBirthdate("19880920"); //"19880920"是yyyyMMdd格式的字符串
  7. account.setPhone("13800000000");
  8. account.setEmail("support@jiguang.cn");
  9. account.setExtraAttr("attr1","value1"); //key如果为空,或者以极光内部namespace(符号$)开头,会设置失败并打印日志
  10. JAnalyticsInterface.identifyAccount(getApplicationContext(), account, new AccountCallback() {
  11. @Override
  12. public void callback(int code, String msg) {
  13. Log.d("tag", "code = " + code + " msg =" + msg);
  14. }
  15. })

AccountCallback是回调方法,可以根据返回的code和msg获取调用成功/失败的信息

错误码

codemessage备注
0调用成功
1001account_id can not be emptyaccountID为关键参数,不能填写null或""
1002detach failed because account_id is empty当前没有绑定accountID时调用了解绑接口
1003operation is too busy10s内请求频率不能超过30次
1004account_id is too long, please make it less than 255 charactersaccountID长度不能超过255字符
1005failed, please call JAnalyticsInterface.init(context) firstSDK尚未初始化,应先调用init()方法
1101the value of $sex should be in [0,2]0未知 1男 2女/不能为其他数字,默认为0
1101the value of $birthdate should be date as yyyyMMddyyyyMMdd格式校验
1101the value of $paid should be in [0,2]0未知 1是 2否/不能为其他数字,默认为0
1101the value of $phone is NOT a phone number电话号码格式校验(含国际号码)
1101the value of $email is NOT email address邮箱格式校验
1101the key={key} in extra is invalid自定义属性key不能为空,不能使用极光内部namespace(符号$)
1101the value of {key} in extra should be String or Number自定义属性value只能为字符串或数字类型或null类型

如果要解绑当前用户信息,调用JAnalyticsInterface.detachAccount(context, callback);调用示例:

  1. JAnalyticsInterface.detachAccount(getApplicationContext(), new AccountCallback() {
  2. @Override
  3. public void callback(int code, String msg) {
  4. Log.d("tag", "code = " + code + " msg =" + msg);
  5. }
  6. })