การอ้างอิงนิพจน์แบบมีเงื่อนไขของการกำหนดค่าระยะไกล

หน้านี้มีข้อมูลอ้างอิงสำหรับการสร้างนิพจน์แบบมีเงื่อนไข โดยใช้ Backend API Remote Config หรือคอนโซล Firebase ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าและการใช้ Backend API ได้ที่ แก้ไขการกำหนดค่าระยะไกลโดยใช้โปรแกรม

องค์ประกอบที่ใช้สร้างเงื่อนไข

Remote Config REST API รองรับองค์ประกอบเดียวกันกับที่คุณใช้สร้างเงื่อนไขได้เมื่อกำหนดค่า Remote Config โดยใช้คอนโซล Firebase:

องค์ประกอบ คำอธิบาย
&&

ใช้สร้าง "และ" เชิงตรรกะขององค์ประกอบหากใช้องค์ประกอบมากกว่า 1 รายการ สำหรับเงื่อนไข หากมีการใช้องค์ประกอบในไวยากรณ์ REST โดยไม่มี && ระบบจะถือว่าองค์ประกอบนั้นเป็นเงื่อนไข

หมายเหตุ: ต้องมีช่องว่างก่อนและหลังเครื่องหมายแอมเพอร์แซนด์ เช่น: element1 && element2.

app.build

ประเมินเป็น TRUE หรือ FALSE ตามค่าหมายเลขบิลด์ของแอป

หมายเหตุ: ใช้ได้เฉพาะในอุปกรณ์ Apple และ Android เท่านั้น สำหรับ Apple ให้ใช้ค่า CFBundleVersion และสำหรับ Android ให้ใช้ค่า versionCode

app.version

ประเมินเป็น TRUE หรือ FALSE ตามค่าหมายเลขเวอร์ชันของแอป

หมายเหตุ: สำหรับอุปกรณ์ Android ให้ใช้ค่า versionName และสำหรับอุปกรณ์ Apple ให้ใช้ค่า CFBundleShortVersionString

app.id องค์ประกอบที่อิงตามรหัสแอป Firebase ของแอป
app.audiences องค์ประกอบที่ประเมินเป็น TRUE หรือ FALSE ตามการมีอยู่หรือไม่มีอยู่ของผู้ใช้ใน กลุ่มเป้าหมาย Firebase Analytics อย่างน้อย 1 กลุ่ม
app.firstOpenTimestamp องค์ประกอบที่อิงตามเวลาที่ผู้ใช้เปิดแอปเป็นครั้งแรก ซึ่งได้จาก เหตุการณ์ Google Analytics first_open ใช้รูปแบบวันที่ ISO พร้อมตัวเลือกในการระบุเขตเวลาคงที่ เช่น app.firstOpenTimestamp >= ('2022-10-31T14:37:47', 'America/Los_Angeles') หากไม่ได้ระบุเขตเวลา ระบบจะใช้ GMT
app.userProperty องค์ประกอบที่ประเมินเป็น TRUE หรือ FALSE ตามค่าตัวเลขหรือค่าสตริงของ Google Analytics User Property
app.operatingSystemAndVersion

องค์ประกอบที่อิงตามระบบปฏิบัติการที่แอปทำงานอยู่ ประเมินเป็น TRUE เมื่อระบบปฏิบัติการและเวอร์ชันของระบบปฏิบัติการตรงกับเป้าหมายที่ระบุ

หมายเหตุ: ใช้ได้กับเว็บแอปเท่านั้น

app.browserAndVersion

องค์ประกอบที่อิงตามเบราว์เซอร์ที่แอปทำงานอยู่ ประเมินเป็น TRUE เมื่อเบราว์เซอร์และเวอร์ชันของเบราว์เซอร์ตรงกับ เป้าหมายที่ระบุ

หมายเหตุ: ใช้ได้กับเว็บแอปเท่านั้น

app.firebaseInstallationId องค์ประกอบที่อิงตามรหัสของการติดตั้งอุปกรณ์ที่เฉพาะเจาะจง ประเมินเป็น TRUE เมื่อรหัสการติดตั้งตรงกับรหัสการติดตั้งที่ระบุ
app.customSignal องค์ประกอบที่ประเมินเป็น TRUE หรือ FALSE ตาม ค่าตัวเลข ค่าเชิงความหมาย หรือค่าสตริงของ เงื่อนไขสัญญาณที่กำหนดเอง
device.country องค์ประกอบที่อิงตามภูมิภาค/ประเทศที่อุปกรณ์ตั้งอยู่ โดยใช้ มาตรฐาน ISO 3166-1 alpha-2 (เช่น US หรือ UK) ประเมินเป็น TRUE เมื่อประเทศตรงกับรหัสประเทศที่คาดไว้
device.dateTime องค์ประกอบที่อิงตามเวลาที่อุปกรณ์ดึงข้อมูลล่าสุด ใช้รูปแบบวันที่ ISO พร้อมตัวเลือกในการระบุเขตเวลาคงที่ เช่น dateTime('2017-03-22T13:39:44', 'America/Los_Angeles')
device.language องค์ประกอบที่อิงตามภาษาที่เลือกในอุปกรณ์ ภาษาจะแสดงโดยใช้แท็กภาษา IETF เช่น es-ES, pt-BR หรือ en-US ประเมินเป็น TRUE เมื่อภาษาตรงกับรหัสภาษาที่คาดไว้
device.os องค์ประกอบที่อิงตามระบบปฏิบัติการที่ใช้ในอุปกรณ์ (Apple หรือ Android) ประเมินเป็น TRUE เมื่อระบบปฏิบัติการของอุปกรณ์เป็นประเภทที่คาดไว้
percent ประเมินเป็น TRUE ตามการรวมผู้ใช้ไว้ในเปอร์เซ็นต์เศษส่วนที่กำหนดแบบสุ่ม โดยมีขนาดตัวอย่างเล็กถึง 0.000001%)

เงื่อนไขแบบองค์ประกอบเดียวมี 3 ช่อง ได้แก่

  1. name ที่กำหนดขึ้นเอง (สูงสุด 100 อักขระ)
  2. นิพจน์แบบมีเงื่อนไขที่ประเมินเป็น TRUE หรือ FALSE ซึ่งประกอบด้วยองค์ประกอบที่แสดงด้านบน
  3. (ไม่บังคับ) tagColor ซึ่งอาจ เป็น "BLUE", "BROWN", "CYAN", "DEEP_ORANGE", "GREEN", "INDIGO", "LIME", "ORANGE", "PINK", "PURPLE" หรือ "TEAL" สีไม่ คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ และจะส่งผลต่อวิธีแสดงเงื่อนไขใน Firebase คอนโซลเท่านั้น

โอเปอเรเตอร์ที่รองรับ

เช่น app.build.notContains([123, 456]) จะแสดงผล TRUE หาก บิลด์ของแอปจริงคือ 123 หรือ 492 แต่จะแสดงผล FALSE หาก บิลด์ของแอปจริงคือ 999

เช่น app.version.notContains([123, 456]) จะแสดงผล TRUE หาก เวอร์ชันของแอปจริงคือ 123 หรือ 492 แต่จะแสดงผล FALSE หาก เวอร์ชันของแอปจริงคือ 999

องค์ประกอบ โอเปอเรเตอร์ที่รองรับ คำอธิบาย
app.audiences .inAtLeastOne([...])

แสดงผล TRUE หากกลุ่มเป้าหมายจริงตรงกับชื่อกลุ่มเป้าหมายอย่างน้อย 1 ชื่อในรายการ
ตัวอย่างเช่น

app.audiences.inAtLeastOne(['Audience 1', 'Audience 2'])

app.audiences .notInAtLeastOne([...])

แสดงผล TRUE หากกลุ่มเป้าหมายจริงไม่ตรงกับชื่อกลุ่มเป้าหมายอย่างน้อย 1 ชื่อในรายการ

app.audiences .inAll([...])

แสดงผล TRUE หากกลุ่มเป้าหมายจริงเป็นสมาชิกของชื่อกลุ่มเป้าหมายทุกชื่อในรายการ

app.audiences .notInAll([...])

แสดงผล TRUE หากกลุ่มเป้าหมายจริงไม่ใช่สมาชิกของกลุ่มเป้าหมายใดๆ ในรายการ

app.firstOpenTimestamp <=, >

เปรียบเทียบเวลาของเหตุการณ์ first_open กับเวลาที่ระบุ ในเงื่อนไข และแสดงผล TRUE หรือ FALSE ตามโอเปอเรเตอร์
ตัวอย่างการใช้งาน:
app.firstOpenTimestamp >= ('2022-10-31T14:37:47', 'America/Los_Angeles')
วิธีระบุช่วง:
app.firstOpenTimestamp >= ('2022-11-01T00:00:00') && app.firstOpenTimestamp < ('2022-12-01T00:00:00') หากไม่ได้ระบุเขตเวลา ระบบจะใช้ GMT

app.userProperty <, <=, ==, !=, >=, >

แสดงผล TRUE หากพร็อพเพอร์ตี้ผู้ใช้จริงเปรียบเทียบ กับค่าที่ระบุในลักษณะที่ตรงกับโอเปอเรเตอร์

app.userProperty .contains([...])

แสดงผล TRUE หากค่าเป้าหมายค่าใดค่าหนึ่งเป็นสตริงย่อยของพร็อพเพอร์ตี้ผู้ใช้จริง

app.userProperty .notContains([...])

แสดงผล TRUE หากค่าเป้าหมายทั้งหมดไม่ใช่สตริงย่อยของพร็อพเพอร์ตี้ผู้ใช้จริง

app.userProperty .exactlyMatches([...])

แสดงผล TRUE หากพร็อพเพอร์ตี้ผู้ใช้จริงตรงกับ (คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) ค่าใดค่าหนึ่ง ในรายการ

app.userProperty .matches([...])

แสดงผล TRUE หาก นิพจน์ทั่วไปเป้าหมายรายการใดรายการหนึ่ง ในรายการตรงกับสตริงย่อยหรือ ค่าจริงทั้งหมด หากต้องการบังคับให้ตรงกับสตริงทั้งหมด ให้ใส่นิพจน์ทั่วไปด้วย "^" และลงท้ายด้วย "$" โดยใช้ไวยากรณ์ RE2

app.id ==

แสดงผล TRUE หากค่าที่ระบุตรงกับรหัสแอปของแอป

app.build <, <=, ==, !=, >=, >

แสดงผล TRUE หากบิลด์ของแอปจริงเปรียบเทียบ กับค่าที่ระบุในลักษณะที่ตรงกับโอเปอเรเตอร์

app.build .contains([...])

แสดงผล TRUE หากค่าเป้าหมายค่าใดค่าหนึ่งเป็นสตริงย่อยของ บิลด์ของแอปจริง เช่น "a" และ "bc" เป็นสตริงย่อยของ "abc"

app.build .notContains([...])

แสดงผล TRUE หากค่าเป้าหมายทั้งหมดไม่ใช่สตริงย่อยของบิลด์ของแอปจริง

app.build .exactlyMatches([...])

แสดงผล TRUE หากบิลด์ของแอปจริงตรงกับ ค่าใดค่าหนึ่ง ในรายการ

app.build .matches([...])

แสดงผล TRUE หาก นิพจน์ทั่วไปเป้าหมายรายการใดรายการหนึ่ง ในรายการตรงกับสตริงย่อยหรือค่าจริงทั้งหมด หากต้องการบังคับให้ตรงกับสตริงทั้งหมด ให้ใส่นิพจน์ทั่วไปด้วย "^" และลงท้ายด้วย "$" โดยใช้ไวยากรณ์ RE2

app.version <, <=, ==, !=, >=, >

แสดงผล TRUE หากเวอร์ชันของแอปจริงเปรียบเทียบ กับค่าที่ระบุในลักษณะที่ตรงกับโอเปอเรเตอร์

app.version .contains([...])

แสดงผล TRUE หากค่าเป้าหมายค่าใดค่าหนึ่งเป็นสตริงย่อยของ เวอร์ชันของแอปจริง เช่น "a" และ "bc" เป็นสตริงย่อยของ "abc"

app.version .notContains([...])

แสดงผล TRUE หากค่าเป้าหมายทั้งหมดไม่ใช่สตริงย่อยของ เวอร์ชันของแอปจริง

app.version .exactlyMatches([...])

แสดงผล TRUE หากเวอร์ชันของแอปจริงตรงกับ ค่าใดค่าหนึ่ง ในรายการ

app.version .matches([...])

แสดงผล TRUE หาก นิพจน์ทั่วไปเป้าหมายรายการใดรายการหนึ่ง ในรายการตรงกับสตริงย่อยหรือค่าจริงทั้งหมด หากต้องการบังคับให้ตรงกับสตริงทั้งหมด ให้ใส่นิพจน์ทั่วไปด้วย "^" และลงท้ายด้วย "$" โดยใช้ไวยากรณ์ RE2

app.operatingSystemAndVersion .inOne([...])

แสดงผล TRUE หากระบบปฏิบัติการและเวอร์ชันตรงกับ ค่าใดค่าหนึ่ง ของ ค่าเป้าหมายในรายการ
ตัวอย่างเช่น

    app.operatingSystemAndVersion.inOne([operatingSystemName('Macintosh')
    .version.==('10.15')])
    

app.browserAndVersion .inOne([...])

แสดงผล TRUE หากเบราว์เซอร์และเวอร์ชันตรงกับ ค่าใดค่าหนึ่ง ของ ค่าเป้าหมายในรายการ
ตัวอย่างเช่น

    app.browserAndVersion.inOne([browserName('Chrome').anyVersion])
    

app.firebaseInstallationId in [...]

แสดงผล TRUE หากรหัสการติดตั้ง ตรงกับรหัสที่ระบุไว้ในรายการ ตัวอย่างการใช้งาน: app.firebaseInstallationId in ['eyJhbGciOiJFUzI1N_iIs5', 'eapzYQai_g8flVQyfKoGs7']

app.customSignal <, <=, ==, !=, >=, >

แสดงผล TRUE หากเงื่อนไขสัญญาณที่กำหนดเองเปรียบเทียบกับค่าที่ระบุในลักษณะที่ตรงกับโอเปอเรเตอร์

app.customSignal .contains([...])

แสดงผล TRUE หากค่าเป้าหมายค่าใดค่าหนึ่งเป็นสตริงย่อยของ เงื่อนไขสัญญาณที่กำหนดเองจริง

app.customSignal .notContains([...])

แสดงผล TRUE หากค่าเป้าหมายค่าใดค่าหนึ่งเป็นสตริงย่อยของ เงื่อนไขสัญญาณที่กำหนดเองจริง

app.customSignal .exactlyMatches([...])

แสดงผล TRUE หากเงื่อนไขสัญญาณที่กำหนดเองจริงตรงกับค่าเป้าหมายค่าใดค่าหนึ่งในรายการ (คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่)

app.customSignal .matches([...])

แสดงผล TRUE หากนิพจน์ทั่วไปเป้าหมายรายการใดรายการหนึ่งในรายการ ตรงกับสตริงย่อยหรือเงื่อนไขสัญญาณที่กำหนดเองจริงทั้งหมด หากต้องการบังคับให้ตรงกับสตริงทั้งหมด ให้ใส่ นิพจน์ทั่วไปด้วย "^" และลงท้ายด้วย "$" โดยใช้ไวยากรณ์ RE2

version(app.customSignal) <, <=, ==, !=, >=, >

แสดงผล TRUE หากเงื่อนไขสัญญาณที่กำหนดเองเปรียบเทียบกับค่าที่ระบุในลักษณะที่ตรงกับโอเปอเรเตอร์

device.country in [...]

แสดงผล TRUE หากประเทศของอุปกรณ์ ตรงกับประเทศที่ระบุไว้ในรายการ ตัวอย่างการใช้งาน: device.country in ['gb', 'us']. ระบบจะกำหนดรหัสประเทศของอุปกรณ์โดยใช้ ที่อยู่ IP ของอุปกรณ์ในคำขอหรือรหัสประเทศที่กำหนดโดย Firebase Analytics (หากมีการแชร์ข้อมูล Analytics กับ Firebase)

device.dateTime <=, >

เปรียบเทียบเวลาปัจจุบัน กับเวลาเป้าหมายของเงื่อนไข และประเมินเป็น TRUE หรือ FALSE ตามโอเปอเรเตอร์ ตัวอย่างการใช้งาน: dateTime < dateTime('2017-03-22T13:39:44').

device.language in [...]

แสดงผล TRUE หากภาษาของแอปภาษาใดภาษาหนึ่งตรงกับภาษา ในรายการ ตัวอย่างการใช้งาน: device.language in ['en-UK', 'en-US']

device.os ==, != แสดงผล TRUE หากระบบปฏิบัติการของอุปกรณ์เปรียบเทียบ กับค่าในช่องนั้นๆ ที่ตรงกับโอเปอเรเตอร์
percent <=, >, between

แสดงผล TRUE หากค่าในช่อง percent เปรียบเทียบกับค่าที่กำหนดแบบสุ่มที่ตรงกับโอเปอเรเตอร์

คุณสามารถระบุ Seed เพื่อเลือกกลุ่มอินสแตนซ์ของแอปที่กำหนดแบบสุ่มใหม่สำหรับช่วงเปอร์เซ็นต์ที่กำหนดตามที่อธิบายไว้ใน ประเภทกฎเงื่อนไข

โดยระบุชื่อ Seed ก่อนโอเปอเรเตอร์ ดังตัวอย่างต่อไปนี้

percent('keyName') <= 10

หากต้องการกำหนดค่าช่วงที่เฉพาะเจาะจง คุณสามารถใช้โอเปอเรเตอร์ between ได้ วิธีกำหนดค่าช่วงผู้ใช้ระหว่าง 20 ถึง 60 โดยใช้ Seed เริ่มต้น:

percent between 20 and 60

วิธีกำหนดค่าช่วงผู้ใช้ระหว่าง 60 ถึง 80 โดยใช้ Seed ที่กำหนดเอง

percent('seedName') between 60 and 80