💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
# Android SDK | SDK版本号 | 功能说明 | 下载地址 | | --- | --- | --- | | 1.1.0 | 1、可通过 identify 接口更新联系人生日和自定义字段;2、可通过 identify接口wechatInfo与微信公众号粉丝合并 ;3、事件autotrack字段新增ip、国家、省份、城市、网络类型 | [安卓 SDK-1.1.0](https://linkflowtech-sdk.oss-cn-shanghai.aliyuncs.com/android-sdk/21.08.R1/nz_analytics.aar) | ## 适用范围 Android 4.0以上 ## 集成准备-创建应用并获取WriteKey WriteKey是Linkflow标识您的一个移动应用的唯一标识,集成SDK前需要在Linkflow中创建自定义渠道连接,并在自定义渠道中创建移动应用后获取参见[《创建自定义渠道》](https://docs.linkflowtech.com/api/#chuang-jian-zi-ding-yi-qu-dao) * * * ## 集成Linkflow Android SDK(Gradle 编译环境(Android Studio)) 1. 下载最新[安卓 SDK-1.1.0](https://linkflowtech-sdk.oss-cn-shanghai.aliyuncs.com/android-sdk/21.01.R1/nz_analytics.aar) 2. 将nz\_analytics.aar复制到您的安卓项目的Libs中 3. 在主项目app文件夹下的build.gradle中的android中添加如下代码 ~~~ repositories{ flatDir { dirs 'libs' } } ~~~ 4. 在dependencies中添加依赖的代码: ~~~ // implementation(name: 'aar包的名字', ext: 'aar') implementation(name: 'nz_analytics', ext: 'aar') ~~~ 5.然后点击同步(Sync Now),就成功的将.aar导入项目了。 * * * ## 初始化SDK 在程序的入口 Application 的 onCreate() 中调用NzAnalyticsSDK.sharedInstance() 初始化 SDK 示例代码 ~~~ public class App extends Application { @Override public void onCreate() { super.onCreate(); NzOptions hwUatOptions = new NzOptions.Builder() /** * 接收数据服务器地址,比如https://app.linkflowtech.com */ .setEndpoint("https://app.linkflowtech.com") /** * writeKey: 在linkflow的自定义渠道创建应用后,在“移动应用”列表页面里查看writeKey */ .setWriteKey("MTUtZjc4YzVhODgtNTA0OC00MWQzLTk0MWQtMjEwMjg2MDk0NDQz") /** * 每次批量上报数据的条数。范围50-200,默认是200。 */ .setFlushBulkSize(100) /** * 定时批量上报数据的时间间。范围30-300,默认是60。单位是秒。 */ .setFlushInterval(5) /** * SDK缓存的最大事件条数。范围1000-5000,默认1000。 */ .setMaxQueueSize(10) /** * 自动追踪ViewSreen显示。默认值是false。 */ .setTrackViewScreen(true) /** * 自动追踪App生命周期显示。默认值是false。 */ .setTrackAppLifecycleEvents(true) /** * 自动追踪元素点击。默认值是false。 */ .setTrackAppClick(true) /** * 是否是debug mode。默认是false。 */ .setDebugMode(false) /** * “WIFI_ONLY”:只在WIFI的时候上传数据;“NETWORK_CONNECT”:有网络连接的时候就上传数据。 */ .setNetworkPolicy(NzOptions.NetWorkPolicy.WIFI_ONLY).create(); NzAnalyticsSDK.sharedInstance().initialSDK(this, hwUatOptions); } ~~~ ## 系统事件统计 正确完成初始化后,SDK会根据初始化中的配置,自动完成激活应用、启动应用、退出应用、浏览页面、点击元素事件的统计。 在Debug模式下产生的事件,Linkflow的Android SDK会自动为事件打上debug标签,方便您在进行统计分析时,排除测试数据。请注意,不要在正式发布的 App 中使用 Debug 模式。 ### 激活应用 当用户第一次安装启动移动应用时,Linkflow Android SDK记录用户激活应用事件。 ### 启动应用 当用户将移动应用展示在前台,Linkflow Android SDK记录用户启动应用事件,并记录以下事件属性。 | 属性 | 说明 | | --- | --- | | 是否首日访问 | 当日首次访问 | | 是否首次访问 | 激活应用后第一次访问 | ### 退出应用 当用户将移动应用退出到后台或杀掉应用进程,Linkflow Android SDK记录用户退出应用事件,并记录以下事件属性。 | 属性 | 说明 | | --- | --- | | 是否首日访问 | 当日首次访问 | | 启动时长 | 此次启动应用到此次退出应用的时间 | ### 展示页面 当用户跳转移动应用新的页面时,Linkflow Android SDK记录展示页面事件并记录以下事件属性。 | 属性 | 说明 | | --- | --- | | 是否首日访问 | 当日首次访问 | | 页面名称 | 表示 Activity 的包名.类名 | ### 点击元素 当用户在应用页面点击按钮时,Linkflow Android SDK记录点击元素事件并记录以下事件属性。 | 属性 | 说明 | | --- | --- | | 元素类型 | 控件的类型,如Button | | 元素内容 | 控件的内容 | ## 识别联系人接口 ### 1、用途和用法 识别联系人方法用于将匿名用户实名化。在未调用识别联系人方法前,系统事件全部作为匿名用户的行为事件,调用此方法实名化用户后,此实名用户之前发生的匿名事件也会一并作为此实名用户的事件。 Linkflow判断移动应用联系人为实名联系人的依据是:name、mobilePhone、email三个属性有一个属性有值,则此联系人为实名联系人。 为了确保您的用户不会被认为是匿名联系人(匿名联系人Timline不会展示事件),调linkflow Android SDK 提供的识别联系人方法将用户name、mobilePhone、email发送给 Linkflow。 ### 2、示例 某用户输入用户名、密码登录,账户ID为:1234567,姓名为:Sun,手机为:13800000000。调用如下: ~~~ NzIdentity identity = new NzIdentity(); identity.setExternalId("349829"); identity.setName("zhangsan"); identity.setEmail("zhangsan@linkflowtech.com"); identity.setPhone("15150890909"); identity.setBirthday("1990-09-09"); Map<String, Object> props = new HashMap<>(); props.put("attr1", "高级会员"); props.put("attr13", "89"); props.put("attr16", "女装"); props.put("attr49", "二级"); identity.setProps(props); //如果希望与微信公众号粉丝合并,请添加以下代码 NzIdentityWechatInfo * wechatInfo = [[NzIdentityWechatInfo alloc] init]; wechatInfo.openId = @""; //公众号粉丝openId,非必填。openId+appId可以定位到在linkflow创建连接的公众号粉丝,会将此公众号粉丝与此用户合并。 wechatInfo.appId = @""; //公众号appId(该公众号必须已在Linkflow绑定),非必填,如果openId有值,则此字段必填.openId+appId可以定位到在linkflow创建连接的公众号粉丝,会将此公众号粉丝与此用户合并。 wechatInfo.unionId:非必填,公众号粉丝unionId,如果传入该值,会和系统中相同unionId的微信公众号和小程序用户进行合并 identity.setWeChatInfo(wechatInfo); NzAnalyticsSDK.sharedInstance().identify(identity); ~~~ ## 创建自定义事件接口 ### 1、用途和用法 其他事件类似登录事件,都需要先在自定义渠道先创建相应的事件,定义好事件的属性,并且获取系统生成的事件编码,然后就可以通过Linkflow的Android SDK中的trackEvent方法进行收集了。 ### 2、示例 ~~~ NzEvent event = new NzEvent(); event.setEvent("UDE_89497"); //需要传入您创建的自定义事件的事件编码 event.setAttr1("704769368693"); //使用attr1-attr20来设置自定义事件的属性值 event.setAttr2("35.8"); event.setEventDate();//设置事件发生时间(时间戳,精确到毫秒),如果不设置,默认为系统当前时间 NzAnalyticsSDK.sharedInstance().trackEvent(event); ~~~ 除了上述示例中的属性,剩余其他部分属性linkflow Android SDK会自动帮您记录在事件上(参见自定义事件的系统预置字段),您如果手动设置也会被linkflow覆盖。 ## Linkflow Android SDK上报事件数据配置 1、 用户发生初始化开启的事件时,Linkflow Android SDK将事件存在移动应用本地缓存 2、 达到数据上报时,做如下检查,判断是否向服务器上传数据 • 当前是否是 WIFI / 3G / 4G 网络 • 是否满足发送事件之一: 1. 与上次发送的时间间隔是否大于 flushInterval 2. 本地缓存的事件条目数是否大于 flushBulkSize 默认的 flushBulkSize 为 100 条,默认的 flushInterval 为 15 秒。满足条件后,SDK 批量发送到linkflow服务器。 3、 如果没有满足发送条件且数据条数大于设置本地数据库默认缓存最大条数,系统会删除缓存前100条数据,进行新数据的存储。 4、 如果追求数据采集的时效性,可以调用flush方法,强制将数据上传