初始化开发工具包

云眼About 5 min

初始化开发工具包

初始化云眼灰度实验Flutter SDK。

使用initializeClient方法初始化 Flutter SDK 并实例化 Eyeofcloud灰度发布 SDK 类的实例,该类公开了 API 方法,如 CreateUserContext 方法。每个客户端对应于表示特定环境的项目状态的数据文件。数据文件可通过 EyeofcloudConfig 访问。

版本

1.0.0-beta 或更高版本

描述

构造函数接受配置对象来配置云眼灰度实验。

某些参数是可选的,因为 SDK 提供默认实现,但开发者可能希望为生产环境覆盖这些参数。例如,开发者可能希望设置事件选项来管理网络调用和数据文件处理程序参数以设置数据文件下载路径或间隔。

参数

下表列出了start方法的必需参数和可选参数:

参数类型描述
sdk密钥(必选)字符串每个环境都有自己的开发工具包密钥。
事件选项(可选)事件选项允许用户设置事件处理器的batchSizetimeIntervalmaxQueueSize
如果用户未设置这些值,系统将使用默认值 batchSize (10)、timeInterval(60)和maxQueueSize(10000)。
datafilePeriodicDownloadInterval(可选)int设置数据文件处理程序尝试定期更新缓存的数据文件的时间间隔(以秒为单位)。
最小间隔为 15 分钟(由 Android JobScheduler API 强制执行)。如果仅运行 iOS,则没有最小间隔。
datafileHostOptions(可选)Map<ClientPlatform, DatafileHostOptions>新增支持为不同平台提供自定义的datafileHostURL。
ClientPlatform是具有两个平台选项iOSandroid
DatafileHostOptions允许用户设置datafileHostPrefixdatafileHostSuffix
对于每个平台,datafileHost后缀格式略有不同。例如,iOS的后缀应如下所示:/datafiles/%@.json%@将自动替换为sdkKey)。
Android 的后缀应如下所示:/datafiles/%s.json%s将自动替换为sdkKey)。

返回

实例化云眼灰度实验类的实例。

例子

在 Flutter SDK 中,不需要直接管理数据文件。SDK 包含一个数据文件管理器,该管理器支持数据文件轮询,以便在应用程序处于前台时定期自动更新数据文件。

要使用它:

  1. 通过提供 SDK 密钥和可选配置设置来创建EyeofcloudFlutterSdk。可以在全栈项目的设置>环境选项卡中找到 SDK 密钥。

  2. 同步启动客户端并使用initializeClient方法实例化客户端:

Dart

// Initializing Eyeofcloud Client    
var flutterSDK = EyeofcloudFlutterSdk("<Your_SDK_Key>");    
var response = await flutterSDK.initializeClient(); 
// flag decision    
var user = await flutterSDK.createUserContext("<User_ID>");    
var decideResponse = await user!.decide("<Flag_Key>");

使用初始化

实例化云眼客户端:同步。此方法在初始化期间对云眼灰度实验服务器执行 ping 操作以获取新的数据文件。

初始化

在初始化期间,应用会从 CDN 服务器请求最新的数据文件。请求最新的数据文件可确保应用始终使用最新的项目设置。这也意味着你的应用无法实例化客户端,直到它下载新的数据文件,发现数据文件未更改或请求超时。

同步初始化客户端会导致管理器首次尝试下载最新的数据文件。此网络活动是导致初始化需要更长的时间才能完成的原因。

如果网络请求返回错误(例如网络连接不可靠或管理器发现缓存的数据文件与最新的数据文件相同),则云眼灰度实验管理器将搜索缓存的数据文件。如果可用,管理器将使用它来完成客户端初始化,否则初始化将失败。如果管理器发现存在与缓存数据文件不同的更新数据文件,那么管理器将下载新的数据文件并使用它来初始化客户端。

1013
initialize-asynchronous.png

要初始化对象EyeofcloudClient,请调用flutterSDK.initializeClient()

配置数据文件轮询

在管理器尝试从 CDN 服务器拉取最新的数据文件后,Eyeofcloud 管理器会定期检查并按照您在初始化期间设置的时间间隔拉取新数据文件。检查和下载新数据文件的过程称为_数据文件轮询_。

默认情况下,启用数据文件轮询。可以设置一个非零间隔值来增加或减少轮询间隔的时间段。此值是管理器在数据文件轮询尝试之间等待的秒数。

Dart

// Datafile update interval can be configured when the SDK is configured 
// Background datafile update is disabled if periodicDownloadInterval is zero 
var flutterSDK = EyeofcloudFlutterSdk(<Your_SDK_Key>, datafilePeriodicDownloadInterval: 15 * 60); 
// every 15 minutes

使用说明

  • 应用打开时的最小轮询间隔为 15 分钟。如果指定的轮询间隔短于最小间隔,SDK 会自动将间隔重置为 15 分钟。

  • Eyeofcloud 管理器仅在 SDK 处于活动状态且应用程序在 iOS/tvOS/Android 上运行时检查新数据文件。

  • Flutter SDK 在检测到新数据文件时自动更新,以确保您始终使用最新的数据文件。如果要在项目更新时收到通知,请通过数据文件更改通知侦听器注册数据文件更改。您也可以通过更新配置open in new window通知注册数据文件更改通知

Dart

flutterSDK.addUpdateConfigNotificationListener((msg) {         
    print("got datafile change")       
    });

更多示例代码

Dart

// Initializing EyeofcloudClient without optional parameters    
var flutterSDK = EyeofcloudFlutterSdk("<Your_SDK_Key>");    
var response = await flutterSDK.initializeClient(); 
// flag decision    
var user = await flutterSDK.createUserContext("<User_ID>");    
var decideResponse = await user!.decide("<Flag_Key>");  

// Initializing EyeofcloudClient with optional datafilePeriodicDownloadInterval     
var flutterSDK = 
    EyeofcloudFlutterSdk(sdkKey, datafilePeriodicDownloadInterval: 16*60);    
var response = await flutterSDK.initializeClient(); 
// flag decision    
var user = await flutterSDK.createUserContext("<User_ID>");    
var decideResponse = await user!.decide("<Flag_Key>");
Last update:
Contributors: zhangweixue