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

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

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

REST API ของ Remote Config รองรับองค์ประกอบเดียวกันกับที่คุณใช้สร้างเงื่อนไขเมื่อกำหนดค่า 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พร็อพเพอร์ตี้ผู้ใช้
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.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.notContains([123, 456]) จะแสดงผลเป็น TRUE หากบิลด์แอปจริงคือ 123 หรือ 492 แต่จะแสดงผลเป็น FALSE หากบิลด์แอปจริงคือ 999

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

แสดงผล TRUE หากบิลด์แอปจริงตรงกับค่าเป้าหมายใดก็ตามในรายการทุกประการ

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

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

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

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

หมายเหตุ: โอเปอเรเตอร์การเปรียบเทียบตัวเลขรองรับเฉพาะเวอร์ชันเชิงความหมายที่เป็นตัวเลข (เช่น 1.2.3) และไม่รองรับคำต่อท้ายหรือขีดกลางของรุ่นทดลอง (เช่น -beta หรือ -rc) สำหรับสตริงเวอร์ชันที่มีคำต่อท้ายหรือขีดกลางที่ไม่ใช่ตัวเลข ให้ใช้โอเปอเรเตอร์สตริง (เช่น .matches หรือ .contains) แทน

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

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

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

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

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 โดยใช้ค่าเริ่มต้น

percent between 20 and 60

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

percent('seedName') between 60 and 80