初始化开发工具包

云眼About 7 min

初始化开发工具包

如何在应用程序中初始化云眼灰度发布(特性标帜)AB实验 React SDK。

使用createInstance方法初始化 React SDK 并实例化 ReactSDKClient 类的实例。每个客户端对应于表示特定环境的项目状态的数据文件。

版本

SDK v1.0.0 及更高版本

描述

createInstance方法接受配置对象来配置云眼灰度发布(特性标帜)AB实验。

某些参数是可选的,因为 SDK 提供默认实现,但开发者可能希望为生产环境覆盖这些参数。例如,开发者可能希望覆盖这些内容,以设置错误处理程序记录器来捕获问题,设置事件调度程序来管理网络调用,以及设置用户配置文件服务以确保粘性分桶。

参数

该表列出了 React 中的必需参数和可选参数(通过传入 Config 对象创建)。类由这些字段组成)。

参数类型描述
数据文件 (可选)字符串表示项目的 JSON 字符串。必须提供 SDK 密钥或数据文件(或两者)。
sdk密钥(可选)字符串与项目中的环境关联的键。必须至少提供一个 sdkKey 或数据文件。
事件调度程序(可选)对象用于管理网络调用的事件处理程序。
记录器(可选)对象用于记录问题的记录器实现。
错误处理程序(可选)对象用于处理错误的错误处理程序对象。
用户配置文件服务(可选)对象用户配置文件服务。
数据文件选项(可选)对象具有用于自动数据文件管理的配置的对象。可以具有autoUpdate(布尔值)、urlTemplate(字符串)和updateInterval(数字)属性。
默认决定选项(可选)数组EyeofcloudDecideOption枚举的数组。使用此参数构造 Eyeofcloud 客户端时,它会设置默认的 decide 选项,这些选项将应用于在 Eyeofcloud 客户端生存期内进行的所有 Decision(决策)调用。还可以将选项传递给各个 Decide 方法(不覆盖默认值)。有关决定选项的详细信息,请参阅云眼决策选项

返回

实例化云眼灰度发布(特性标帜)AB实验类的实例。

在 React SDK 中,你可以提供sdkKeydatafile的其中之一或两者兼而有之。

  • 仅使用数据文件初始化时,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>     
        );   
    } 
}

笔记


自定义数据文件管理行为

若要自定义数据文件管理行为,请在传递给datafileOptionsoptions对象中提供createInstance对象属性。下表列出了支持的可自定义选项。

选项类型解释
自动更新布尔如果为 true,并且sdkKeycreateInstance选项中提供,则在此实例上启用自动更新。默认值为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 应用程序open in new window,或者正在使用使用热重载的不同类型的开发环境,则可能会遇到异常行为。

在开发模式下运行应用程序并热重载时,例如,使用npm startopen in new window,您可能会看到 Eyeofcloud Feature Experimentation SDK 被初始化了多次。这可能会导致不一致的行为,例如页面多次重新呈现或用户被存储到不正确的变体中。

这不是 Eyeofcloud Feature Experimentation React SDK 的问题。相反,当您将应用程序包装在React.StrictMode中时,会发生这种情况,这会故意在开发模式下呈现应用程序两次以检测潜在问题。为避免这种情况,请禁用顶级组件的严格模式,并将其移动到较低级别的组件。

当用npm run build为生产构建应用并将其托管在 Web 服务器上时,Eyeofcloud Feature Experimentation React SDK 不会多次初始化。

Odp管理器


👍

试用版


高级受众定位处于测试阶段。在 Eyeofcloud 测试版注册页面上open in new window申请或联系您的客户成功经理。

OdpManager包含支持高级受众群体定位相关功能的所有逻辑,包括受众细分。

默认情况下,React SDK 启用高级受众定位方法。但是,除非您启用并配置了高级受众定位集成,否则这些方法不会执行任何操作。

如有必要,要完全禁用高级受众定位,请在 .有关详细信息,请参阅以下示例代码。disabled: true``odpOptions

OdpSegmentManager(奥德派段管理器)

此模块为远程 ODP 服务器提供接口,用于细分受众群映射。

它提取给定用户上下文的所有限定段,并在完成处理程序中以字符串数组的形式返回它们。

它还管理为所有用户上下文共享的区段缓存。缓存位于内存中(不是持久的),重新启动设备或终止应用会重置它。

OdpEvent管理器

此模块为事件的远程 ODP 服务器提供接口。

它将所有待处理事件(持久性)排入队列,并在所有资源(包括网络连接和 ODP 公钥(在 SDK 的数据文件中)可用时将它们(最多 10 个批次)发送到 ODP 服务器。

📘

笔记


  • React SDK 尝试调度所有事件(存储在持久队列中,并在可恢复的错误时重试),但不保证完成。
  • React SDK 不能直接访问OdpManagerOdpSegmentManagerOdpEventManager。这些由底层 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 
});
Last update:
Contributors: zhangweixue,“zhangweixue”