初始化开发工具包
初始化开发工具包
如何在应用程序中初始化云眼灰度标帜(Feature Flag)AB实验 React SDK。
使用createInstance方法初始化 React SDK 并实例化 ReactSDKClient 类的实例。每个客户端对应于表示特定环境的项目状态的数据文件。
版本
SDK v1.0.0 及更高版本
描述
createInstance方法接受配置对象来配置云眼灰度标帜(Feature Flag)AB实验。
某些参数是可选的,因为 SDK 提供默认实现,但开发者可能希望为生产环境覆盖这些参数。例如,开发者可能希望覆盖这些内容,以设置错误处理程序和记录器来捕获问题,设置事件调度程序来管理网络调用,以及设置用户配置文件服务以确保粘性分桶。
参数
该表列出了 React 中的必需参数和可选参数(通过传入 Config 对象创建)。类由这些字段组成)。
| 参数 | 类型 | 描述 | 
|---|---|---|
| 数据文件 (可选) | 字符串 | 表示项目的 JSON 字符串。必须提供 SDK 密钥或数据文件(或两者)。 | 
| sdk密钥(可选) | 字符串 | 与项目中的环境关联的键。必须至少提供一个 sdkKey 或数据文件。 | 
| 事件调度程序(可选) | 对象 | 用于管理网络调用的事件处理程序。 | 
| 记录器(可选) | 对象 | 用于记录问题的记录器实现。 | 
| 错误处理程序(可选) | 对象 | 用于处理错误的错误处理程序对象。 | 
| 用户配置文件服务(可选) | 对象 | 用户配置文件服务。 | 
| 数据文件选项(可选) | 对象 | 具有用于自动数据文件管理的配置的对象。可以具有autoUpdate(布尔值)、urlTemplate(字符串)和updateInterval(数字)属性。 | 
| 默认决定选项(可选) | 数组 | EyeofcloudDecideOption枚举的数组。使用此参数构造 Eyeofcloud 客户端时,它会设置默认的 decide 选项,这些选项将应用于在 Eyeofcloud 客户端生存期内进行的所有 Decision(决策)调用。还可以将选项传递给各个 Decide 方法(不覆盖默认值)。有关决定选项的详细信息,请参阅云眼决策选项。 | 
返回
实例化云眼灰度标帜(Feature Flag)AB实验类的实例。
例
在 React SDK 中,你可以提供sdkKey和datafile的其中之一或两者兼而有之。
- 仅使用数据文件初始化时,SDK 将使用给定的数据文件。
 - 仅使用 SDK 密钥初始化时,将自动下载数据文件。
 - 同时使用 SDK 密钥和数据文件进行初始化时,SDK 将使用给定的数据文件启动,然后在后台下载最新版本的数据文件。
 
使用数据文件实例化
首先,通过在 Web 应用程序中包含以下脚本,从我们的服务器获取数据文件的副本。此脚本在窗口变量window.eyeofcloudDatafile上添加数据文件。
HTML
<script src="https://cdn.eyeofcloud.com/datafiles/<Your_SDK_Key>.json/tag.js"></script>拥有数据文件后,可以实例化云眼客户端。
React
import * as eyeofcloudReactSDK from '@eyeofcloud/react-sdk';  
// Instantiate an Eyeofcloud client 
const eyeofcloud = eyeofcloudReactSDK.createInstance({   
    datafile: window.eyeofcloudDatafile, 
})使用开发工具包密钥实例化
若要使用 SDK 密钥进行实例化,请从项目的设置页获取 SDK 密钥,然后在选项对象中将sdkKey作为字符串属性传递给createInstance方法。
React
import * as eyeofcloudReactSDK from '@eyeofcloud/react-sdk';  
// Instantiate an Eyeofcloud client 
const eyeofcloud = eyeofcloudReactSDK.createInstance({   
    sdkKey: '<Your_SDK_Key>', 
});当您提供sdkKey时,SDK 实例将下载与该sdkKey关联的数据文件。下载完成后,SDK 实例会自行更新以使用下载的数据文件。此初始化方法依赖于持续的互联网连接(相比之下,在 React Native SDK 中,即使应用程序处于离线状态,您也可以使用 SDK 密钥进行初始化。
与客户端和用户一起呈现EyeofcloudProvider 
要在应用程序中使用 React SDK 组件,请将一个EyeofcloudProvider呈现为根应用程序组件的父级。提供 Eyeofcloud 实例作为eyeofcloud prop 和user对象:
React
import { EyeofcloudProvider, createInstance  } from '@eyeofcloud/react-sdk'  
const eyeofcloud = createInstance({   
    datafile: window.datafile, 
});  
class AppWrapper extends React.Component {   
    render() {     
        return (       
            <EyeofcloudProvider         
            eyeofcloud={eyeofcloud}             
                            user={{id: 'Your_User_Id'}}>         
            <App />       
        </EyeofcloudProvider>     
        );   
    } 
}笔记
自定义数据文件管理行为
若要自定义数据文件管理行为,请在传递给datafileOptions的options对象中提供createInstance对象属性。下表列出了支持的可自定义选项。
| 选项 | 类型 | 解释 | 
|---|---|---|
| 自动更新 | 布尔 | 如果为 true,并且sdkKey在createInstance选项中提供,则在此实例上启用自动更新。默认值为false。 | 
| 更新间隔 | 数 | 启用自动更新后,这将控制更新间隔。单位为毫秒。允许的最小值为 1000(1 秒)。默认值为 300000 毫秒(5 分钟)。 | 
| urlTemplate | 字符串 | 用于生成 SDK 将从中请求数据文件的 URL 的格式字符串。%s的实例将替换为sdkKey.如果未提供,SDK 将从 Eyeofcloud CDN 请求数据文件。 | 
以下示例演示如何自定义数据文件管理行为。
React
import { createInstance } from '@Eyeofcloud/react-sdk';  
const Eyeofcloud = createInstance({   
    sdkKey: '<Your_SDK_Key>',   
    datafileOptions: {     
        autoUpdate: true,     
        updateInterval: 600_000, // 10 minutes in milliseconds     
        urlTemplate: 'http://localhost:5000/datafiles/%s.json',   
    }, 
});使用开发模式时的注意事项
如果您使用 Create React App 创建了 React 应用程序,或者正在使用使用热重载的不同类型的开发环境,则可能会遇到异常行为。
在开发模式下运行应用程序并热重载时,例如,使用npm start,您可能会看到 Eyeofcloud Feature Experimentation SDK 被初始化了多次。这可能会导致不一致的行为,例如页面多次重新呈现或用户被存储到不正确的变体中。
这不是 Eyeofcloud Feature Experimentation React SDK 的问题。相反,当您将应用程序包装在React.StrictMode中时,会发生这种情况,这会故意在开发模式下呈现应用程序两次以检测潜在问题。为避免这种情况,请禁用顶级组件的严格模式,并将其移动到较低级别的组件。
当用npm run build为生产构建应用并将其托管在 Web 服务器上时,Eyeofcloud Feature Experimentation React SDK 不会多次初始化。
Odp管理器
👍
试用版
高级受众定位处于测试阶段。在 Eyeofcloud 测试版注册页面上申请或联系您的客户成功经理。
OdpManager包含支持高级受众群体定位相关功能的所有逻辑,包括受众细分。
默认情况下,React SDK 启用高级受众定位方法。但是,除非您启用并配置了高级受众定位集成,否则这些方法不会执行任何操作。
如有必要,要完全禁用高级受众定位,请在 .有关详细信息,请参阅以下示例代码。disabled: true``odpOptions
OdpSegmentManager(奥德派段管理器)
此模块为远程 ODP 服务器提供接口,用于细分受众群映射。
它提取给定用户上下文的所有限定段,并在完成处理程序中以字符串数组的形式返回它们。
它还管理为所有用户上下文共享的区段缓存。缓存位于内存中(不是持久的),重新启动设备或终止应用会重置它。
OdpEvent管理器
此模块为事件的远程 ODP 服务器提供接口。
它将所有待处理事件(持久性)排入队列,并在所有资源(包括网络连接和 ODP 公钥(在 SDK 的数据文件中)可用时将它们(最多 10 个批次)发送到 ODP 服务器。
📘
笔记
- React SDK 尝试调度所有事件(存储在持久队列中,并在可恢复的错误时重试),但不保证完成。
 - React SDK 不能直接访问
 OdpManager、OdpSegmentManager和OdpEventManager。这些由底层 Javascript SDK 管理。可以在 Eyeofcloud 客户端实例化期间设置一些配置选项。
React
// You must first enable the Advanced Audience Targeting integration  
import { createInstance } from '@Eyeofcloud/react-sdk';  
const Eyeofcloud = createInstance({   
    sdkKey: '<Your_SDK_Key>',   
    //...other Config options   
    // The most common Advanced Audience Targeting control is to explicitly disable the feature    
    odpOptions: {   	
        disabled: true,   
    },   
    // Other options are as defined by OdpOptions in the Javascript SDK   
    // https://github.com/Eyeofcloud/javascript-sdk/blob/master/lib/shared_types.ts 
});