מסמך עזר של ביטוי מותנה של הגדרת תצורה מרחוק

בדף הזה מופיע מידע על בניית ביטויים של תנאים באמצעות ממשקי API לקצה העורפי של Remote Config או מסוף Firebase. מידע נוסף על הגדרה ושימוש בממשקי ה-API לקצה העורפי זמין במאמר שינוי הגדרת התצורה מרחוק באופן פרוגרמטי.

רכיבים שמשמשים ליצירת תנאים

ב-API בארכיטקטורת REST של Remote Config יש תמיכה באותם רכיבים שבהם אפשר להשתמש כדי ליצור תנאים כשמגדירים את Remote Config באמצעות מסוף Firebase:

רכיב תיאור
&&

משמש ליצירת "וגם" לוגי של רכיבים אם משתמשים ביותר מרכיב אחד לתנאי. אם משתמשים ברכיב בתחביר REST בלי && , הרכיב הזה נחשב לתנאי.

הערה: צריך להוסיף רווח לפני ואחרי סימני האמפרסנד. לדוגמה: element1 && element2.

app.build

הפונקציה מחזירה את הערך TRUE או FALSE על סמך הערך של מספר ה-build של האפליקציה.

הערה: התכונה זמינה רק במכשירי אפל ו-Android. ב-Apple, משתמשים בערך של CFBundleVersion וב-Android, משתמשים בערך של versionCode.

app.version

הפונקציה מחזירה את הערך TRUE או FALSE על סמך הערך של מספר הגרסה של האפליקציה.

הערה: במכשירי Android משתמשים בערך של versionName, ובמכשירי אפל משתמשים בערך של CFBundleShortVersionString.

app.id רכיב שמבוסס על מזהה האפליקציה ב-Firebase
app.audiences רכיב שמוערך כ-TRUE או כ-FALSE על סמך הנוכחות או ההיעדרות של המשתמש בקהל אחד או יותר ב-Firebase Analytics.
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 (לדוגמה, IL או US). התוצאה היא 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%).

תנאי עם רכיב אחד מכיל שלושה שדות:

  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 אם הקהל בפועל תואם לפחות לשם קהל אחד ברשימה.
לדוגמה:

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

הפונקציה מחזירה את הערך TRUE אם הקהל בפועל לא תואם לפחות לשם אחד של קהל ברשימה.

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 אם ה-build של האפליקציה בפועל תואם מספרית לערך שצוין באופן שתואם לאופרטור.

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

הפונקציה מחזירה את הערך TRUE אם אחד מערכי היעד הוא מחרוזת משנה של גרסת ה-build של האפליקציה בפועל. לדוגמה, "a" ו-"bc" הן מחרוזות משנה של "abc".

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

הפונקציה מחזירה את הערך TRUE אם אף אחד מערכי היעד הוא לא מחרוזת משנה של גרסת ה-build של האפליקציה בפועל. לדוגמה, הפונקציה app.build.notContains([123, 456]) מחזירה את הערך TRUE אם גרסת ה-build של האפליקציה היא 123 או 492, אבל מחזירה את הערך FALSE אם גרסת ה-build של האפליקציה היא 999.

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

הפונקציה מחזירה את הערך TRUE אם גרסת ה-build של האפליקציה בפועל תואמת בדיוק לאחד מערכי היעד ברשימה.

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 לפני האופרטור, כמו בדוגמה הבאה:

percent('keyName') <= 10

כדי להגדיר טווח ספציפי, אפשר להשתמש באופרטור between. כדי להגדיר טווח של משתמשים בין 20 ל-60 באמצעות ערך ברירת המחדל:

percent between 20 and 60

כדי להגדיר טווח של משתמשים בין 60 ל-80 באמצעות ערך ראשוני בהתאמה אישית:

percent('seedName') between 60 and 80