npm i rangers_applog_reactnative_plugin shell
如您使用CocoaPods远程集成,请参考iOS SDK集成1.1~1.4小节; 如您需手动引入集成,请参考1.5小节。
如需使用实时埋点检测(https://www.volcengine.com/docs/6285/66054)功能,请参考iOS SDK集成 第3节,配置Scheme。
如您使用远程集成,请参考Android SDK集成 1.1~1.5小节; 如您需手动引入集成,请参考1.7小节。
如需使用实时埋点检测(https://www.volcengine.com/docs/6285/66054)功能,请参考Android SDK集成 第3节,配置Scheme。
说明 SDK会在初始化的时候就采集用户信息,请确保您采集用户信息之前已经获得用户授权。 合规建议操作如下: 用户授权后再进行SDK的初始化,取得用户授权前所有的信息都不会采集,预置事件也不会被采集。
在开始集成前,首先需要在集团中接入一个项目及应用,进行SDK集成前,您需要获取对应应用的appid信息。
私有化场景下您可以在「全局设置」->「系统设置」->「集团设置」-> 「项目列表」中查看项目详情,可查看其中的appid,详情请参见集团设置。
私有化部署版本需要获取数据上送地址。 如您不清楚此地址,请联系您的项目经理或客户成功经理。
React Native目前需在原生端代码中完成初始化,分别初始化Android SDK、iOS SDK。 如您使用SaaS部署版本,请参考如下代码:
React Native目前需在原生端代码中完成初始化,分别初始化Android SDK、iOS SDK。 如您使用私有化部署版本,请参考如下代码:
如您的产品中有账户体系,请在用户登录后立即设置uuid,以保证用户登录前后口径一致性。
import { NativeModules } from 'react-native'; const { RangersAppLogModule } = NativeModules; // 登录时设置您账号体系的ID, 并保证其唯一性 RangersAppLogModule.setUserUniqueId('{{USER_UNIQUE_ID}}'); dart
在账户登出时调用。
import { NativeModules } from 'react-native'; const { RangersAppLogModule } = NativeModules; // 登出时设置uuid为null RangersAppLogModule.setUserUniqueId(null); dart
设置用户属性,存在则覆盖,不存在则创建。
import { NativeModules } from 'react-native'; const { RangersAppLogModule } = NativeModules; // 示例:设置用户属性,属性名为key,属性值为value RangersAppLogModule.profileSet({"key": "value"}); dart
设置用户属性,存在则不设置,不存在则创建,适合首次相关的用户属性,比如首次访问时间等。
import { NativeModules } from 'react-native'; const { RangersAppLogModule } = NativeModules; // 示例:设置用户属性,属性名为key_once,属性值为value_once RangersAppLogModule.profileSetOnce({"key_once": "value_once"}); dart
设置数值类型的属性,可进行累加。
import { NativeModules } from 'react-native'; const { RangersAppLogModule } = NativeModules; // 示例:设置用户属性,属性名为key,属性值为1 RangersAppLogModule.profileIncrement({"key": 1}); dart
设置List类型的用户属性,可持续向List内添加。
import { NativeModules } from 'react-native'; const { RangersAppLogModule } = NativeModules; // 示例:置用户属性,属性名为key,原本已有属性值,现添加属性值为value_append RangersAppLogModule.profileAppend({"key": "value_append"}); dart
删除用户的属性。
import { NativeModules } from 'react-native'; const { RangersAppLogModule } = NativeModules; // 示例:删除用户属性,属性名为key RangersAppLogModule.profileUnset("key"); dart
可以直接传入 key,从配置中读取需要的值。
import { NativeModules } from 'react-native'; const { RangersAppLogModule } = NativeModules; // 示例:获取 key 为 ab_test_key 的 value let abValuePromise = RangersAppLogModule.getABTestConfigValueForKey("ab_test_key"); abValuePromise.then((abValue) => { console.log(abValue); });
返回值是所有实验版本ID,以逗号隔开。
import { NativeModules } from 'react-native'; const { RangersAppLogModule } = NativeModules; // 示例:获取所有 ab sdk version let vidsPromise = RangersAppLogModule.getAbSdkVersion(); vidsPromise.then((vids) => { console.log(vids); });
import { NativeModules } from 'react-native'; const { RangersAppLogModule } = NativeModules; // 示例:获取完整的 ab config let configsPromise = RangersAppLogModule.getAllAbTestConfigs(); configsPromise.then((configs) => { console.log(configs); });
用户行为日志采用事件event+属性params的形式,事件一般对应多个属性,也可以仅有事件没有属性。 仅上报事件的代码埋点,示例如下:
import { NativeModules } from 'react-native'; const { RangersAppLogModule } = NativeModules; // 示例:上报事件event,该事件不包含属性 RangersAppLogModule.onEventV3("event"); dart
上报事件和对应属性的代码埋点,示例如下:
import { NativeModules } from 'react-native'; const { RangersAppLogModule } = NativeModules; // 示例:上报事件event,该事件包含两个属性 // 一个string类型的属性,属性名为key_string,属性值为value_string // 一个int类型的属性,属性名为key_int,属性值为10 RangersAppLogModule.onEventV3("event", { "key_string": "value_string", "key_int": 10 }); dart
如需在每个事件中都包括某属性,可通过公共属性设置,无需在每个事件中重复设置。公共属性只需设置一次,即可包括在所有代码埋点事件中。
关于自定义 “公共属性” 请注意:
import { NativeModules } from 'react-native'; const { RangersAppLogModule } = NativeModules; // 示例:设置自定义的公共属性,属性名为key_public,属性值为value_public RangersAppLogModule.setHeaderInfo({ "key_public": "value_public" }); dart
import { NativeModules } from 'react-native'; const { RangersAppLogModule } = NativeModules; // 示例:设置自定义的公共属性,属性名为key_public,属性值为value_public RangersAppLogModule.removeHeaderInfo("key_public"); dart
请注意 deviceid 是火山生成的 id,不是原始设备 id。
import { NativeModules } from 'react-native'; const { RangersAppLogModule } = NativeModules; // 示例:获取did let didPromise = RangersAppLogModule.getDeviceID(); didPromise.then((deviceID) => { console.log(deviceID); });