在 DevEco Studio 中,针对之前创建的示例控制台应用单击“运行”。编辑器Log日志中输出类似于以下内容:
文本
Flag off. User number 1891 saw flag variation: off and got products sorted by: 购买 config variable as part of flag rule: default-rollout-182-270Flag off. User number 6034 saw flag variation: off and got products sorted by: 购买 config variable as part of flag rule: default-rollout-182-270Flag off. User number 4216 saw flag variation: off and got products sorted by: 购买 config variable as part of flag rule: default-rollout-182-270Flag on. User number 3322 saw flag variation: new_variation1 and got products sorted by: 立即购买 config variable as part of flag rule: buy_experimentFlag off. User number 6169 saw flag variation: off and got products sorted by: 购买 config variable as part of flag rule: default-rollout-182-270Flag on. User number 4839 saw flag variation: new_variation1 and got products sorted by: 立即购买 config variable as part of flag rule: buy_experimentFlag off. User number 943 saw flag variation: off and got products sorted by: 购买 config variable as part of flag rule: default-rollout-182-270Flag on. User number 2534 saw flag variation: new_variation1 and got products sorted by: 立即购买 config variable as part of flag rule: buy_experimentFlag off. User number 7879 saw flag variation: off and got products sorted by: 购买 config variable as part of flag rule: default-rollout-182-270Flag off. User number 9979 saw flag variation: off and got products sorted by: 购买 config variable as part of flag rule: default-rollout-182-270
let user = this.eyeofcloudClient?.createUserContext(userId.toString());// "product_sort" corresponds to a flag key in your Eyeofcloud projectlet decision = user?.decide("product_sort");
// always returns false until you enable a flag rule in the Eyeofcloud appif (decision?.enabled) { // "sort_method" corresponds to variable key you define in Eyeofcloud app let sortMethod = decision?.variables["sort_method"] as string; console.log("sort_method: ", sortMethod);}
import { EventTags } from 'eyeofcloud/src/packages/event-processor/src';import { Client, setDatafileHost, setEventHost, createInstance } from 'eyeofcloud/src/packages/eyeofcloud-sdk/lib/index.node';import { UserAttributes } from "eyeofcloud/src/packages/eyeofcloud-sdk/lib/shared_types"// 将实例放在全局共享中AppStorage.setOrCreate("eyeofcloud", null)@Entry@Componentstruct Index { // 在别的页面需要使用eyeofcloud实例时,增添此项 @StorageLink('eyeofcloud') eyeofcloud: Client | null | undefined = null; @State message: string = 'Hello World' eyeofcloudClient: Client | null | undefined = null aboutToAppear(): void { // 创建实例 this.eyeofcloudClient = createInstance({sdkKey: "YOUR_SDK_KEY"}) } build() { Row() { Column() { Text(this.message) .fontSize(50) .fontWeight(FontWeight.Bold) // 添加按钮,以响应用户点击 Button() { Text('Next') .fontSize(30) .fontWeight(FontWeight.Bold) } .type(ButtonType.Capsule) .margin({ top: 20 }) .backgroundColor('#0D9FFB') .width('40%') .height('5%') .onClick(() => { this.eyeofcloudClient?.onReady().then(() => { for (let i = 0; i < 5; i++) { let userId = Math.floor(Math.random() * 10000); /* -------------------------------- Create hardcoded user & bucket user into a flag variation --------------------------------*/ let user = this.eyeofcloudClient?.createUserContext(userId.toString()); // "product_sort" corresponds to a flag key in your Eyeofcloud project let decision = user?.decide("product_sort"); // did decision fail with a critical error? if (decision?.variationKey == null) { console.log("\n\ndecision error: " + decision?.reasons) } // get a dynamic configuration variable // "sort_method" corresponds to a variable key in your Eyeofcloud project let sortMethod = ""; try { sortMethod = decision?.variables["sort_method"] as string }catch (e) { console.log(e) } console.log("\n\nFlag " + decision.?enabled? "on": "off" + ". User number " + userId + " saw flag variation: " + decision?.variationKey + " and got products sorted by: " + sortMethod + " config variable as part of flag rule: " + decision?.ruleKey) //purchase is the name of the event console.log("Pretend that user made a purchase? y/n ") let randomValue = Math.random() let selectedString = randomValue > 0.5 ? "y" : "n"; console.log(selectedString) if(selectedString == 'y') { user?.trackEvent("buy") console.log("Eyeofcloud recorded a purchase in experiment results for user " + user?.getUserId()) } else { console.log("Eyeofcloud didn't record a purchase in experiment results for user " + user?.getUserId()) } } }) }) } .width('100%') } .height('100%') }}
Flag on. User number 9047 saw flag variation: new_variation1 and got products sorted by: 立即购买 config variable as part of flag rule: buy_experimentPretend that user made a purchase? y/nnEyeofcloud didn't record a purchase in experiment results for user 9047Flag off. User number 9414 saw flag variation: off and got products sorted by: 购买 config variable as part of flag rule: default-rollout-182-270Pretend that user made a purchase? y/nyEyeofcloud recorded a purchase in experiment results for user 9414Flag on. User number 4673 saw flag variation: new_variation1 and got products sorted by: 立即购买 config variable as part of flag rule: buy_experimentPretend that user made a purchase? y/nnEyeofcloud didn't record a purchase in experiment results for user 4673Flag off. User number 7142 saw flag variation: off and got products sorted by: 购买 config variable as part of flag rule: default-rollout-182-270Pretend that user made a purchase? y/nyEyeofcloud recorded a purchase in experiment results for user 7142Flag on. User number 2995 saw flag variation: new_variation1 and got products sorted by: 立即购买 config variable as part of flag rule: buy_experimentPretend that user made a purchase? y/nyEyeofcloud recorded a purchase in experiment results for user 2995
// Track how users behave when they see a flag variation// e.g., after your app processed a purchase, let Eyeofcloud know what happened:user.trackEvent("purchased");