Table of Contents
הקדמה: למה דברים ראשונים בפיתוח ניידות מודרני
משתמשים ניידים מצפים שאפליקציות יעבדו באופן מיידי ואמין, ללא קשר לתנאי הרשת.בחלקים רבים בעולם, קישוריות היא לסירוגין, יקרה או בלתי זמינה לחלוטין.אפילו בסביבה מחוברת היטב, משתמשים נתקלים לעתים קרובות באזורים מתים (מעללים, מנהרות, אזורים כפריים) או לרוץ למגבלות נתונים. AnFLT:0offline-FirstFLT) מתייחס לנקודות שביעות רצון אלה על ידי הפיכת מקור הנתונים הראשוניים של אמת, ולא רק שיפור גישה זו.
עבור מפתחים לבנות עם CMS מודרני ללא ראש כמו CMS:0irFLT: 1DirectuscioFLT:2FLT 3:, יצירת אפליקציה ניידת לא מקוונת דורש תכנון זהיר סביב אחסון נתונים, סינכרוניזציה ופתרון סכסוכים. Directus מספק שכבת API גמישה (REST ו-GphQL), יכולות בזמן אמת, ואינטרנט מעורר כי להפוך אותו לזמין עבור יישומים מתקדמים, באמצעות רכיבי מפתח לא מקוון, כדי ליצור את השלבים הראשונים, כדי ליצור את השלבים הראשונים שלך, כדי ליצור את השלבים הראשונים דרך רכיבי הליבה שלך, דרך רכיבי הליבה שלך, ו-ה.
הבנה של אדריכלות ראשונה: עקרונות הליבה
Offline- First הוא יותר מאשר רק לגרד כמה תגובות JSON.It הוא פילוסופיה עיצוב שבו המכשיר המקומי הופך להיות משתתף מלא במחזור החיים ניהול נתונים.האדריכלות בנויה על שלושה עמודי יסוד:
- (FLT:0) נתונים ראשונים מקומיים-First Data Persistence:03: ההרחבה של 1) וכל האינטראקציות של המשתמשים ושינויים בנתונים מתרחשים נגד מסד נתונים מקומי (למשל, SQLite, Realm, או IndexedDB).
- (FLT:0) Background SynSyncization:FLT:1 בכל פעם שקישוריות זמינה, האפליקציה מסנכרנת שינויים מקומיים לשרת ומושכת עדכונים מרחוק בחזרה למטה.סנכרון זה חייב להיות אמין, יעיל ולא חוסם למשתמש.
- (FLT:0) אסטרטגיית החלטות החלטה: FLT:1 כאשר אותו נתונים משתנים על מכשירים מרובים או בזמן לא מקוון, סכסוכים מתעוררים. אסטרטגיה ברורה (למשל, אחרון-writes, אינטגרציה ידנית, או CRDT-based) חייב להיות במקום כדי למנוע אובדן נתונים.
Directus מתאים באופן טבעי למודל זה. API תומך בשאילתות דלה (למשל, FLT:0), ומאפשר ללקוח להביא רק את מה השתנה מאז הסינכרון האחרון בשילוב עם webhooks ואת הפעילות המובנה (revisions), מפתחים יכולים לבנות לולאות סינכרון יעילות ללא סקרן של כל הנתונים.
אתגרים ייחודיים ל-Offline-First Mobile Apps
לפני צלילה ליישום, חשוב להכיר במכשולים משותפים.אפליקציות Offline-First מציגות מורכבות כי יישומים רבים של השרתים-reliant לעולם לא נתקלים:
- (FLT:0) אי-יכולת: פעולות Offline 1 חייבות להיות אידיאולוגיות.הסבר מחדש את אותו פעולה של יצירה או עדכון לא צריך לגרום לרשומות כפולות או תופעות לוואי בלתי צפויות.
- (FLT:0)Optimistic UI & רולבק:FLT 1 כאשר משתמש מבצע פעולה לא מקוון, UI צריך מיד לשקף את השינוי (עדכון אופטי) אם הניכרן מאוחר יותר נכשל או סכסוכים, האפליקציה חייבת להתגלגל בחסד בחזרה את UI ולעדכן את המשתמש.
- (FLT:0) אינטגריטי נתונים עם יחסים: FIRLT:1 [הרשומות המותונות על ידי פיזור מידע כי התייחסות לרשומות אחרות (למשל, מפתחות זרים) חייב להתמודד עם מקרים שבהם הרקורד לא הסתכרן עדיין.
- (FLT:0Battery & מודעות רשת: ההרחבה:ראה LT:1 ) סינכרון רקע צריך לכבד את מצב Doze (אנדרואיד) ו מצבי כוח נמוך (iOS) ניסיונות מסונכרנים מופרזים יכולים לנקז סוללות ומשתמשי פרכוס.
- (FLT:0) סודיות ואמפ; Authentication:03: 1 Offline Identity אסימונים חייב להיות מאוחסן בבטחה (Keychain, הצפנה משותפת העדפות) השכבה צריכה להבטיח כי יפוג או ביטול אסימונים למנוע הסתננות נתונים.
יתרונות מרכזיים של אפליקציה ראשונה עם Directus
בניית אפליקציה ניידת ללא קורת גג ראשונה כוללת מספר שכבות. להלן הם המרכיבים החיוניים וכיצד Directus תומך בכל אחד מהם.
מנוע אחסון מקומי
מסד הנתונים המקומי הוא הלב של האפליקציה.אתה צריך מנוע המסוגל לקרוא ביצועים גבוהים וכותב, ובאופן אידיאלי אחד שתומך במודל נתונים יחסי.הבחירות פופולריות כוללות:
- (במילים כמו ממלכה או חדר): ההרחבה הטובה ביותר לפלטפורמות ניידות; תומכת בשאילתות מורכבות, באינדקסים ובעסקאות ACID.
- (FLT:0)IndexedDB (עבור PWAs או WebView מבוסס יישומים): ההרחבה 1 נבנתה לדפדפנים מודרניים, אך יכולות חיפוש מוגבלות בהשוואה ל-SQLite.
- (FLT:0)Firebase Firehouse (המשמדה הדליקה): 1 מספק תמיכה לא מקוונת מהקופסא, אך יש לשקול את המחיר של הספק.
עם Directus, הschema המקומית צריכה להראות את האוספים של Directus שאתה מתכוון לסנכרן.
מנוע סינכרוני
מנוע הסינכרון מנהל את זרימת הנתונים הדו-כי-אישית.הוא חייב לטפל:
- (ב) ,0) , הורידו את כל הנתונים כאשר האפליקציה מותקנת לראשונה (או לאחר איפוס) השתמשו ב-Directus העריך נקודות קצה עם FLT:4 ו-FLT:5 כדי לטפל בנתונים גדולים.
- (ב) ⁇ (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) [ה]:0] שינויים מקומיים: [ה] שלח את הרשומות שנוצרו באופן מקומי, מעודכנים או נמחקו ל-Directus in אצווה. השתמש ב- REST API של פעולות חד-צדדיות או גדולות.
- (FLT:0)Conflict Detection & החלטה:03FLT:1 כאשר השרת חוזר לעימות (HTTP 409) או גרסה שונה ממה שמצופה, המנוע חייב לפתור באופן אוטומטי (למשל, אחרון-הוק-wins) או להציג את המשתמש עם אפשרויות.
Directus מספק חזק (FLT:0) ,11003 (החלורציה) ותיקון נקודות קצה:2IRFLT 3: 3 שניתן למנף כדי לעקוב אחר שינויים.
אסטרטגיות לפתרון סכסוכים
קונפליקטים מתרחשים כאשר אותו שיא משתנה במקביל בשרת ובמכשיר מקומי, או על שני מכשירים מקומיים לפני הסינכרון.
- (ב) ,0 , אחרון-וטקס-ניצחונות (LWWWir): 1:1 פעמים האחרונות הדגימה (המבוסס על FLT:8) מנצחת פשוט אך יכול לנסח מחדש את כוונת המשתמש.
- (FLT:0) First-Write-Wins:FreaLT:1) הגרסה הראשונה שמגיעה לשרת נמשכת; ניסיונות הסינכרון הבאים חייבים להתמזג או לדחות.
- (FLT:0) מרג'ה: 1FLT) למשתמש מוצג עם שתי הגרסאות, וחייב לבחור או לשלב אותן.
- (FLT:0)CRDT (סוגי נתונים ללא תשלום): FLT:1 מבנים מתמטיים מתקדמים המבטיחים עקביות בסופו של דבר ללא קונפליקטים.Overkill for Most CMS-oriented Applications, אך אפשריים עם ספריות כמו Yjs או automerge.
עבור רוב היישומים מבוססי Directus, LWW בשילוב עם זרם קורא ברור פועל היטב.חנותFLT:9 מן השרת המקומי ולהשוות אותו במהלך הסינכרון.אם הגרסה המקומית היא חדשה יותר, לדחוף אותו; אם גרסת השרת היא חדשה יותר, למשוך אותה ולטפל בהרחבה.
ניהול רשת
האפליקציה שלך חייבת לזהות שינויים בקישוריות בזמן אמת, להשתמש בממשק API כמו FLT:10 (PWA) או ספריות ילידיות (FLT:11 for React Native,FLT:12 for Flutter).
- (ב) ,0) ,ללכת: (ב) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (FLT:0)Coming online:FLT:1 , Queue aSync Cycle, reBuild WebSocket Connection if Used, and Keep Any new data from Directus.
- (FLT:0) במהלך הסינכרון:ראה פרקי התקדמות או סמלים עדינים, נמנעים מחסימת ממשק המשתמש אלא אם כן קונפליקט דורש תשומת לב.
Directus תומך גם ב- (FLT:0) WebSocketsFOVALT:1 למנויים בזמן אמת (באמצעות FLT:13 או FLT:14), נקודת קצה עם שדרוגים של Websocket) אתה יכול להירשם לשינויים באוספים או פריטים ספציפיים ולעדכן את השפם המקומי באופן אוטומטי.
יישום Offline Capabilities: A Step-by- Guide
להלן זרימת עבודה מעשית להוספת התנהגות לא מקוונת לאפליקציית מובייל המגובה על ידי Directus.We'll take a React Native app באמצעות SQLite באמצעות FLT:0.10.10.1 WatermelonDBFLT:203FLT 3:2 (מסד נתונים בעל ביצועים גבוהים של SQLite-based reactive Reactive), אך העקרונות מתרגמים פלוטר, Swift,UI או PWAs.
שלב 1: עיצוב מודל הנתונים שלך
ממפה את אוספים Directus לטבלאות מסד נתונים מקומיות.כולל שדות metadata נוספים לשליטה מסנכרונית:
- (ב) [ב]: [ה], [ה], [ה], [ה], [ה], [ה],]
- (FLT:16)
- (FLT:17) (UUID נוצר על המכשיר)
עבור כל שיא ב Directus, לשמור על שדה 18FLT כמפתח הראשי. עבור רשומות שנוצרו לא מקוון חדש, ליצור UUID מקומית ולאחר מכן למפות אותו מזהה השרת לאחר הסינכרון.
שלב 2: יישום Sync
כאשר האפליקציות של המשתמש מותקנות או האפליקציה מותקנות טריות, להביא את כל הנתונים הרלוונטיים מ-Directus. השתמש ב-FLT:19 נקודות קצה או נספח GET בקשות. הכנס כל שיא למסד הנתונים המקומי של SQLite, הגדרתם של (FLT:20 ו-FLT:21 ל-Samtamp הנוכחי השרת.If the Dataset is Large (thouss of record), התגובות ב-FLT:20 ו-FLT:21 כדי למנוע את ה- UI להוסיף את העסקאות הנוכחי.
שלב 3: כתיבה מקומית יעילה עם אופטימיסטים
כאשר משתמש יוצר, עדכונים או נמחק תיעוד, לשנות מיד את מסד הנתונים המקומי ולעדכן את דגל UI. SetFLT:22 ל-FLT:23 או FLT:24 (עבור למחוקים, מחיקה קלה מקומית על ידי הוספת דגל FLT:25 (או להעביר את השיא לשולחן קברידן נפרד).
שלב 4: בנו את מנוע ה-Sync
יצירת שירות סינכרון ייעודי שפועל באופן זמני (למשל, כל 3 דקות) ומובע על ידי שינויים במצב הרשת.מנוע הסינכרון מבצע שלושה פעולות בסדר זה:
- (ב) [ה]ה]: [ה], [ה], [ה], [ה]], [ה],] כל [ה], [ה],] [ה]]]], [ה]], [ה], [ה]], [ה'ה']'ה'[ה']']'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
- (ב) [ה]הרבי [ה]: [ה] [ה]] [ה] [ה]] [ה'] [ה']'[ה]']'[ה']'[ה']']'[ה']'''''ו'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
- (FLT:0) ההונדלים: FLT:1 Directus Soft-deletes (או etes קשיחים) גם צריך מעקב.או ליישם מנגנון אבן קבר או לשאול את יומן הפעילות עבור פעולות מאז הסינכרון האחרון. כאשר רישום נמחק בשרת ולא משתנה באופן מקומי, להסיר אותו ממסד הנתונים המקומי.
שלב 5: יד או I Feedback עבור מצב סנכרון
משתמשים צריכים לדעת תמיד אם הנתונים שלהם נשמרים ומסנכרנים. השתמש באינדיקטורים עדינים:
- בדיקת ירוק ליד פריטים מסונכרנים.
- סמל מסתובב ליד ספיןסוף פריטים מסנכרנים.
- סימן קריאה אדום אם סינכרון נכשל לאחר ניסיונות מרובים.
- דגל עולמי בראש: "Offline - שינויים יסכרו כאשר הם מחוברים."
להימנע מהצגת רמקולים שגיאה עבור תקלות מסנכרנים טרנספורמטיביות.להפוך שגיאות באופן אוטומטי.רק אזהר למשתמש אם נדרשת החלטה של קונפליקט ידני (למשל, שני משתמשים ערכו אותו שדה).
שלב 6: אופטימיזציה לביצועים ולסוללות
- (ב) ויקרא: ויקרא: ויקרא: ויקרא י"א): "ה' ויקרא ויקרא ויקרא ויקרא ויקרא יט:5 (ב':5 ויקרא י"ד): "ה' ויקרא יט' ויקרא יט' ויקרא יט ויקרא יט יט"ד ויקרא יט ויקרא יט"ד .
- (ב) ,0) תדירות הסינכרון שלThrottle:FLT:1, על חיבורים סלולריים, להגדיל את המרווח (למשל, 5 דקות) ב-Wi-Fi, לסנכרן לעתים קרובות יותר.
- (FLT:0)Use WebSocket מנויים: ההרחבה 1 במקום סקרים לשינויים בשרת, להירשם לשינויים באמצעות Directus WebSocket.זה מבטיח עדכונים מיידיים ולהפחית את הסוללה מבקשות HTTP חוזרות.
- (FLT:0)Lazy לטעון נכסים גדולים:FLT:1ig תמונות וקבצים לא צריך להיות מכווץ באופן מקומי על ידי ברירת מחדל אלא אם כן נדרש במפורש.
כלים ומסגרות לOffline-First עם Directus
הכלים הבאים משלימים את Directus בעת בניית יישומים ניידים לא מקוון:
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (FLT:0) ריאלם (MongoDB Mobile)BuildFLT:1) - מסד נתונים מוכוון אובייקטים, קצה קצה-אופטימי; תומך ב- Live Queries ו-Sנכרון אוטומטי באמצעות MongoDB Realm (ששילמו) ניתן להשתמש בו גם עם סינכרון API מותאם אישית באמצעות Directus.
- (FLT:0)SQLDelight (Flutter / Kotlin Multiplatform) FLT:1 - יוצר קודלין בטוח מסוג (ופלטפורמות אחרות) מהצהרות SQL; עובד היטב עם נתונים ישירות.
- (FLT:0)Directus SDKirFLT:1 - סוג רשמי של PC מסייע עם הקלדה ושיחות API; ניתן להרחיב עם לוגיקה תור לא מקוון.
- (FLT:0)Workbox (PWAs)FLT:1 - הספרייה לאסטרטגיות טרום-הכיפוף וריצה; משלב עם שירות Worker כדי לטמון תגובות API.
Best Practices for a Reliable Offline-First Experience
בהתבסס על פריסות בעולם האמיתי, יש לזכור את העקרונות האלה:
- (FLT:0) לעצב את מודל הנתונים שלך עם לא מקוון בחשבון מיום 1.10.10.10.10.10.10.התמיכה במצב לא מקוון מאוחר יותר היא הרבה יותר קשה מאשר לבנות אותו מההתחלה. השתמש ב-UUUIDs עבור מפתחות ראשוניים בכל פעם שניתן למנוע התנגשות מזהה במהלך יצירת לא מקוונת.
- (FLT:0) תמיד לאחסן את זמנם של שרת.FreaLT:1 ; השדה LT:33 ב Directus הוא החבר הטוב ביותר שלך.לעולם אל תסמכו על זמן המכשיר בלבד; לפעמים מסנכרנים יכולים להיות מחוץ לסנכרון על פני מכשירים.
- (ב) [ה]התקשורת החנפה [ב] לא מורידה את כל התמונות באופן לא מקוון.במקום, מטמון רק את מה שהמשתמש ראה (באמצעות ה- CDN Proxy) ומספק תמונות של בעלי מקום עד לסינכרון התוכן.
- (FLT:0 תרחישים לא מקוון ביסודיות.FLT:1lor) להשתמש בכלים כמו צ'ארלס Proxy או מצב המטוס של המכשיר כדי לדמות אובדן קישוריות.בדוק כי האפליקציה אינה מתרסקת, כי עדכוני UI נכון, וכי סינכרון חוזר כאשר חזרה באינטרנט.
- (FLT:0) הפעלת מנגנון אחסון חזק.שערומ"ד:1 שגיאות סנכרון הם לעתים קרובות שקטים. LogSync ניסיונות, סכסוכים, וכישלונות לשירות מרוחק (למשל, Sentry, LogRocket) כך שתוכל לפענח בעיות בייצור.
- (FLT:0) לספק כפתור סנכרון ידני.FreaLT:1 גם עם סינכרון אוטומטי, לתת למשתמשים את היכולת לכפות מסנכרן (למשל, למשוך אל-refresh) זה בונה אמון ומאפשר להם לפתור סכסוכים על הביקוש.
- (FLT:0) מחנכים משתמשים על יכולות לא מקוון.FreaLT:1 כאשר האפליקציה הולכת לא מקוון, להראות הודעה ידידותית: "אתה לא מקוון, כל השינויים יישמרו ונכרזורו כאשר אתה מתחבר מחדש."
אופטימיזציה ישירים-Specific עבור Offline Sync
Directus מציע מספר תכונות שיכולות לייעל התפתחות לא מקוונת:
- (FLT:0) התחדשות ההיסטוריה: ההרחבה 1:1 , Enable "Revisions" בהגדרות מודל הנתונים שלך.זה מאפשר לך לאחזר גרסאות קודמות של פריט וליישם מנגנון מתגלגל אם מסנכרן מציג נתונים רעים.
- (ב) ,0) ,(ה-Custom Endpoints & Hooksrov:FLT: 1:1 צור נקודת מוצא אישית (למשל, FLT:34 ו-FLT:35) אשר מייצרת מספר פעולות לבקשה אחת, צמצום עיגולים.
- (FLT:0Webhooks:FLT:1 כאשר רשומה מעודכנת בשרת (על ידי מכשיר אחר, לוח הניהול או אוטומציה), Webhook יכול להודיע שירות ההודעות דחיפה של האפליקציה הניידת שלך כדי לעורר סינכרון רקע.זה שומר את האפליקציה מעודכן ללא סקר.
- (FLT:0)Fiel Permissions: ⁇ FLT:1 , Directus הרשאות חלות ברמת השדה.מנוע הסינכרון שלך חייב לכבד את הרשאות האלה.כאשר מסנכרן, רק לדחוף שדות שהמשתמש יש גישה אליו, ורק למשוך שדות שהם קוראים גישה אליהם.
מסקנה
בניית אפליקציה ניידת לא מקוונת עם Directus אינה משימה טריוויאלית, אבל התגמול בחוויית המשתמש ואמינות הוא משמעותי.על ידי תכנון עבור התמדה בנתונים מקומיים, יישום מנוע סנכרון חזק, ומינוף התכונות המובנות של Directus כמו מסננים דלה, WebSockets, והיסטוריה, אתה יכול ליצור יישומים שעובדים ללא פגע בתנאים טובים ורעים של רשת דומה.
התחל קטן: לאפשר קריאה לא מקוונת ראשון, ולאחר מכן להוסיף בהדרגה יכולות לא מקוון ליצור / עדכניות.כל אחד מההתריעה יביא אותך קרוב יותר אפליקציה גמישה לחלוטין.זכור כי פתרון סכסוכים ואמון המשתמש הם החלקים הקשים ביותר לקבל את הזכות - זמן השקעה בבדיקות ושיקום ההיגיון הסינכרון שלך.עם בסיס מוצק, אפליקציית מובייל ה- First Directus שלך תהיה כלי שמשתמשים יכולים לסמוך עליו בכל מקום, בכל עת.