Eppo 反应原生 SDK
埃波 是一个模块化的标注和实验分析工具。 Eppo的React Introduct SDK是为在网页浏览器中运行的单一用户客户端应用程序做出任务而构建的. 在继续之前,你需要一个Epo账户.
特征
- 特性门
- 杀死开关
- 逐步推出
- A/B/n实验
- 相互排斥的实验(Layers)
- 动态配置
安装
npm install @eppo/react-native-sdk
快开始
开始初始化一个Eppo客户端的单通实例. 初始化后,客户端可以用于在您的应用程序中任意位置的任务.
初始化一次
import { init } from "@eppo/react-native-sdk";
await init({ apiKey: "<SDK-KEY-FROM-DASHBOARD>" });
随地分配
import * as EppoSdk from "@eppo/react-native-sdk";
const eppoClient = EppoSdk.getInstance();
const user = getCurrentUser();
const variation = eppoClient.getBooleanAssignment('show-new-feature', user.id, {
'country': user.country,
'device': user.device,
}, false);
分配职能
每个Eppo旗都有回放类型,在仪表板上设定一次创建. 一旦创建了一面旗帜,代码中的指派应当使用相应的打入函数:
getBoolAssignment(...)
getNumericAssignment(...)
getIntegerAssignment(...)
getStringAssignment(...)
getJSONAssignment(...)
每个函数都有相同的签名,但返回函数名中的类型。 用于布尔斯 getBooleanAssignment,其签名如下:
getBooleanAssignment: (
flagKey: string,
subjectKey: string,
subjectAttributes: Record<string, any>,
defaultValue: boolean,
) => boolean
初始化选项
这个 init 函数接受以下可选配置参数.
| 选项 | 类型 | 说明 | 默认 |
|---|---|---|---|
assignmentLogger | 指派 | 一个回调,将每个任务发送到你的数据仓库。 仅用于实验分析。 见 实例 见下文. | null |
requestTimeoutMs | 编号 | 实验配置 HTTPS 请求的超时为毫秒. | 5000 |
numInitialRequestRetries | 编号 | 数目 额外 如果初始配置请求失败,则会尝试其时间。 这是通常同步等待的请求(通过 await供完成。 请求之间将进行一个小等. | 1 |
pollAfterSuccessfulInitialization | 布尔 | 在成功请求初始配置后为新配置投放( 每30秒) . | false |
pollAfterFailedInitialization | 布尔 | 即使初始配置请求失败, 仍要为新配置投放 . | false |
throwOnFailedInitialization | 布尔 | 如果初始化时无法获取初始配置, 则丢出一个错误( 拒绝承诺 ) . | true |
numPollRequestRetries | 编号 | 如果在初始化后对更新配置进行投票,在放弃之前将尝试请求次数。 随后的尝试使用指数回放进行. | 7 |
任务日志
要使用 Eppo SDK 进行需要进行分析的实验,请通过回调记录功能到 init 函数在 SDK 初始化上。 SDK在指定变异时引用回调来获取任务数据. 仓库需要分配数据进行分析.
以下代码说明了使用下列方式进行记录召回的实例: 部分但你可以使用任何你想要的系统。 唯一的要求是SDK收到一个 logAssignment 调用函数 。 在这里,我们确定 Eppo 的实施 IAssignmentLogger 包含单个函数的界面 logAssignment数字 :
import { IAssignmentLogger } from "@eppo/react-native-sdk";
import { AnalyticsBrowser } from "@segment/analytics-next";
// Connect to Segment (or your own event-tracking system)
const analytics = AnalyticsBrowser.load({ writeKey: "<SEGMENT_WRITE_KEY>" });
const assignmentLogger: IAssignmentLogger = {
logAssignment(assignment) {
analytics.track({
userId: assignment.subject,
event: "Eppo Randomized Assignment",
type: "track",
properties: { ...assignment },
});
},
};
避免重复任务日志
Eppo的SDK使用内部缓存确保重复的任务事件不会被登录到数据仓库. 虽然Eppo的分析引擎将自动去除任务记录,但这种内部缓存可以防止发射不必要的事件并可以帮助将事件记录的相关成本降到最低.
哲学
Eppo的SDK是为简便,速度和可靠性而建造的. 旗帜配置被压缩并分布在全球CDN(快取)上,一般在15ms以下到达终端用户. 这些配置随后在当地缓存,以确保每项任务立即完成。 每个SDK都尽可能轻取,在周围有评价逻辑 25条简单的代码线,上面列出的简单打字功能是所有开发者需要知道的,抽象了基础一组特性的复杂性.