帮助文档
  • What's new
  • 增长平台全景图
  • 文档使用指南
  • 产品简介
    • 产品概述
    • 数据模型
      • 用户模型
        • 访问用户
        • 登录用户
        • 用户属性
      • 事件模型
        • 什么是事件
        • 无埋点事件
          • 概述
          • 访问事件及变量
          • 页面事件及变量
          • 元素事件及变量
        • 埋点事件
      • 统计模型
        • 指标-事件的度量
        • 维度-事件的属性
        • 预定义指标
        • 预定义维度
    • 数据定义
      • 用户变量
        • 登录用户变量
        • 访问用户变量
      • 页面级变量
      • 埋点事件及变量
        • 埋点事件和事件级变量
        • 转化变量
    • 数据安全
  • 开发者文档
    • SDK 集成
      • SDK 简介
      • 合规指南
        • Android SDK合规说明
        • iOS SDK合规说明
        • HarmonyOS SDK合规说明
        • Web JS SDK 合规说明
        • 小程序 SDK 合规说明
      • SDK 使用流程
      • Web JS SDK
        • Web JS SDK 更新日志
        • 概述
        • 集成最新SDK
        • SDK 版本1.x升级2.x指导
        • Web JS SDK API
          • API 2.x
        • Web半自动采集浏览事件
        • 常见问题
          • 为什么网站要允许iframe加载?
          • 为什么网站不能复写 window 对象?
          • 页面内部嵌入的 iframe 元素如何加载 SDK?
          • 同时集成了web sdk 和 hybrid sdk 会怎么处理?
          • 同时集成了web sdk 1.x 和web sdk 2.x会怎么处理?
          • 元素没有元素浏览量怎么处理?
          • display:none 的元素,其子元素中的a/button只采集一次浏览量,想每次曝光都采集怎么处理?
          • 设置了 growing-ignore 之后,其子元素也不采集怎么处理?
      • 原生 Android SDK
        • Android SDK更新日志
        • 无埋点 SDK 集成
        • 埋点 SDK 集成
        • Android SDK API
          • Gradle配置API
          • 初始化配置项API
          • 运行时API
          • 自定义数据上传API
        • Android半自动采集浏览事件
        • 1.x Android SDK 升级指导
        • 常见问题
          • 无埋点数据采集问题
          • 无埋点SDK中埋点API使用问题
          • SDK性能问题
          • 圈选问题
          • Gradle 常见问题
          • App内嵌H5页面常见问题
      • 原生 iOS SDK
        • iOS SDK 更新日志
        • 无埋点 SDK集成
        • 埋点 SDK集成
        • iOS SDK API
          • 初始化配置项API
          • 埋点SDK支持的其他接口
          • 动态添加属性说明
          • 自定义数据上传API
        • iOS半自动采集浏览事件
        • iOS SDK升级指导
        • 常见问题
        • 用户运营iOS SDK地址
      • 移动端第三方框架 SDK
        • React Native无埋点SDK
        • React Native埋点SDK
        • Flutter埋点SDK
        • Cordova埋点SDK
        • Weex埋点SDK
        • API Cloud埋点SDK
        • AppCan埋点SDK
        • uniapp 埋点SDK
        • Unity 埋点 SDK
        • 鸿蒙原生埋点 SDK
      • 小程序 SDK
        • 3.7及以下
          • 更新日志
          • 集成
            • 微信小程序
            • 支付宝小程序
            • 百度小程序
            • QQ小程序
            • 字节跳动小程序
            • 快应用
          • 数据采集API
          • 无埋点采集逻辑和高级配置
        • 3.8
          • 更新日志
          • 集成
            • 微信小程序
            • 阿里(支付宝)小程序
            • 百度小程序
            • 字节(抖音头条)小程序
            • QQ小程序
            • 快应用
          • 初始化配置
          • 数据采集API
          • 无埋点采集逻辑和高级配置
          • 旧版本与3.8对比
          • 旧版本升级到3.8
      • Hybrid JS SDK
      • 小程序和微信公众号H5 内嵌页 SDK
        • 更新日志
      • 微信小游戏 SDK
        • 更新日志
      • 服务端埋点SDK
        • Java埋点SDK
        • PHP埋点SDK
        • 常见问题
      • 仅集成埋点SDK的Hybrid JS SDK
    • SDK调试
      • 概述
      • Web Debugger
      • Mobile Debugger
      • 小程序&内嵌页Debugger
      • 验证埋点事件
        • 概述
        • 对 cstm(事件以及关联的事件级变量)上报进行验证
        • 对 pvar(页面级变量)进行验证
        • 对 evar(转化变量)进行验证
        • 对 ppl(用户变量)上报验证
    • API参考
      • 公共请求参数
      • 原始数据导出API V2
        • 概述
        • 事件表字段说明
          • 事件表关联
          • 无埋点事件字段
          • 埋点事件与变量字段
          • 广告相关字段
        • 接口定义
          • 获取不同类型原始数据下载链接
          • 获取全部事件类型原始数据的下载链接
        • 升级说明
        • 导出数据处理建议
      • 原始数据导出API V1
        • 概述
        • 字段说明
          • 事件类型
          • 无埋点事件字段
          • 埋点事件与变量字段
          • 广告相关字段
        • 接口定义
          • 获取原始数据下载链接
          • 来源管理数据导出 -- [接口下线 2020.11.02]
        • 导出数据处理建议
      • 统计数据导出API V3
        • V3接口概述
        • 接口定义
          • 获取事件分析数据
          • 获取漏斗分析数据
          • 获取留存分析数据
          • 获取分布分析数据
          • 获取用户分群的下载链接
          • 获取用户标签的下载链接
      • 统计数据导出API
        • 概述
        • 接口定义
          • 获取看板列表
          • 获取看板中的图表信息
          • 获取事件分析数据
          • 获取漏斗分析数据
          • 获取留存分析数据
          • 获取分群列表
          • 获取特定分群的用户列表
          • 获取圈选元素定义
      • 用户分群更新API
      • 广告监测链接创建API
        • 概述
        • 接口定义
          • 查询应用ID
          • 新建推广活动
          • 查询推广活动ID
          • 新建推广渠道
          • 查询推广渠道ID
          • 新建监测链接(吸引用户直接打开App)
          • 查询监测链接(吸引用户直接打开App)
          • 新建监测链接(增加APP下载量-同时推广iOS和Android)
          • 查询监测链接(增加APP下载量-同时推广iOS和Android)
          • 新建监测链接(增加App下载量-推广iOS或Android单个平台)
          • 查询监测链接(增加App下载量-推广iOS或Android单个平台)
          • 新建监测链接(推广网页)
          • 查询监测链接(推广网页)
          • 新建监测链接(微信小程序)
          • 查询监测链接(微信小程序)
      • 埋点数据上传API
      • 登录用户变量上传API
        • 登录用户变量上传
        • 维度分类上传
        • 既有登录用户ID上传
        • (旧)接口定义
          • 用户变量上传
          • 维度分类上传
      • 项目管理API
        • 概述
        • 从项目内移除成员
        • 获取埋点事件列表
        • 创建埋点事件
        • 更新埋点事件
        • 删除埋点事件
        • 获取事件级变量
        • 创建事件级变量
        • 获取页面级变量
        • 创建页面级变量
        • 获取登录用户变量
        • 创建登录用户变量
        • 获取访问用户变量
        • 获取埋点数量限额
      • 数据管理API(GDPR)
        • 数据保护
        • 删除原始数据
  • 产品使用文档
    • 产品分析
      • 数据监测
        • 概览
        • 实时
        • 分析看板
        • KPI看板
        • 小程序看数助手
      • 分析工具
        • 事件分析
          • 什么是事件分析
          • 创建事件分析
          • 视图介绍
        • 漏斗分析
          • 什么是漏斗分析
          • 创建漏斗分析
          • 漏斗分析结果解读
          • 案例解读
        • 留存分析
          • 什么是留存分析
          • 创建留存分析
          • 留存分析结果解读
          • 视图介绍
          • 应用场景
          • 常见问题
        • 分布分析
          • 什么是分布分析
          • 使用场景
          • 创建分布分析
        • 热图分析
          • 什么是热图分析
          • Web端热图
          • App热图
        • 事件流分析
      • 业务场景
        • 分享分析
        • 留存魔法师
    • 智能运营
    • 获客分析
      • 首页
        • 应用级数据
        • 数据指标说明
      • 分析
        • 渠道价值分析
        • 渠道归因分析
        • 落地页分析
        • 活动页分析
      • 获客追踪
        • 监测链接
          • 推广App
          • 推广网页
          • 推广小程序(微信)
            • 推广链接的投放和设置指南
            • 小程序码管理
        • 深度链接
        • 结合产品数据深度分析
      • 产品配置
        • 广告活动管理
        • 推广渠道管理
        • 深度链接配置
        • 广告数据权限控制
        • 日志数据导出
        • 维度配置(链接扩展维度)
        • 归因配置
      • 渠道配置指南
        • 苹果广告投放
        • 华为应用商oCPD
        • HUAWEI Ads
        • 腾讯社交广告(Marking API)
        • 今日头条(巨量纵横)
        • 百度原生信息流
        • 百度搜索_ocpc
        • 微信广告平台
        • 微博超级粉丝通
        • 爱奇艺
        • InMobi
        • 快手平台
        • 凤羽广告平台
        • bilibili(B站)
        • VIVO营销平台
      • 相关知识
        • UTM参数使用指南
        • 移动端转化归因
        • 默认的渠道来源跟踪
        • DeepLink启用新域名
      • 常见问题
    • 用户库
      • 用户分群
        • 用户分群
          • 什么是用户分群
          • 创建用户分群
            • 规则分群
          • 更新用户分群
          • 查看分群详情页
          • 常见问题
        • 用户细查
          • 什么是用户细查
          • 细查用户
          • 应用场景
          • 常见问题
      • 用户标签 - Beta
        • 创建标签
        • 标签模型使用
          • 基础指标值
          • 最大值 / 最小值
          • 最初 / 最终
          • 分层标签
      • 用戶分析
        • 活跃用户分析
          • 什么是活跃用户分析
          • 分析活跃用户
      • 业务场景
        • 微信应用用户分析
    • 数据中心
      • 数据管理
        • 无埋点事件
          • 概述
          • Web端数据定义
            • Web圈选
            • Chrome插件圈选
            • Chrome插件安装步骤
          • App端数据定义
          • App端数据定义(App圈选)
          • 小程序数据定义
          • 微信内嵌页数据定义
        • 埋点事件
        • 事件级变量
        • 页面级变量
        • 用户变量
          • 登录用户变量
          • 访问用戶变量
        • 转化变量
        • 业务标签管理
        • 批量操作
        • 自定义指标管理
          • 计算指标
          • 合并事件
        • 预定义维度
        • 预定义指标
      • 数据规划
        • 电商行业数据规划
      • 数据校验
        • 移动端数据校验
        • 小程序数据校验
        • Mobile Debugger
        • Web Debugger
      • 数据集成
        • 微信公众号集成
    • 项目管理
      • 如何进入项目管理?
      • 项目概览
      • 应用管理
      • 成员管理
      • 角色管理
        • 典型角色应用场景
        • 系统角色功能权限列表
      • 小组管理
      • 数据权限
      • 项目配置
        • IP及域名数据过滤
        • 爬虫预防
        • UTM映射管理
        • API Token管理
        • 获取项目UID
    • 组织管理
      • 组织概览
      • 组织项目
      • 组织成员
      • 费用中心(计费方案)
    • 个人中心
      • 个人信息
      • 安全设置
    • 学习平台
    • 工单管理
      • 提交工单
      • 查看进度
      • 邀请技术支持
    • 术语解释
  • 常见问题与解决
    • 基本问题
    • SDK集成
    • 圈选问题
    • 指标和维度
    • 数据安全
    • 产品使用
    • 数据统计差异
    • 如何删除不要的项目?
    • 为何收不到GIO的邮件?
    • 无效指标清理说明
    • 产品维护计划通告
由 GitBook 提供支持
在本页
  • 准备条件
  • 1. 添加跟踪代码
  • 1. 添加依赖
  • 2. 添加URL Scheme和应用权限
  • 3. SDK初始化配置
  • 4. 代码混淆
  • 5 设置SDK异常上传开关
  • 2. 重要配置
  • 1. 设置Debug模式
  • 2. 设置Test模式
  • 3. 采集WebView页面数据
  • 4. 设置内嵌H5页面锚点跳转触发页面浏览事件
  • 5. 设置采集GPS数据
  • 6. 多进程支持
  • 7. GDPR数据采集开关
  • 8. Deep Link回调参数获取
  • 3. 自定义数据上传
  • 4. 创建应用
  • 5. 验证SDK是否正常采集数据

这有帮助吗?

  1. 开发者文档
  2. SDK 集成
  3. 原生 Android SDK

埋点 SDK 集成

埋点 SDK 只自动采集用户访问事件,需要开发同学调用相应埋点 API 采集自定义事件。

上一页无埋点 SDK 集成下一页Android SDK API

最后更新于1年前

这有帮助吗?

埋点 SDK 的目标是使用第三方插件开发的 APP, 比如使用 Weex、APICloud 等,或不需要SDK自动采集页面浏览,元素点击行为数据的APP。

在一些第三方混合开发框架中,我们无法自动采集用户的点击事件和页面浏览事件等,需要依赖调用埋点事件或事件变量 API 来进行数据采集。

如果您的 APP 使用 Android 原生开发,并且希望自动采集用户的点击事件、页面浏览事件等无埋点事件, 请集成 Android 无埋点SDK 。

准备条件

  • 获取项目 ID,获取方法请参考"项目管理 > 项目概览 > "。

  • 获取 URL Scheme,在 GrowingIO 平台创建对应的应用时会生成 URL Scheme。请参考。

1. 添加跟踪代码

Gradle 编译环境:Android Studio

App 适配最低系统版本:Android 4.2 及以上

1. 添加依赖

2.9.0 版本后仓库从 JCenter 迁移到了 Maven Central, 请使用 mavenCentral() 替换 jcenter()

在 module 级别的 build.gradle 文件中添加vds-android-agent依赖、项目 ID 和 URL Scheme。

代码示例:

android {
    defaultConfig {
        resValue("string", "growingio_project_id", "您的项目ID")
        resValue("string", "growingio_url_scheme", "您的URL Scheme")
    }
}
dependencies {
    //GrowingIO 埋点 SDK
    implementation 'com.growingio.android:vds-android-agent:track-2.10.0'
}

2. 添加URL Scheme和应用权限

URL Scheme 是您在 GrowingIO 平台创建应用时生成的该应用的唯一标识。把 URL Scheme 添加到您的项目中,以便在使用圈选,Mobile Debugger,及深度链接功能时唤醒您的应用。

URL Scheme 只能对应一个应用。当应用的包名发生变化时,需再次创建一个应用使用对应的 URL Scheme

将 URLScheme 和应用权限添加到您的 AndroidManifest.xml 中的 LAUNCHER Activity 下。

代码示例:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.growingio.testdemo">
​
    <!-- GIO 需要的权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!-- GIO 需要的权限 -->
​
    <!--请注意<application/>标签中的name属性值(这里为android:name=".MyApplication")必须为您的Application类-->
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:name=".MyApplication"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
​
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <!--请添加这里的整个 intent-filter 区块,并确保其中只有一个 data 字段-->
            <intent-filter>
                <data android:scheme="growing.您的URL Scheme" />
                <action android:name="android.intent.action.VIEW" />
​
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
            </intent-filter>
            <!--请添加这里的整个 intent-filter 区块,并确保其中只有一个 data 字段-->
        </activity>
    </application>
​
</manifest>

请添加一整个 intent-filter 区块,并确保其中只有一个 data 字段。

3. SDK初始化配置

代码示例**:**

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        GrowingIO.startWithConfiguration(this, new Configuration()
            .setChannel("XXX应用商店")
        );
    }
}
class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        GrowingIO.startWithConfiguration(
            this, Configuration()
                .setChannel("XXX应用商店")
        )
    }
}
  1. 其中GrowingIO.startWithConfiguration第一个参数为ApplicationContext对象。

  2. setChannel方法的参数定义了“自定义App渠道”这个维度的值,填写APP要发布的应用商店名称。

4. 代码混淆

如果你启用了混淆,请在你的proguard-rules.pro中加入如下代码:

SDK 2.6.0 更新了混淆文件,前后混淆文件内容截然不同,请注意更新。

-keep class com.growingio.** {
    *;
}
-dontwarn com.growingio.**
-keepnames class * extends android.view.View
-keepnames class * extends android.app.Fragment
-keepnames class * extends android.support.v4.app.Fragment
-keepnames class * extends androidx.fragment.app.Fragment
-keep class android.support.v4.view.ViewPager{
    *;
}
-keep class android.support.v4.view.ViewPager$**{
    *;
}
-keep class androidx.viewpager.widget.ViewPager{
    *;
}
-keep class androidx.viewpager.widget.ViewPager$**{
    *;
}

如果您使用了AndRestGuard,请在白名单里添加GrowingIO。

代码示例:

R.string.growingio*

5 设置SDK异常上传开关

SDK默认会开启收集SDK内部异常上报至服务端功能,方便开发更好的追踪SDK问题和完善SDK功能。如果您不希望收集SDK内部异常,或者和您的 crash 收集框架有冲突,您可以关闭该功能。

setUploadExceptionEnable(boolean uploadExceptionEnable)

参数说明

参数名

类型

必填

默认值

说明

uploadExceptionEnable

boolean

否

true

开关SDK异常上传功能,true开启,false关闭

代码示例

GrowingIO.startWithConfiguration(this, Configuration()
         .setUploadExceptionEnable(true)
);
GrowingIO.startWithConfiguration(this, Configuration()
    .setUploadExceptionEnable(true)
)

2. 重要配置

1. 设置Debug模式

Debug 模式:在 Android Studio 中通过 Logcat 查看 GrowingIO SDK 打印的数据采集发送日志。

在SDK初始化代码中添加如下配置:

setDebugMode(boolean debugMode);

参数说明

参数

类型

是否必填

说明

debugMode

boolean

是

开启GrowingIO日志,true开始,默认false

示例代码

GrowingIO.startWithConfiguration(this,new Configuration()
    //BuildConfig.DEBUG 这样配置就不会上线忘记关闭
    .setDebugMode(BuildConfig.DEBUG)
    ...
    );
GrowingIO.startWithConfiguration(
    this, Configuration() //BuildConfig.DEBUG 这样配置就不会上线忘记关闭
        .setDebugMode(BuildConfig.DEBUG)
)

2. 设置Test模式

Test模式:实时发送数据,开启则不遵循移动网络状态下数据发送大小限制以及采集数据默认缓存 15 秒发送策略。为了方便开发者查看日志,一般和setDebugMode一起使用。

在SDK初始化代码中添加如下配置:

setTestMode(boolean testMode);

参数说明

参数
类型
是否必填
说明

testMode

boolean

是

开启测试模式,true开启,默认false

示例代码

GrowingIO.startWithConfiguration(this,new Configuration()
    //BuildConfig.DEBUG 这样配置就不会上线忘记关闭
    .setTestMode(BuildConfig.DEBUG)
    ...
    );
GrowingIO.startWithConfiguration(
    this, Configuration() //BuildConfig.DEBUG 这样配置就不会上线忘记关闭
        .setTestMode(BuildConfig.DEBUG)
)

3. 采集WebView页面数据

// 提供原生的 WebView bridge供hybrid调用, 支持hybrid事件发送
public void bridgeForWebView(WebView webView)
// 提供腾讯X5内核的WebView bridge供hybrid调用, 支持hybrid事件发送
public void bridgeForX5WebView(com.tencent.smtt.sdk.WebView x5WebView)

SDK 2.9.0及以上版本支持该接口

示例代例

//需要在 webview 初始化后调用
GrowingIO.getInstance().bridgeForWebView(webView);

4. 设置内嵌H5页面锚点跳转触发页面浏览事件

GrowingIO SDK 默认情况下,不会把HashTag识别成页面 URL 的一部分,内嵌H5页面点击锚点页面跳转不计为页面浏览事件。

对于使用HashTag进行页面跳转的单页面网站应用来说,可以启用它来标识页面,HashTag的值也会记录在页面URL中。启用之后,如果用户点击页面中的锚点进行页面跳转,则发送一次页面浏览事件。

在SDK初始化代码中添加如下代码:

setHashTagEnable(boolean hashTagEnable)

示例代码:

GrowingIO.startWithConfiguration(this, new Configuration().setHashTagEnable(true));
GrowingIO.startWithConfiguration(this, Configuration().setHashTagEnable(true))

场景示例:

SDK发送对应采集数据:

{
    "u":"2e94075c-ead2-33ac-ab7f-f9611162efc4",
    "s":"78383569-3038-4bd4-b27c-349939367922",
    "tl":"Android SDK - 帮助文档",
    //t 为事件类型,page 为页面浏览事件
    "t":"page",
    "tm":1532408777047,
    "pt":"https",
    "d":"com.growingio.android.test::docs.growingio.com",
    //p 为浏览的页面
    "p":"StandardWebView::/docs/sdk-integration/android-sdk#4-dai-ma-hun-xiao",
    "rp":"https://docs.growingio.com/docs/sdk-integration/android-sdk#ji-cheng",
    "cs1":"GrowingIO",
    "appId":"fakeAppID",
    "v":"Android SDK - 帮助文档",
    "r":"WIFI",
    "gesid":434,
    "esid":153

5. 设置采集GPS数据

GrowingIO SDK 默认不采集地理位置信息。

如果您需要精确采集GPS数据,请在获取坐标后,调用接口设置位置信息。

如果您不调用此接口也可以,我们会根据用户的ip模糊匹配用户所在城市地区,能够在最终的数据分析时看到APP用户地域分布。

setGeoLocation(double latitude,double longitude);

参数说明

参数
类型
是否必传
说明

latitude

double

是

纬度

longitude

double

是

经度

示例代码

//北京的经纬度
GrowingIO.getInstance().setGeoLocation(39.9046900000,116.4071700000);

对应清除地理位置的方法为 clearGeoLocation();

6. 多进程支持

GrowingIO SDK默认不支持多进程使用, 但是可以通过confiuration进行设置支持多进程。

在SDK初始化代码中添加如下代码。

//支持多进程数据采集
setMutiprocess(boolean setMutiprocess);

参数说明

参数
类型
是否必填
说明

isMultiprocess

boolean

是

开启多进程数据采集。默认值false

示例代码:

GrowingIO.startWithConfiguration(this, new Configuration()
                  .setMutiprocess(true)
                  );
GrowingIO.startWithConfiguration(
    this, Configuration()
        .setMutiprocess(true)
)
  1. 为什么不默认支持多进程?

跨进程通信是一个相对较慢的过程, 默认不开启, 可以满足大部分用户的要求。

2. 哪些进程需要初始化SDK?

需要使用SDK功能的进程需要初始化SDK, 所有的UI进程 + 部分Service进程(如果这些进程中涉及手动埋点)。

7. GDPR数据采集开关

SDK版本支持:2.3.2及以上

接口
含义

disableDataCollect()

遵守欧洲联盟出台的通用数据保护条例,用户不授权,不采集用户数据

enableDataCollect()

遵守欧洲联盟出台的通用数据保护条例,用户授权,采集用户数据

示例代码:

    // 初始化配置
    Configuration configuration = new Configuration();
    // 其它初始化配置如是否开启ebug等
    ...
    // 根据数据采集开关判断
    if (<未同意隐私协议>) {
        configuration.disableDataCollect();
    }
    // 初始化SDK
    GrowingIO.startWithConfiguration(application, configuration);
// 同意数据采集后,开启数据发送
GrowingIO.getInstance().enableDataCollect();

8. Deep Link回调参数获取

​GrowingIO SDK 提供有 Deep Link 回调接口,调用后获取回调参数,您需要根据回调参数和业务场景,添加对应的交互代码。

SDK 2.3.2 开始提供 DeepLink Callback 接口,在 SDK 2.8.4 支持 App Links ,为了保证接收自定义参数并进行自定义跳转这一流程的完整性,App Links 沿用此接口,并新增一个参数,下文将详细解释。

此 Callback 只有在应用收到来自 GIO Intent 的时候才会触发,您需要先在广告监测新建监测链接,并使用监测链接唤醒 APP 时触发此 allback 。

在 GrowingIO SDK 代码初始化部分配置。

//sdk >= 2.3.2 && sdk < 2.8.19
GrowingIO.startWithConfiguration(this, new Configuration()
                .setDeeplinkCallback(new DeeplinkCallback() {
                            @Override
                            public void onReceive(Map<String, String> params, int status) { 
                            // 这里接收您的参数,匹配键值对,跳转指定 APP 内页面
                            }
                        })
            );
//sdk >= 2.8.4, 新增参数 long appAwakePassedTime 
GrowingIO.startWithConfiguration(this, new Configuration()
                .setDeeplinkCallback(new DeeplinkCallback() {
                            @Override
                            public void onReceive(Map<String, String> params, int status, long appAwakePassedTime) { 
                            // 这里接收您的参数,匹配键值对,跳转指定 APP 内页面
                            // appAwakePassedTime 这个新的参数用来判定 APP 是否已经打开了很久才收到自定义参数,进而判断是否再继续跳转指定页面
                            }
                        })
            );
//sdk >= 2.3.2 && sdk < 2.8.19
GrowingIO.startWithConfiguration(
    this, Configuration()
        .setDeeplinkCallback(object : DeeplinkCallback {
            fun onReceive(params: Map<String?, String?>?, status: Int) {
                // 这里接收您的参数,匹配键值对,跳转指定 APP 内页面
            }
        })
)
//sdk >= 2.8.4, 新增参数 long appAwakePassedTime 
GrowingIO.startWithConfiguration(this, Configuration()
    .setDeeplinkCallback { params, status, appAwakePassedTime ->
        // 这里接收您的参数,匹配键值对,跳转指定 APP 内页面
        // appAwakePassedTime 这个新的参数用来判定 APP 是否已经打开了很久才收到自定义参数,进而判断是否再继续跳转指定页面
    }
)

返回值说明:

返回值名称
类型
说明

params

Map<String, String>

自定义参数,您自定义的键值对

status

int

DeeplinkCallback.SUCCESS :自定义参数获取成功; DeeplinkCallback.PARSE_ERROR :解析异常;DeeplinkCallback.ILLEGAL_URI :非法URI; DeeplinkCallback.NO_QUERY : 自定义参数为空

appAwakePassedTime

long

(SDK 2.8.4新增)App 唤醒到收到 GIO callback 的时间,单位毫秒。用以判断网络状态不好的情况,应用已经打开很久,才收到回调,开发人员决定是否收到参数后仍然跳转自定义的指定页面。

当返回值为 0 的时候,为 DeepLink 方式打开

示例代码

//sdk >= 2.3.2 && sdk < 2.8.19
GrowingIO.startWithConfiguration(this, new Configuration()
    .setDeeplinkCallback(new DeeplinkCallback() {
                @Override
                public void onReceive(Map<String, String> params, int status) {
                     if (status == DeeplinkCallback.SUCCESS) {
                        //获得您的自定义参数,处理您的相关逻辑
                        Log.d("TestApplication", "DeepLink 参数获取成功,params" + params.toString());
                    }
                }
            })
);
//sdk >= 2.8.4, 新增参数 long appAwakePassedTime 
GrowingIO.startWithConfiguration(this, new Configuration()
    .setDeeplinkCallback(new DeeplinkCallback() {
                @Override
                public void onReceive(Map<String, String> params, int status, long appAwakePassedTime) {
                     //成功得到自定义参数,并且从 APP 打开到收到回调时间小于 1.5 秒
                     if (status == DeeplinkCallback.SUCCESS && appAwakePassedTime < 1500) {
                        //获得您的自定义参数,处理您的相关逻辑
                        Log.d("TestApplication", "DeepLink 参数获取成功,params" + params.toString());
                    }
                }
            })
);
//sdk >= 2.3.2 && sdk < 2.8.19
GrowingIO.startWithConfiguration(
    this, Configuration()
        .setDeeplinkCallback(object : DeeplinkCallback {
            fun onReceive(params: Map<String?, String?>, status: Int) {
                if (status == DeeplinkCallback.SUCCESS) {
                    //获得您的自定义参数,处理您的相关逻辑
                    Log.d("TestApplication", "DeepLink 参数获取成功,params$params")
                }
            }
        })
)
//sdk >= 2.8.4, 新增参数 long appAwakePassedTime 
GrowingIO.startWithConfiguration(this, Configuration()
    .setDeeplinkCallback { params, status, appAwakePassedTime ->
        //成功得到自定义参数,并且从 APP 打开到收到回调时间小于 1.5 秒
        if (status == DeeplinkCallback.SUCCESS && appAwakePassedTime < 1500) {
            //获得您的自定义参数,处理您的相关逻辑
            Log.d("TestApplication", "DeepLink 参数获取成功,params$params")
        }
    }
)

3. 自定义数据上传

90% 以上的用户都会上传登录用户 ID ,以便分析登录用户的数据情况。

4. 创建应用

添加代码之后,请先Clean项目,然后再进行编译,并在您的 Android App 安装了 SDK 后重新启动几次 App,保证行为采集数据自动发送给 GrowingIO,以便顺利完成检测。

在 GrowingIO 平台应用创建页面继续完成应用创建的数据检测,检测成功后应用创建成功。

5. 验证SDK是否正常采集数据

GrowingIO 为您提供多种验证SDK是否正常采集数据的方式:

方式二:在SDK中设置了Debug模式后,在IDE编译器控制台查看数据采集日志。

请将 GrowingIO.startWithConfiguration 加在您的 Application 的 onCreate 方法中。为使 App 合规,请参考。

埋点 SDK 会采集H5页面的数据,需要增加如下特殊配置。同时H5页面需要手动集成 。

如果内嵌H5页面集成了Web JS SDK,则 Web JS SDK 中 配置有效,该接口调用无效

点击 APP WebView 中“代码混淆”的锚点链接,URL 中#号后面为锚点,设置后 SDK 会发送页面浏览事件,它的链接为:​

除上述的用户行为数据(无埋点数据)之外,GrowingIO 还提供了多种 API 接口,供您上传一些自定义的数据指标及维度 ,请参考Android SDK API > 。

了解 GrowingIO 平台数据采集类型请参考。

方式一:

方式三:(推荐)

Hybrid SDK
https://docs.growingio.com/docs/sdk-integration/android-sdk#4-dai-ma-hun-xiao
点击了解新建监测链接。
自定义数
上传API
数据模型
Mobile Debugger
数据校验
HashTag
创建应用
查看项目基本信息
合规步骤