Android SDK 使用说明

Android SDK 用于 Android 原生 App

最新版本下载地址:analysys_android_v4.1.0

更新时间:2018/09/18

更新内容: 在初始化配置中新增encryptType参数,提供对上传数据可选是否进行加密功能

1. 集成准备

1.1 Eclipse SDK 集成

将需要的jar包拷贝到本地工程libs子目录下;在Eclipse中右键工程根目录,选择 property —> Java Build Path —> Libraries ,然后点击Add External JARs... 选择指向jar的路径,点击OK,即导入成功。(ADT17及以上不需要手动导入)

1.2 AndroidStudio SDK 集成

  1. 选择 SDK 功能组件并下载,解压.zip 文件得到相应 jar 包(例如:x.x.x.jar等),在 Android Studio 的项目工程 libs 目录中拷入相关组件 jar 包。

  2. 右键 Android Studio 的项目工程 —> 选择 Open Module Settings —>在 Project Structure 弹出框中 —>选择 Dependencies 选项卡 —>点击左下"+"—>选择 jar 包类型—>引入相应的 jar 包。

2. SDK 初始化

2.1 配置 Manifest

在 AndroidManifest.xml 文件中配置主要包括添加权限,配置 AppKey 和 Channel。AppKey 和 Channel 也可以通过 init() 初始化接口配置,如果两种方式配置不同的值,优先取 init() 配置的值。示例如下:

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

<application >

    ......

    <meta-data
    android:name="ANALYSYS_APPKEY"
    android:value="4g6dp3d9fh5r0s3jr87j3ej94k04" />
    <meta-data
    android:name="ANALYSYS_CHANNEL"
    android:value="WanDouJia" />
</application>

权限说明:

  • INTERNET(必须)允许程序连接网络,与服务器进行数据传输
  • ACCESS_NETWORK_STATE(必须)检测网络类型,用于区分用户网络状态 2G/3G/4G/WIFI
  • READ_PHONE_STATE(必须)获取用户设备 IMEI,使用 IMEI 和 MAC 地址做设备唯一标识
  • ACCESS_WIFI_STATE(必须)获取用户设备 MAC 地址,用做设备唯一标识

2.2 初始化接口

建议在应用 Application 中调用 SDK 初始化接口 init(), 配置 appKey、channel,注意:初始化接口为必须调用接口。设置 URL 地址,该地址用于上传事件信息、获取可视化配置信息、连接 websocket 调试。接口如下:

public static void init(Context context, AnalysysConfig config);
  • context :应用上下文对象
  • config :为自定义实体 bean,用于设置初始化属性值,目前config支持的属性有:
    1. appKey:网站获取的 Key
    2. channel:应用下发的渠道
    3. baseUrl:设置 URL 地址(只支持域名,如:growth.analysys.cn)。默认使用的上行数据地址https://growth.analysys.cn,websocket 地址使用的是wss://growth.analysys.cn。如果需要上传数据使用http协议或者 websocket 使用的是ws协议,此处可赋值为空,调用接口setUploadURL(4.1) / setVisitorDebugURL(4.2) / setVisitorConfigURL(4.2)设置即可
    4. autoProfile :设置是否追踪新用户的首次属性,false:不追踪新用户的首次属性,true:追踪新用户的首次属性(默认)
    5. encryptType :设置数据上传时的加密方式,目前只支持 AES 加密(EncryptEnum.AES),如不设置此参数,数据上传不加密。

示例:

public class AnalysysApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        AnalysysConfig config = new AnalysysConfig();
        // 设置key
        config.setAppKey("77a52s552c892bn442v721");
        // 设置渠道
        config.setChannel("豌豆荚");
        // 设置上传地址
        config.setBaseUrl("growth.analysys.cn");
        // 设置追踪新用户的首次属性
        config.setAutoProfile(true);
        // 设置使用AES加密
        config.setEncryptType(EncryptEnum.AES);
        // 调用初始接口
        AnalysysAgent.init(this, config);
    }
}

3. 基础接口介绍

3.1 Debug 模式

Debug 主要用于开发者测试,接口如下:

public static void setDebugMode(Context context, int debugMode);
  • context:应用上下文对象
  • debugMode:debug 模式,默认关闭状态。发布版本时 debugMode 模式设置为0

    • 0:表示关闭 Debug 模式
    • 1:表示打开 Debug 模式,但该模式下发送的数据仅用于调试,不计入平台数据统计
    • 2:表示打开 Debug 模式,该模式下发送的数据可计入平台数据统计

      注意:若设置其他值则不生效,使用默认值。

示例:

//  设置 打开 debug 模式
AnalysysAgent.setDebugMode(this, 2);

3.2 统计页面

页面跟踪,SDK 默认设置跟踪所有页面,支持自定义页面信息。接口如下:

public static void pageView(Context context,String pageName);
public static void pageView(Context context,String pageName, Map<String, Object> properties);
  • context:应用上下文对象
  • pageName:页面标识,为字符串,最大长度255字符
  • properties:页面信息,properties 最多包含 100条,且 key 以字母或$开头,包含字母、数字、下划线和$,字母不区分大小写,$开头为预置事件/属性,最大长度 125字符,不支持乱码和中文,value 支持类型:String/Number/boolean/集合/数组,若为数组或集合,则最多包含 100条,若为字符串,最大长度 255字符

示例:

// 正在开展某个活动,需要统计活动页面;
AnalysysAgent.pageView(mContext,"活动页");

......

// 访问手机活动页面,活动页面内容为优惠出售iPhone手机,手机价格为5000元
Map<String, Object> info = new HashMap<>();
info.put("commodityName", "iPhone");
info.put("commodityPrice", 5000);
AnalysysAgent.pageView(mContext, "商品页", info);

3.2.1 自动采集页面

自动采集页面信息开关,打开时自动记录用户访问的页面。默认为打开状态。接口如下:

public static void setAutomaticCollection(Context context, boolean isAuto);
  • context:应用上下文对象
  • isAuto:开关值,默认为 true 打开,设置 false 关闭

示例:

// 关闭页面中自动采集
AnalysysAgent.setAutomaticCollection(mContext,false);

3.2.2 忽略部分页面自动采集

开发者可以设置某些页面不被自动采集,设置后自动采集时将会忽略这些页面。接口如下:

public static void setIgnoredAutomaticCollectionActivities(Context context, List<String> activitiesName);
  • context:应用上下文对象
  • activitiesName:多个页面名称

示例:

List<String> list = new ArrayList<String>();
list.add("LaunchActivity");
// 忽略LaunchActivity页面自动采集
AnalysysAgent.setIgnoredAutomaticCollectionActivities(mContext, list);

3.3 统计事件

用户行为追踪,可以设置自定义属性。接口如下:

public static void track(Context context, String eventName);
public static void track(Context context, String eventName, Map<String, Object> eventInfo);
  • context:应用上下文对象
  • eventName:事件名称,以字母或 $ 开头,包含字母、数字、下划线和 $,字母不区分大小写,$ 开头为预置事件/属性,最大长度 99字符,不支持乱码和中文
  • eventInfo:自定义属性,用于对事件描述。eventInfo 最多包含 100条,且 key 以字母或 $ 开头,包含字母、数字、下划线和 $,字母不区分大小写,$ 开头为预置事件/属性,最大长度 125字符,不支持乱码和中文,value 支持类型:String/Number/boolean/集合/数组,若为数组或集合,则最多包含 100条,若为字符串,最大长度 255字符

示例:

// 添加事件
AnalysysAgent.track(mContext, "back");

......

// 用户购买手机
Map<String, Object> info = new HashMap<>();
info.put("type", "Phone");
info.put("name","Apple iPhone8");
info.put("money", 4000);
info.put("count",1);
AnalysysAgent.track(mContext, "buy", info);

3.4 用户关联

用户 id 关联接口。将 aliasID 和 originalId 关联,计算时会认为是一个用户的行为。接口如下:

public static void alias(Context context, String aliasId, String originalId);
  • context:应用上下文对象
  • aliasId:新的唯一用户 id。 长度大于 0,且小于 255字符
  • originalId :待关联的用户 id,可以是现在使用也可以是历史使用的 id,不局限于本地正使用的 Id。 可以为空值,若为空时使用本地的 distinctId。长度大于 0 且小于 255字符

示例:

// 登陆账号时调用,只设置当前登陆账号即可和之前行为打通
AnalysysAgent.alias(mContext,"sanbo","");

......

//现在登陆账号是zhangsan,和历史上的 lisi是一个人。 此时不会关心登陆 zhangsan前的用户是谁
AnalysysAgent.alias(mContext,"zhangsan","lisi");

3.5 用户属性设置

用户属性是一个标准的 K-V 结构,K 和 V 均有相应的约束条件,如不符合则丢弃该次操作。

约束条件如下:

属性名称
以字母或`$`开头,包含字母、数字、下划线和`$`,字母不区分大小写,`$`开头为预置事件/属性,最大长度125字符,不支持乱码和中文
属性值
支持部分类型:String/Number/boolean/集合/数组;若为字符串,则最大长度 255字符;若为数组或集合,则最多包含 100条,且 key 约束条件与属性名称一致,value 最大长度 255字符

给用户设置单个或多个属性,如果之前不存在,则新建,否则覆盖。接口如下:

//设置单个用户属性
public static void profileSet(Context context, String propertyName, Object propertyValue);
//设置多个用户属性
public static void profileSet(Context context, Map<String, Object> property);

示例:

//设置用户的邮箱地址为yonghu@163.com
AnalysysAgent.profileSet(mContext,"Email","yonghu@163.com");

......

// 设置用户的邮箱和微信
Map<String, Object> info = new HashMap<>();
info.put("Email", "yonghu@163.com");
info.put("WeChatID", "weixinhao");
AnalysysAgent.profileSet(mContext, info);

4. 更多接口

4.1 单独指定上报地址设置

该方法仅在方舟私有化部署版本中有效,你可以将服务器地址设置为安装方舟服务器的实际地址。这里指定的服务器必须对公网可见。

4.1.1 设置数据上报地址

自定义上传地址,接口设置后,所有事件信息将上传到该地址。接口如下:

public static void setUploadURL(Context context, String url);
  • context:应用上下文对象
  • url:数据上传地址,格式为 scheme://host + :port(不包含/后的内容)。scheme 必须以 http://https:// 开头,host 只支持域名和 IP,长度小于 255字符,port 端口号必须携带

示例:

//设置自定义上传地址为http://growth.analysys.cn:8089
AnalysysAgent.setUploadURL(mContext,"http://growth.analysys.cn:8089");

4.1.2 设置可视化埋点上报地址

设置可视化调试阶段连接的 Websocket 服务器地址

接口:

public static void setVisitorDebugURL(Context context, String url);
  • context:应用上下文对象
  • url:websocket服务器地址,格式为 scheme://host + :port(不包含 / 后的内容)。scheme 必须以 ws://wss:// 开头,host 只支持域名和 IP,长度小于 255字符,port 端口号必须携带

示例:

//设置websocket服务器地址为ws://growth.analysys.cn:9091
AnalysysAgent.setVisitorDebugURL(mContext,"ws://growth.analysys.cn:9091");

设置可视化请求埋点配置的服务器地址

接口:

public static void setVisitorConfigURL(Context context, String url);
  • context:应用上下文对象
  • url:请求埋点配置的服务器地址,格式为 scheme://host + :port(不包含 / 后的内容)。scheme 必须以 http://https:// 开头,host 只支持域名和 IP,长度小于 255字符,port 端口号必须携带

示例:

// 设置请求埋点配置的服务器地址为http://growth.analysys.cn:8089
AnalysysAgent.setVisitorConfigURL(mContext,"http://growth.analysys.cn:8089");

4.2 用户属性

4.2.1 用户 ID 设置

唯一身份标识设置,接口如下:

public static void identify(Context context, String distinctId);
  • context:应用上下文对象
  • distinctId:唯一身份标识,长度大于 0 且小于 255字符

示例:

// 淘宝店铺,统计到来访用户
AnalysysAgent.identify(mContext,"fangke009901");

......

// 淘宝店铺,统计到老客用户
AnalysysAgent.identify(mContext,"laoke008021");

4.2.2 设置用户固有属性

设置用户的固有属性,只在首次设置时有效的属性。 如:应用的激活时间、首次登录时间等。如果被设置的用户属性已存在,则这条记录会被忽略而不会覆盖已有数据,如果属性不存在则会自动创建。接口如下:

public static void profileSetOnce(Context context, String propertyName, Object propertyValue);
public static void profileSetOnce(Context context, Map<String, Object> property);

示例:

// 设置用户激活时间
AnalysysAgent.profileSetOnce(mContext,"activationTime",1521280551929);

// 设置用户性别和出生时间
Map<String, Object> setOnceProfile = new HashMap<>();
setOnceProfile.put("birth", 548798705000);
setOnceProfile.put("sex", "male");
AnalysysAgent.profileSetOnce(mContext, setOnceProfile);

4.2.3 设置用户属性相对变化值

设置用户属性的相对变化值(相对增加,减少),只能对数值型属性进行操作,如果这个 Profile 之前不存在,则初始值为 0。接口如下:

public static void profileIncrement(Context context, String propertyName, Number propertyValue)
public static void profileIncrement(Context context, Map<String, Number> property);

示例:

//用户增加一岁
AnalysysAgent.profileIncrement(mContext,"age",1);

......

//用户玩某个游戏时间增加一年,游戏等级增加2
Map<String, Number> incrementProfile = new HashMap<>();
incrementProfile.put("gameAge", 1);
incrementProfile.put("gameRating", 2);
AnalysysAgent.profileIncrement(mContext, incrementProfile);

4.2.4 增加列表类型的属性

用户列表属性增加元素。接口如下:

//增加单个属性
public static void profileAppend(Context context, String propertyName, Object propertyValue);
//增加多个属性
public static void profileAppend(Context context, Map<String ,Object> propertyValue);
//增加多个属性
public static void profileAppend(Context context, String propertyName, List<Object> propertyValue);

示例:

// 增加用户爱好 music
AnalysysAgent.profileAppend(mContext, "hobby", "Music");

// 增加多个用户属性
Map<String, Object> map = new HashMap<String, Object>();
map.put("hobby", "PlayBasketball");
map.put("sports", "Run");
AnalysysAgent.profileAppend(mContext, map);

//增加多个用户爱好
List<Object> list = new ArrayList<>();
list.add("PlayBasketball");
list.add("music");
AnalysysAgent.profileAppend(mContext, "hobby", list);

4.2.5 删除设置的属性

删除已设置的用户属性。接口如下:

public static void profileUnset(Context context, String propertyName);
public static void profileDelete(Context context);
  • context:应用上下文对象
  • propertyName:属性名称,约束见3.5 属性名称

示例:

// 删除单个用户属性
AnalysysAgent.profileUnset(mContext, "age");

// 清除所有属性
AnalysysAgent.profileDelete(mContext);

4.3 通用属性

通用属性是每次上传事件信息都会带有的属性,通用属性是一个标准的 K-V 结构,K 和 V 均有相应的约束条件,如不符合则丢弃该次操作。

约束条件如下:

属性名称
以字母或 `$` 开头,包含字母、数字、下划线和 `$`,字母不区分大小写,`$` 开头为预置事件/属性,最大长度 125字符,不支持乱码和中文
属性值
支持部分类型:String/Number/boolean/集合/数组;若为字符串,则最大长度 255字符;若为数组或集合,则最多包含 100条,且 key 约束条件与属性名称一致,value最大长度255字符

4.3.1 注册通用属性

某一个体,在固定范围内,持续拥有的属性,每次数据上传都会携带。接口如下:

public static void registerSuperProperty(Context context, String superPropertyName, Object superPropertyValue);
public static void registerSuperProperties(Context context, Map<String, Object> superProperty);

示例:

// 在某视频平台,购买一年会员,该年内只需设置一次即可
AnalysysAgent.registerSuperProperty(mContext, "member","VIP");

......

// 小明在20岁的时候,购买了一年腾讯会员
Map<String, Object> property = new HashMap<>();
property.put("platform", "TX");
property.put("age", "20");
property.put("member", "VIP");
property.put("user", "xiaoming");
AnalysysAgent.registerSuperProperties(mContext, property);

4.3.2 删除通用属性

根据属性名称,删除已设置过的通用属性。接口如下:

//删除单个通用属性
public static void unRegisterSuperProperty(Context context, String superPropertyName);
//清除所有通用属性
public static void clearSuperProperties(Context context);
  • context:应用上下文对象
  • superPropertyName:属性名称,约束见4.3 属性名称

示例:

// 删除已经设置的用户年龄属性
AnalysysAgent.unRegisterSuperProperty(mContext, "age");

......

// 清除所有已经设置的通用属性
AnalysysAgent.clearSuperProperties(mContext);

4.3.3 获取通用属性

查询获取通用属性。接口如下:

// 获取单个通用属性
public static Object getSuperProperty(Context context, String superPropertyName);
// 获取所有的通用属性
public static Map<String, Object> getSuperProperties(Context context);
  • context:应用上下文对象
  • superPropertyName:属性名称,约束见4.3 属性名称

示例:

// 查看已经设置的"member"的通用属性
AnalysysAgent.getSuperProperty(mContext, "member");

......

// 查看所有已经设置的通用属性
AnalysysAgent.getSuperProperties(mContext);

4.4 SDK 发送策略

4.4.1 设置上传间隔时间

上传间隔时间设置,在 debug 模式关闭后生效。当事件触发间隔时间大于等于设置时间,则上传数据;默认 SDK 上传时间隔为 15s,设置后以设置为准,接口如下:

public static void setIntervalTime(Context context, long flushInterval;);
  • context:应用上下文对象
  • flushInterval:间隔时间(参数单位/秒),flushInterval 值大于 1

示例:

// 如设置上传间隔时间为20秒
AnalysysAgent.setIntervalTime(mContext,20);

4.4.2 设置事件最大上传条数

上传条数设置,在 debug 模式关闭后生效;当数据库内事件条数大于设置条数则上传数据,默认上传的条数为 10条。接口如下:

public static void setMaxEventSize(Context context, long size);
  • context:应用上下文对象
  • size:上传条数,size 值大于 1

示例:

// 如设置上传条数为20条
AnalysysAgent.setMaxEventSize(mContext,20);

4.4.3 本地缓存上限值

SDK 本地默认缓存数据的上限值为 10000条,当达到此阈值值将会删除最早 10条数据。可以通过 setMaxCacheSize 方法来设定缓存数据的上限值(参数单位/条)。接口如下:

public static void setMaxCacheSize(Context context, long size)
  • size:本地最多数据缓存条数

示例:

//设置本地数据缓存上限值为2000条
AnalysysAgent.setMaxCacheSize(mContext,2000);

4.4.4 手动上传

调用该接口立刻上传数据,接口如下:

public static void flush(Context context);
  • context:应用上下文对象

示例:

@Override
protected void onPause() {
    super.onPause();
    // 切换页面时想立即上传所有数据
    AnalysysAgent.flush(mContext);
}

4.5 清除本地设置

清除本地现有的设置(包括 id 和通用属性)重新开始统计。接口如下:

public static void reset(Context context);
  • context:应用上下文对象

示例:清除本地现有的设置,包括id和通用属性

// 删除设置的id和通用属性
AnalysysAgent.reset(mContext);

5. 消息推送

5.1 简介

推送消息是一种常用的运营方法。在合适的时间把合适的内容通过合适的方式推送给合适的人群,不仅能促进用户活跃,也能极大提升用户对产品的体验。 易观推送现在支持极光、个推、百度、小米四个三方平台。支持通过易观开发者平台设置以下三种类型的推送消息内容:

  • 下发通知,点击通知,打开宿主 App
  • 下发通知,点击通知,打开宿主 App 的特定页面
  • 下发通知,点击通知,触发打开特定的 URL 页面

首先,开发者需要在 App 中集成第三方推送系统的 SDK,并在 App 初始化过程中获取设备推送 ID,并保存在方舟分析的用户信息中。以下简要说明集成第三方推送系统的集成方式(在 4.4 中可参考各平台相关说明及示例代码)

5.2 设置设备推送 ID

该接口用于设置推送平台(provider)提供的设备推送 ID。

setPushID(Context mContext, String provider,String pushId)
  • mContext:上下文
  • provider:推送服务方,易观SDK支持的平台,可从 PushProvider 中查询
  • pushId:对应服务方的关于该移端端的唯一 ID

调用方法,以极光为例:

AnalysysAgent.setPushID(context, PushProvider.JPUSH, 极光推送对应的设备ID);

对应表:

推送ID 推送平台 调用方式
GETUI 个推 PushProvider.GETUI
JPUSH 极光 PushProvider.JPUSH
BAIDU 百度 PushProvider.BAIDU
XIAOMI 小米 PushProvider.XIAOMI

5.3 统计活动推广信息

5.3.1 追踪活动推广信息 API

追踪记录 provider 对应平台的消息推送的信息

trackCampaign (Context mContext, String campaign, boolean isClick)
  • mContext:上下文
  • campaign:该对象为一个 jsonObject 的 String 格式,其具体内容,为推送服务下发下来的 JsonString,直接传入 trackCampaign 接口即可
  • isClick:活动通知是否点击打开

调用方法:

AnalysysAgent.trackCampaign (context, campaignString, isClick);

5.3.2 追加 ThirdPushManager.PushListener 参数的追踪活动推广信息 API

trackCampaign (Context mContext, String campaign, boolean isClick, ThirdPushManager.PushListener listener)
  • mContext:上下文
  • campaign:该对象为一个 jsonObject 的 String 格式,其具体内容,为推送服务下发下来的 JsonString,直接传入 trackCampaign 接口即可
  • isClick:活动通知是否点击打开
  • listener:活动推送的后续自定义属性和行为的监听

调用方法:

ThirdPushManager.PushListener listener = new ThirdPushManager.PushListener() {
        @Override
        public void execute(String action, String jsonParams) {
            Log.e("EgPushTAG","通知被点击");
        }
};
AnalysysAgent.trackCampaign(context, campaign, isClick, listener);

5.4 三方推送平台 SDK 集成及示例代码

首先,开发者需要在 App 中集成第三方推送系统的 SDK,并在 App 初始化过程中获取设备推送 ID,并保存在方舟分析的用户信息中。目前易观SDK支持极光、百度、小米、个推四家第三方推送统计的支持。以下简要说明集成第三方推送系统的集成方式。

5.4.1 极光推送

请参考极光推送《Android SDK 文档》,将极光推送的 SDK 集成到 App 中。开发者需要将 App 的设备推送 ID 保存在方舟分析的用户信息中。方舟分析的用户分群等分析功能会使用该设备推送 ID 进行用户关联。

极光推送使用唯一的 Registration Id 标示设备。开发者需要在 Manifest 中定义 Receiver 接受极光推送的广播,通过 cn.jpush.android.intent.REGISTRATION 消息获取 Registration Id。

<receiver
    android:name="Your Receiver"
    android:enabled="true">
    <intent-filter>
        <action android:name="cn.jpush.android.intent.REGISTRATION" />
        <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
        <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
        <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
        <category android:name="You package Name" />
    </intent-filter>
</receiver>

Receiver 在 onReceiver 回调中接收的 Intent 中JPushInterface.EXTRA_REGISTRATION_ID 的 Action 中获取为 Registration Id ,开发者在极光推送初始化完成后,在广播中获取JPushInterface.EXTRA_REGISTRATION_ID 的值为 Registration Id 并将他保存在方舟分析的用户信息中;JPushInterface.ACTION_NOTIFICATION_RECEIVED 的 Action 表示通知被接收;JPushInterface.ACTION_NOTIFICATION_OPENED 的Action 表示通知接收成功后,被用户点击。

public void onReceive(Context context, Intent intent) {
    mContext = context;
    Bundle bundle = intent.getExtras();
    if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
        String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID);
        Log.d(TAG, "接收Registration Id: " + regId);
        //易观打开推送接口
        AnalysysAgent.setPushID(context, PushProvider.JPUSH, regId);
    } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
        int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);
        Log.d(TAG, "接收到推送下来的通知的ID: " + notifactionId);
        //接收到Push的通知
        AnalysysAgent.trackCampaign(context,bundle.getString(JPushInterface.EXTRA_EXTRA),false);
    } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
        Log.d(TAG, "用户点击打开了通知");
        //易观添加活动推广接口,点击了Push推下来的通知
        AnalysysAgent.trackCampaign(context,bundle.getString(JPushInterface.EXTRA_EXTRA),true);
    }
}

当统计消息接收成功或统计点击通知后需要执行自定义行为是,可实现 ThirdPushManager.PushListener 接口,将实现对象传入 trackCampaign,例如要在点击通知后,输出日志,如下调用:

ThirdPushManager.PushListener listener = new ThirdPushManager.PushListener() {
        @Override
        public void execute(String action, String jsonParams) {
            Log.e("EgPushTAG","通知被点击");
        }
    };
AnalysysAgent.trackCampaign(context,bundle.getString(JPushInterface.EXTRA_EXTRA),true,listener);

5.4.2 个推推送

请参考个推推送《Android SDK 文档》,将个推推送的 SDK 集成到 App 中。开发者需要将 App 的设备推送 ID 保存在方舟分析的用户信息中。方舟分析的用户分群等分析功能会使用该设备推送 ID 进行用户关联。

个推推送使用唯一的 clientid 标示设备。开发者需要在 Manifest 中定义 继承GTIntentService 的自定义 Service 接受个推推送的消息。

<service android:name="Your service" />

在继承自 GTIntentService 的 Service 中复写回调方法,在 onReceiveClientId回调中调用 setPushID,将他保存在方舟分析的用户信息中;在 onReceiveMessageData 回调接口中,调用 trackCampaign 接口设置用户点击通知后事件追踪。

@Override
public void onReceiveClientId(Context context, String clientid) {
    Log.e(TAG, "onReceiveClientId -> " + "clientid = " + clientid);
    AnalysysAgent.setPushID(context, PushProvider.GETUI,clientid);
}

@Override
public void onReceiveMessageData(Context context, GTTransmitMessage gtTransmitMessage) {
    Log.e(TAG,"onReceiveMessageData -> " + "msg:" + gtTransmitMessage.toString());
    byte[] payload = gtTransmitMessage.getPayload();
    String data = new String(payload);
    AnalysysAgent.trackCampaign(context,data,true);
}

当统计点击通知后需要执行自定义行为时,可实现 ThirdPushManager.PushListener 接口,将实现对象传入 trackCampaign,例如要在点击通知后,输出日志,如下调用:

ThirdPushManager.PushListener listener = new ThirdPushManager.PushListener() {
        @Override
        public void execute(String action, String jsonParams) {
            Log.e("EgPushTAG","通知被点击");
        }
    };
AnalysysAgent.trackCampaign(context,data,true,listener);

5.4.3 百度云推送

请参考百度云推送《Android SDK 文档》,将百度云推送的 SDK 集成到 App 中。开发者需要将 App 的设备推送 ID 保存在方舟分析的用户信息中。方舟分析的用户分群等分析功能会使用该设备推送 ID 进行用户关联。

百度云推送使用唯一的 Registration Id 标示设备。开发者需要在 Manifest 中定义 Receiver 接受百度云推送的广播,通过 com.baidu.android.pushservice.action.RECEIVE 消息获取 Registration Id。

<receiver android:name="Your Receiver">
    <intent-filter>
        <!-- 接收push消息 -->
        <action android:name="com.baidu.android.pushservice.action.MESSAGE" />
        <!-- 接收bind,unbind,fetch,delete等反馈消息 -->
        <action android:name="com.baidu.android.pushservice.action.RECEIVE" />
        <action android:name="com.baidu.android.pushservice.action.notification.CLICK" />
    </intent-filter>
</receiver>

在百度的 Receiver 在自定义了获取百度推送 ID 的回调接口 onBind,获取Channel Id,在该回调中调用 setPushID,将他保存在方舟分析的用户信息中;在 onNotificationArrived 回调接口中,调用 trackCampaign 接口设置接收通知成功;在 onNotificationClicked 回调接口中,调用 trackCampaign 接口设置用户点击通知后事件追踪。

@Override
public void onBind(Context context, int errorCode, String appid,
                    String userId, String channelId, String requestId) {
    Log.d(TAG, responseString);
    if (errorCode == 0) {
        // 绑定成功
        Log.d(TAG, "绑定成功");
        AnalysysAgent.setPushID(context, PushProvider.BAIDU,channelId);
    }
}
@Override
public void onNotificationArrived(Context context, String title,
                                    String description, String customContentString) {
    Log.d(TAG, notifyString);
    // 你可以參考 onNotificationClicked中的提示从自定义内容获取具体值
    AnalysysAgent.trackCampaign(context,customContentString,false);
}

@Override
public void onNotificationClicked(Context context, String title,
                                    String description, String customContentString) {
    Log.d(TAG, notifyString);
    AnalysysAgent.trackCampaign(context,customContentString,true);
}

当统计点击通知后需要执行自定义行为时,可实现 ThirdPushManager.PushListener 接口,将实现对象传入trackCampaign,例如要在点击通知后,输出日志,如下调用:

ThirdPushManager.PushListener listener = new ThirdPushManager.PushListener() {
        @Override
        public void execute(String action, String jsonParams) {
            Log.e("EgPushTAG","通知被点击");
        }
    };
AnalysysAgent.trackCampaign(context,customContentString,true,listener);

5.4.4 小米推送

请参考小米推送《Android SDK 文档》,将小米推送送的 SDK 集成到 App 中。开发者需要将 App 的设备推送 ID 保存在方舟分析的用户信息中。方舟分析的用户分群等分析功能会使用该设备推送 ID 进行用户关联。

小米推送使用唯一的 Registration Id 标示设备。开发者需要在 Manifest 中定义 Receiver 接受小米推送送的广播,通过广播消息获取 Registration Id。

<receiver
    android:name="Your Receiver"
    android:exported="true">
    <intent-filter>
        <action android:name="com.xiaomi.mipush.RECEIVE_MESSAGE" />
    </intent-filter>
    <intent-filter>
        <action android:name="com.xiaomi.mipush.MESSAGE_ARRIVED" />
    </intent-filter>
    <intent-filter>
        <action android:name="com.xiaomi.mipush.ERROR" />
    </intent-filter>
</receiver>

广播消息的 MiPushCommandMessage 参数中可以获取到 Registration Id ,开发者在小米推送初始化完成后,在广播中获取 Registration Id 并将他保存在方舟分析的用户信息中; 在回调方法 onNotificationMessageArrived 中记录记录 App 推送成功事件;在 onNotificationMessageClicked 回调中记录用户点击消息打开 App 或执行其他行为的事件

@Override
public void onReceiveRegisterResult(Context context, MiPushCommandMessage message) {
    String command = message.getCommand();
    List<String> arguments = message.getCommandArguments();
    String cmdArg = ((arguments != null && arguments.size() > 0) ? arguments.get(0) : null);
    if (MiPushClient.COMMAND_REGISTER.equals(command)) {
        if (message.getResultCode() == ErrorCode.SUCCESS) {
            AnalysysAgent.setPushID(context, PushProvider.XIAOMI,cmdArg);
        }
    }
}
@Override
public void onNotificationMessageArrived(Context context, MiPushMessage message) {
    mMessage = message.getContent();
    AnalysysAgent.trackCampaign(context,mMessage,false);
}
@Override
public void onNotificationMessageClicked(Context context, MiPushMessage message) {
    mMessage = message.getContent();
    AnalysysAgent.trackCampaign(context,mMessage,true);
}

当统计点击通知后需要执行自定义行为时,可实现 ThirdPushManager.PushListener接口,将实现对象传入 trackCampaign,例如要在点击通知后,输出日志,如下调用:

ThirdPushManager.PushListener listener = new ThirdPushManager.PushListener() {
        @Override
        public void execute(String action, String jsonParams) {
            Log.e("EgPushTAG","通知被点击");
        }
    };
AnalysysAgent.trackCampaign(context,mMessage,true,listener);
Copyright © 2018 易观版权所有 京ICP备15065619号-1 京公网安备110105005360号            updated 2018-10-15 19:34:46

results matching ""

    No results matching ""