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

หน้านี้มีข้อมูลอ้างอิงสำหรับการสร้างนิพจน์แบบมีเงื่อนไขโดยใช้ Remote ConfigAPI แบ็กเอนด์หรือคอนโซล Firebase ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าและการใช้แบ็กเอนด์ 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 พร็อพเพอร์ตี้ผู้ใช้
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 โดยใช้ค่าเริ่มต้น

percent between 20 and 60

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

percent('seedName') between 60 and 80