Android集成指南
BeaconReport
灯塔SDK用于上报的主类,该对象为单例对象。
初始化SDK
public void start(@NonNull Context context, @NonNull TunnelInfo info, @Nullable final BeaconConfig config)
// 参数2
TunnelInfo(@NonNull String appKey, String version, String channelID)
例如:
BeaconConfig config = BeaconConfig.builder()
.strictMode(false)// 是否开启严苛模式,会检查事件参数规范,并抛出异常
.logAble(true)//是否打开日志
// 设置用于上报的OKHttpClient(可以与业务共用一个Client),该项也可以不设置
.setHttpAdapter(OkHttpAdapter.create(new OkHttpClient()))
.build();
BeaconReport beaconReport = BeaconReport.getInstance();
beaconReport.startWithTunnelInfo(this, new TunnelInfo(APP_KEY), config);
注意: 1. Context、TunnelInfo不可为空 2. 灯塔SDK内部默认使用Socket做网络通信,若传入OKHttpClient会优先使用https上报,建议使用OKHttp。 3. 打开日志后,qimei将以Toast的形式弹出,并复制到剪贴板。(上线前务必关闭!)
上报事件
public EventResult report(BeaconEvent beaconEvent);
例如:
Map<String, String> params = new HashMap<>();
params.put("k1", "v1");
BeaconEvent event = BeaconEvent.builder()
.withCode("onClick")// 必须
.withParams(params) //非必须
.build();
EventResult result = BeaconReport.getInstance().report(event);
Log.i("TAG", "EventResult{ eventID:" + result.eventID + ", errorCode: " + result.errorCode + ", errorMsg: " + result.errMsg + "}");
若该事件符合上报规范,则错误码为0,并且返回该事件在SDK中的唯一ID(以实时和普通分别计算),若不符合上报规范则返回错误码以及信息,错误码对应表见附录。
注意: 1. 若BeaconEvent中AppKey参数传空则默认为宿主AppKey 2. EventCode不可为空! 3. params中单个value最大长度为10K,kv整体最大为45K
获取Qimei
同步获取Qimei
@Nullable
public Qimei getQimei();
异步获取Qimei
public void getQimei(IAsyncQimeiListener listener);
例如:
beaconReport.getQimei(new IAsyncQimeiListener() {
@Override
public void onQimeiDispatch(Qimei qimei) {
Log.i(TAG, "OldQimei: " + qimei.getQimeiOld() + ", newQimei: " + qimei.getQimeiNew());
}
});
其中OldQime为原来可能为androidID、imei、mac的qimei,A3字段。newQimei为标准的36位qimei,需要后台配置打开双列Qimei才会有值,对应A153字段。
注册多通道
public void registerTunnel(TunnelInfo tunnelInfo);
注册多通道上报,即多份AppKey使用同一份灯塔SDK
例如:
BeaconReport.getInstance().registerTunnel(new TunnelInfo("0M300V63NP0NGUB3", "1.1", "channel"));
注意:上报BeaconEvent时,必须填充和TunnelInfo中一致的AppKey。
获取灯塔采集参数
public BeaconPubParams getCommonParams(Context context);
返回灯塔SDK采集到用户信息。
停止事件上报
public void stopReport(boolean immediately);
当App处于后台或弱网需要减少灯塔SDK使用的资源时,可以停止灯塔SDK内部轮询以及网络请求。
恢复事件上报
public void resumeReport();
当调用了停止事件上报后需要恢复灯塔SDK轮询时调用。
获取当前SDK版本
public String getSDKVersion();
BeaconEvent
public final class BeaconEvent {
private String appKey; //该事件AppKey
private String code; // 该事件名
private EventType type; //事件类型
private boolean isSucceed;// 是否成功
private Map<String, String> params;// 事件参数
//...
例如:
Map<String, String> params = new HashMap<>();
params.put("k1", "v1");
BeaconEvent event = BeaconEvent.builder()
.withCode("onClick") //必填
.withType(EventType.REALTIME) //非必须,默认为普通事件
.withParams(params) //非必须
.withAppKey(appKey)// 非必须,默认为宿主AppKey
.withIsSucceed(true)// 非必须,默认为true
.build();
BeaconConfig
在初始化时传入配置,非必须传入
public class BeaconConfig {
private final int maxDBCount;//DB存储的最大事件条数(实时和普通分开计算),默认为1万条
private final boolean strictMode;// 严苛模式,默认false
private final boolean logAble;// 日志开关,默认false
private final boolean abroad;// 是否开启海外版,对qimei有影响,默认false
private final boolean eventReportEnable; // 是否打开事件上报功能,默认true
private final boolean auditEnable; // 是否开启稽核功能,默认true
private final boolean bidEnable;// 是否开启BeaconID信息采集,默认true
private final boolean collectMACEnable;//是否采集MAC地址信息,默认true
private final boolean collectIMEIEnable;// 采集IMEI、IMSI信息,默认true
private final long realtimePollingTime;//实时事件上报轮询间隔(ms)
private final long normalPollingTIme;// 普通事件上报轮询间隔(ms)
private final NetAdapter httpAdapter;// 设置OKHttpClient
例如:
BeaconConfig config = BeaconConfig.builder()
.strictMode(true)
.logAble(true)
.maxDBCount(20_000)
.collectIMEIEnable(false)
.collectMACEnable(false)
.setNormalPollingTime(3000)
.setRealtimePollingTime(1000)
.setHttpAdapter(OkHttpAdapter.create(new OkHttpClient()))
.build();
EventResult
public final class EventResult{
public int errorCode;
public long eventID;
public String errMsg;
}
EventType
public enum EventType {
// 普通事件
NORMAL,
// 实时事件
REALTIME,
// 大同普通事件
DT_NORMAL,
// 大同实时事件
DT_REALTIME,
}
Qimei
public final class Qimei {
// A3
private String qimeiOld;
// A153 Qimei
private String qimeiNew;
// 全部Qimei
private Map<String, String> qimeiMap;
// ...
public boolean isEmpty() {
return qimeiMap == null || qimeiMap.isEmpty();
}
BeaconPubParams
灯塔采集信息对象
public class BeaconPubParams {
private String boundleId; // B: App包名
private String appVersion; // G: 产品版本
private String sdkId; // G: SDK Id
private String sdkVersion; // G: SDK 版本
private String productId; // G: AppKey
private String beaconId; // EV: Beacon Id
private String appFirstInstallTime; // EV:宿主App首次安装时间
private String appLastUpdatedTime; // EV: 宿主App最近一更新时间
private String platform; // G: 平台
private String dtMf; // EV: manufacturer,新增采集
private String osVersion; // G: 固件版本
private String hardwareOs; // 设备信息
private String brand; // EV: 品牌
private String model; // G: 机型
private String language; // EV: 语言
private String resolution; // EV: 分辨率
private String dpi; // EV: Density per inch
private String gpu; // GPU info
private String isRooted; // EV: 是否rooted
private String fingerprint; // EV: 指纹信息
private String qimei; // EV: QIMEI
private String imei; // EV: IEMI
private String dtImei2; // EV: IMEI2:新增采集
private String dtMeid; // EV: MEID: 新增采集
private String imsi; // EV: IMSI
private String androidId; // EV: ANDROID_ID
private String modelApn; // G: 设备设置APN
private String mac; // EV: MAC
private String wifiMac; // EV: WiFi Mac
private String wifiSsid; // EV: WiFi ssid
private String allSsid; // a109:扫描当前设备连接的路由器下的所有设备IP和mac地址,第一组为本机的IP和mac地址
private String networkType; // 网络类型
private String cid; // EV:SD卡id
// getter,setter
附录
事件错误码对应表
Last updated