旧-帮助文档
回到 GrowingIO
  • GrowingIO 帮助文档
  • 快速提交工单
  • 快速上手-Web
  • 快速上手-移动端
  • 快速上手-小程序
  • 产品更新日志
  • 分析工具
    • 事件分析
    • 用户分群
    • 用户细查
    • 漏斗分析
    • 活动分析
    • 落地页分析
    • 分布分析
    • 智能路径
    • 留存分析
    • 留存魔法师
    • 活跃用户分析
    • 热图分析
      • Web 端热图
      • App 热图
    • 单图
    • 微信应用用户分析
    • 小程序-分享分析
  • 看板
    • 自定义首页
    • 概览看板
    • KPI看板(企业版)
    • 小程序预置看板
    • 微信内嵌页预置看板
    • 实时监控模板
    • 业务场景
  • GIO 小程序看数助手
  • 广告监测
    • 创建监测链接
      • 推广 App
      • 推广网页
      • 推广小程序(微信)
    • 数据报表
      • 应用级数据
      • 深度数据分析
      • 数据指标说明
    • 推广管理
      • 监测链接
      • 广告活动
      • 推广渠道
    • 渠道配置指南
      • 腾讯社交广告
      • 今日头条
      • 百度原生信息流
      • 微博超级粉丝通
      • 爱奇艺
      • Inmobi
      • 微信广告平台
      • 凤羽广告平台
      • bilibili(B 站)
    • 其他功能
      • 日志导出
      • 维度配置
      • 权限配置
      • 反作弊规则
      • 深度链接配置
    • 相关知识
      • UTM 参数使用指南
      • 创建小程序的推广码
      • 移动端转化归因
      • 默认的渠道来源跟踪
      • DeepLink 启用新域名
    • 广告监测FAQ
  • SDK 文档
    • SDK 简介与安全性说明
    • 各平台 SDK 支持明细
    • SDK 更新日志
    • Web JS SDK
      • Web JS SDK API
      • Web JS SDK 常见问题
    • Android SDK
      • Android 无埋点 SDK
      • Android 无埋点 SDK API
      • Android 半自动采集浏览事件
      • Android 埋点 SDK
      • Android SDK 常见问题
    • iOS SDK
      • iOS 无埋点SDK
      • iOS SDK API
      • iOS 半自动采集浏览事件
      • iOS SDK 1.X旧版本升级指导
      • iOS 埋点SDK
      • iOS SDK 常见问题
    • Hybrid SDK (App内嵌H5)
    • 小程序、小游戏以及内嵌页 SDK
      • SDK 更新日志 - 小程序 & 内嵌页 & 快应用
      • 微信小程序 SDK
        • mpvue+第三方插件 添加代码
      • 微信小游戏 SDK
      • H5 内嵌页 SDK
      • 支付宝小程序 SDK
      • 百度小程序 SDK
      • QQ 小程序 SDK
      • 字节跳动小程序 SDK
      • 快应用 SDK
    • React Native 无埋点 SDK
      • ReactNative 埋点 SDK
    • Flutter 埋点 SDK
    • Cordova 埋点 SDK
    • Weex 埋点 SDK
    • API Cloud埋点 SDK
    • AppCan 埋点 SDK
    • Java 埋点 SDK
    • PHP 埋点 SDK
    • GrowingIO Debugger
      • 验证打点事件
  • 数据模型
    • 用户模型
      • 访问用户
      • 登录用户
      • 用户属性
    • 事件模型
      • 什么是事件
      • 无埋点事件
        • 访问事件及属性
        • 页面事件及属性
        • 动作事件及属性
      • 埋点事件
        • 埋点事件及属性
    • 统计模型
      • 指标--事件的度量
      • 维度--事件的属性
      • 预定义的指标和维度
  • 数据定义
    • 用户变量
      • 登录用户变量
      • 访问用户变量
    • 页面级变量
      • 查询条件直接设置成页面级变量
    • 无埋点圈选
      • Web 圈选
      • App 端圈选 App
      • 电脑端圈选 App
      • 小程序数据定义
      • 微信内嵌页数据定义
      • 圈选指标管理
        • 合并简单指标
        • 复合指标
    • 埋点事件
      • 埋点事件级变量
      • 转化变量
    • 小程序事件和变量
  • 数据管理
    • 新版数据管理功能说明
    • 无埋点事件管理
    • 埋点事件管理
    • 变量管理
    • 合并事件管理
    • 计算指标
  • 系统配置
    • 组织管理
    • 项目管理
    • 用户管理
    • 权限管理
    • 爬虫规则
    • 账号管理
    • UTM 映射管理
    • IP及域名数据过滤
  • API
    • GrowingIO API 认证
    • 广告监测链接创建服务 API
    • 微信小程序二维码创建服务 API
    • 原始数据导出 API
      • 原始数据导出字段说明
        • 无埋点事件
        • 埋点事件与变量
        • 广告相关数据
        • 通用字段说明
      • 原始数据导出 2.0 API
      • 原始数据导出 1.0 API(已废弃)
      • 原始数据导出 API 的升级迁移
      • 原始数据导出格式及处理建议
    • 统计数据导出 API
    • 埋点数据上传API
    • 用户变量上传 API
    • 项目管理 API
    • 数据管理 API (GDPR)
    • API 更新日志
  • 常见问题
    • 基本问题
    • SDK 集成
    • 圈选常见问题
    • 指标和维度
    • 数据安全
    • 产品使用
    • 数据统计差异
    • 无效指标清理说明
  • 内容贡献者
  • 帮助文档问题反馈
Powered by GitBook
On this page
  • 支持版本
  • 集成
  • 预处理 JS 文件
  • Android 集成
  • 1. 添加 Android 无埋点 SDK 依赖
  • 2. 重要配置项
  • iOS 集成
  • 1. 选择SDK集成方式
  • 2. 集成 React Native 打点 SDK
  • 3. 重要配置项
  • 页面识别
  • 1. react-navigation
  • 2. react-native-navigation
  • 3. Page 设置 API
  • 自定义事件和变量API
  • 高级选项设置
  • 验证 SDK 是否正常工作
  • 常见问题
  1. SDK 文档

React Native 无埋点 SDK

自动采集用户行为数据、页面元素信息和设备信息等数据,和原生无埋点 SDK 的采集内容和功能一致。

Previous快应用 SDKNextReactNative 埋点 SDK

Last updated 5 years ago

GitHub Demo : 。

支持版本

  • 兼容 react native 版本:0.46-0.56、0.59.9

  • 兼容组件 react-navigation 版本:^2.7.4、^3.11.0

  • 兼容组件 react-native-navigation 版本:^1.1.486

如果没有使用react-navigation或者react-native-navigation作为导航,请仔细阅读 。

集成

预处理 JS 文件

RN无埋点的实现原理是修改用户React Native,React-navigation, React-Native-Navigation的源码。所以需要预先处理js文件,。

(1)使用命令行进入项目根目录,执行下面操作(二者任选其一即可):

npm install --save react-native-autotrack-growingio
npm install --save https://github.com/growingio/GIORNHook.git#0.0.6

(2) 配置 package.json 文件

考虑到了hook.js每次npm install之后都需要执行, 建议直接配在项目的package.json中, 在原有文件中,添加如下代码,保存后执行npm install。

"scripts": {
	  "postinstall": "node node_modules/react-native-autotrack-growingio/hook.js -run"
}

Android 集成

1. 添加 Android 无埋点 SDK 依赖

注意将 SDK 版本号替换成 RN 版本:RN-autotrack-2.8.7 。

集成步骤中,只有版本号不同,适配 RN 与原生混合开发场景。

2. 重要配置项

1.添加 GrowingIOPackage

由于 SDK 需要在java代码中进行初始化。

在项目的Application中,添加GrowingIOPackage:

public class MainApplication extends Application implements ReactApplication {
    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
          new MainReactPackage(), 
          // 此处加入GrowingIOPackage
          new GrowingIOPackage()
      );
    }
}

2.混淆文件配置

注意混淆文件比 Android 原生 SDK 多一条 RN 控件的混淆代码,请复制全部内容添加到您的 proguard_rules.pro 文件中,如下:

# GIO RN 控件混淆代码,不添加则会造成点击事件采集失败
-keep class com.facebook.react.uimanager.JSTouchDispatcher{
    *;
}
-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$**{
	*;
}

iOS 集成

1. 选择SDK集成方式

注意:请保证Growing,GrowingCoreKit,GrowingAutoTrackKit,GrowingReactNativeKit版本号一致

一.使用 CocoaPods 管理依赖

  1. 添加pod 'GrowingReactNativeKit'到Podfile中

  2. 执行pod update,不要用--no-repo-update选项

  3. (optional) GrowingIO推荐您添加AdSupport.framework依赖库,用于来源管理激活匹配,有利于您更好的分析的数据

  • 添加项目依赖库的位置在项目设置target -> 选项卡General -> Linked Frameworks and Libraries

二.手动安装

  1. 解压上述 iOS SDK 压缩文件

  2. 将 Growing.h 、module.modulemap 和 GrowingCoreKit.framework、GrowingAutoTrackKit.framework、GrowingReactNativeKit.framework

    添加到iOS工程

2. 集成 React Native 打点 SDK

npm install --save https://github.com/growingio/react-native-growingio.git#0.0.7
react-native link react-native-growingio 

如果react-native link react-native-growingio失败

(成功则忽略此步骤),即发现Libraries中没有GrowingIORNPlugin.xcodeproj,则可手动配置:

  1. 打开 XCode 工程中, 右键点击 Libraries 文件夹 ➜ Add Files to <...>

  2. 去 node_modules ➜ react-native-growingio ➜ iOS ➜ 选择 GrowingIORNPlugin.xcodeproj

  3. 在工程Build Phases ➜ Link Binary With Libraries中添加libGrowingIORNPlugin.a

如果您使用的是pod 的方式集成 :

请添加以下内容到Podfile中,并在添加之后执行pod update:

pod 'GrowingReactNativeTrackKit', :path => '../node_modules/react-native-growingio'

3. 重要配置项

页面识别

1. react-navigation

如果使用react-navigation, 我们的hook脚本进行了自动适配, 默认的page名称为其key值。 用户可以自行设置, 如下代码:

this.props.navigation.setParams({growingPagePath: 'xx'});

2. react-native-navigation

  • 当前支持react-native-navigation版本为 1.1.486, 1.1.406。 理论上兼容1.1版本。

  • react-native-navigation其标题默认取title, 如果没有title则取screenId,作为唯一标记。

用户可以设置自定义title, 只需要设置growingPagePath字段, 该字段与title同级即可.

3. Page 设置 API

如果SDK目前支持的路由方案不能满足您的需求, SDK留下拓展接口, 您需要在您认为页面发生切换时, 将最新的page名称告诉我们。 调用方法如下:

import {
    NativeModules
  } from 'react-native';

// 在react native页面将要展示时调用
NativeModules.GrowingIO.onPagePrepare("pageName");
// 在react native页面已经展示时调用
NativeModules.GrowingIO.onPageShow("pageName");

自定义事件和变量API

方法名

参数类型

说明

track

(String eventId, Object eventLevelVariable(optional))

自定义事件

trackWithNumber

(String eventId, Number number, Object eventLevelVariable(optional))

自定义事件

setEvar

(Object conversionVariables)

设置转化变量

setPeopleVariable

(Object peopleVariables)

设置用户变量

setUserId

(String userId)

设置登录用户ID

clearUserId

无参数

清除登录用户ID

setVisitor

(Object visitor)

设置访问用户变量

参数限制条件

参数名称

限制条件

eventId

非空,长度限制小于等于50;

number

非空。

eventLevelVariable

不可使用嵌套的JSONObject对象,即为JSONObject中不可以放入JSONObject或者JSONArray;

key 长度限制小于等于50,value长度限制小等于1000。

conversionVariables

同上

peopleVariables

同上

visitor

同上

userId

长度限制小于等于1000;

如果值为空则清空了登录用户变量,不建议这么用,

请使用 clearUserId 清除登录用户变量。

代码示例:

GrowingIOPackage 向 RN 提供了一个 NativeModule , 所有打点接口都是由其实现,使用方法如下:

//在使用 GrowingIO 埋点功能的文件中导入 NativeModules
import {
    NativeModules
  } from 'react-native';

//埋点方法调用示例如下:

//track 设置自定义事件
NativeModules.GrowingIO.track('testEventId', {'卖家Id': 'xxxxxx', '地点': '北京'});

//trackWithNumber 设置自定义事件
NativeModules.GrowingIO.trackWithNumber('addCart',97,{"book":"EnglishBook"});

//setPeopleVariable 设置用户变量
NativeModules.GrowingIO.setPeopleVariable({ "name": "Danny", "Age": 20 });

//setEvar 设置转化变量
NativeModules.GrowingIO.setEvar({ "registered": true, "fee": "200" });

//setUserId 设置登录用户名称
NativeModules.GrowingIO.setUserId("Gioer");

//clearUserId 清除登录用户名称
NativeModules.GrowingIO.clearUserId();

//setVisitor 设置访问用户变量
NativeModules.GrowingIO.setVisitor({ "age": 20, "gender": "male" });

高级选项设置

开发者可以为UI元素添加growingParams

代码示例:

<Text growingParams={{id:"test",content:"test",info:"test",ignore:"true"}}>高级选项设置</Text>

属性列表

属性名称

参数限制

描述

功能对应于原生接口

ignore

仅接受"true"

忽略对应的元素,不采集点击事件和浏览事件

track

仅接受"true"

采集输入框内容,默认采集输入框内容变化次数,不采集内容

id

设置界面元素ID

content

设置界面元素内容

info

设置元素对象

支持设置组件(Component)列表(包括但不限于)

支持的组件

View

ScrollView

ListView

Picker

Text

TextInput

WebView

RefreshControl

ActivityIndicator

验证 SDK 是否正常工作

验证内容:

  1. 验证 点击事件是否发送 (clck)

  2. 验证 页面是否识别(page)

验证工具:

  1. 查看日志:iOS

常见问题

1.iOS 使用react native location功能时与GrowingIO有冲突么?

2. 支持react native 版本?

0.46 ~ 0.56

3. chrome debug时是否可以校验sdk采集数据的准确性?

目前不支持,但不影响您chrome debug调试自己的项目, 建议您在release环境下校验

4. react native页面中的tabbar imp event不准确?click event是否受影响?

(1) 原则上对于react native中的tabbar控件,我们只能保证使用原生代码UITabBarController,或者不是RCT为前缀的原生控件实现的tabbar,可以正确采集tabbar上的imp (2) click event不受影响,可正确采集

React Native 无埋点 SDK 是在 Android 原生 SDK 上的扩展,参照 ,集成步骤的 1~5.

获取 、、、包

其余参照集成,操作步骤一致。

与原生混合开发的开发者可详细查看文档,如果原生控件使用不多,只需关注如下配置即可:

由于RN应用的页面切换并不遵循原生的生命周期, 需要单独适配, 目前在 React Native 页面中我们只支持react-navigation, react-native-navigation作为导航器, 并且为了拓展性, 留下了手动的page接口, 开发者可自行适配()。

采集原理参照 ,目前仅兼容 方式,如果用户使用 Redux ,请结合官网的 和 采集页面。

埋点接口其实最终是通过 NativeModules.GrowingIO 调用的原生GrowingIO 无埋点的API,以上接口使用时,对应的参数限制条件对您很重要。请您注意遵守,并且打点是否成功。

文档解释,iOS 意义相同

文档解释,iOS 意义相同

文档解释,iOS 意义相同

文档解释,iOS 意义相同

文档解释,iOS 意义相同

验证和功能

(Android)

(iOS)

Android 打开 TestMode 和 Debug Mode

是的,但不属于growingio的原因,具体可以参考中的解答,并且可以使用来解决这个问题

GrowingCoreKit
GrowingAutoTrackKit
GrowingReactNativeKit
GrowingHeader
直接更改 hook.js 脚本
热图
圈选
Mobile Debugger
issue
rn-patch.zip
https://github.com/growingio/ReactNativeDemo
GitHub 开源 JS 脚本
Page设置API
react-navigation 的 screen tracking
Listening to State Changes
Screen tracking with Redux
Page 设置 API
验证
iOS 无埋点 SDK
iOS 无埋点 重要配置
App Store 提交应用注意事项
原生验证内容
Android 无埋点 SDK
查看日志:
Android
Android
Android
Android
Android
原生验证内容