מימוש לוח שנה ומתכנן באפליקציית מובייל

מתכנן נשבר במעברי זמן, באירועים חוזרים ובסנכרון — והמשתמשים מאבדים אמון במוצר. אנו מתכננים ומממשים לוח שנה לאפליקציית מובייל מקצה לקצה: מודל אירועים, תזכורות, החלפה עם מערכות חיצוניות. מפחיתים עבודה ידנית של התמיכה ומספר פניות בגלל אירועים שאבדו או שוכפלו.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
מימוש לוח שנה ומתכנן באפליקציית מובייל
בינוני
~1-2 שבועות

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

לוח השנה של אפליקציית המובייל: היכן נשברת לוגיקת הזמן

לוח השנה של אפליקציית המובייל נשבר לא ברינדור של הרשת, אלא בלוגיקת האירועים: אחסון זמן, חזרתיות וסנכרון — שלוש שכבות בלתי תלויות, וכל תקלה באחת מהן נראית למשתמש כ„האפליקציה משקרת".

הקלאסיקה — אחסון זמן מקומי במקום נקודת זמן מוחלטת. המכשיר עובר לאזור זמן אחר או לשעון קיץ, ופגישה שנשמרה כ„10:00 לפי המקום" הופכת ל„11:00" או נעה ביממה. אותן שגיאות בבחירת תאריך יוצרות היסט בגבול חודש ושנה, כאשר החישוב נעשה לפי תאריך מקומי בלי נרמול.

זה מטופל בהפרדה בין שני ישויות: נקודת ההתחלה — תמיד בבסיס אחיד, והתצוגה וכללי התזכורות מחושבים לפי אזור הזמן של המכשיר בזמן ההצגה.

תקלות באירועים חוזרים — סוג נפרד. הסדרה מוגדרת בכלל, אבל אם חריגים והעברות של מופע אחד נשמרים לא כרשומות נפרדות, אלא כעריכות של תבנית, הפגישה המבוטלת הראשונה מוחקת את כל הסדרה. תרחיש אחר — היעדר מזהה מופע: בסנכרון חוזר השרת מחשיב את הפגישה לחדשה, והאירועים מוכפלים. מפתח דטרמיניסטי לאירוע ושכבת חריגים מפורשת מסירים את שני המקרים.

חוסר סנכרון של לוח הזמנים גדל בדרך כלל מתור לא מקוון. עריכות מצטברות במכשיר, וביציאה לרשת מיושמות בסדר לא נכון — הרשומה האחרונה מנצחת, וחלק מהשינויים אובדים בשקט. פתרון קונפליקטים לפי זמן השרת עם יומן עריכות והמרת זמן תגובת המכשיר بشكل תקין הופך את הרשימה לזהה בכל הטלפונים.

המשמעות של הפגמים האלה נראית בתמיכה: תלונות כמו „יש לי לוח זמנים אחר" לא משוחזרות בלי קישור לאזור זמן ולמצב התור. נפרט כיצד נסגרת כל אחת מהשכבות.

מה נותן מתזמן אמין למוצר ולתמיכה

לוגיקת אירועים אחידה בכל הפלטפורמות

מתזמן אמין נבנה סביב מקור אמת אחד: כללי חזרתיות, גבולות היום ומעברי אזורי זמן מחושבים במודל צד שרת, והאפליקציה רק מציגה את התוצאה.

לפני כן כל לקוח חישב את לוח השנה בעצמו, ורשימת האירועים האחידה לא התאימה — בטלפון הפגישה עמדה יום אחד מוקדם יותר מאשר בטאבלט, והתזכורת הגיעה באזור זמן זר.

שיעור אי-ההתאמות במערך קבלה של מעברי שעון קיץ, החלפת אזור זמן וסדרות ארוכות הצטמצם לאפס, כי כעת בודק אותם תרחיש בדיקה אחד, ולא המשתמש.

פחות פניות לתמיכה בנושא תאריכים

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

נעלם סוג שלם של כשלים כמו „אירוע קיים בטלפון ואינו קיים בטאבלט" — הוא נסגר ברמת הארכיטקטורה, ולא בהוראה לנציג. העומס על קו התמיכה הראשון יורד פי כמה: שאלות על תאריכים ותזכורות היו לרוב תוצאה של חוסר סנכרון, ולא של טעות אנוש. בירור מקרה בודד דורש שאילתה אחת להיסטוריית השינויים במקום התכתבות עם המשתמש.

מצבי עבודה של המתזמן: השוואת גישות

מצב המתזמן קובע היכן נשמר מקור האמת על האירועים: במכשיר, במערכת חיצונית או בשרת שלנו. מכך תלויים עבודה ללא רשת, פתרון קונפליקטים והיקף העבודה בהוספת תזכורות משותפות.

אפשרות מתי מתאימה מגבלות
אירועים רק במכשיר מתזמן אישי בלי מאגר משותף, חשובה עבודה ללא רשת אין גישה משותפת, העברה למכשיר חדש ידנית, תזכורות חיות כל עוד האפליקציה מותקנת
סנכרון עם מערכת חיצונית לוח השנה כבר מנוהל במערכת ארגונית, אסור לשכפל נתונים מודול מוכן כופה מודל זר של חזרות והרשאות, אזורי זמן ותפקידים יש להתאים
מודל צד שרת משלנו אירועים משותפים, תפקידים, התראות, היסטוריית שינויים זמן פיתוח ארוך יותר: מיגרציות, מיזוג גרסאות, שליחה ברקע
היברידי אירועים אישיים ואירועי עבודה יחד, נדרש לא מקוון שני מודלים זה לצד זה: כללי מיזוג וסדרי עדיפויות מתארים מראש

איך לבחור מצב לפי תרחיש המשתמש

ענו על שלוש שאלות: האם נדרשת גישה משותפת, האם המתזמן צריך לעבוד ללא רשת, מי הבעלים של החזרות. אם האירוע נוצר במערכת ארגונית והאפליקציה רק מציגה אותו — די בסנכרון. אם המשתמש עצמו יוצר אירועים ומשתף אותם — נדרש מודל צד שרת.

גבולות היישום של כל אפשרות

מצב מקומי נתקל בהתקנה מחדש של האפליקציה ובהחלפת מכשיר. סנכרון — בעיכוב של המערכת החיצונית ובסכמת ההרשאות שלה. מודל צד שרת דורש שליחה ברקע ופתרון קונפליקטים מובן. היברידי מוצדק כאשר אי אפשר לערבב בין המעגל האישי למעגל העבודה באותו מאגר.

סדר היישום: מביקורת ועד מסירה לתמיכה

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

מה עושים בביקורת ובתכנון הסכמה

  1. ביקורת לוגיקת התאריכים. אנו אוספים את כל מקומות העבודה עם זמן: תגובות השרת, תזכורות מקומיות, אירועים חוזרים, תגיות במטמון. מסמנים היכן נשמרת נקודת זמן, והיכן — תאריך ושעה מקומיים בלי היסט, והיכן הגישות האלה מעורבבות.
  2. תכנון מודל האירועים. מתארים ישויות: אירוע, סדרת חזרות, חריגה מהסדרה, משתתף, הרשאת גישה. הכלל — במאגר נשמרת נקודת זמן, ולהצגה מקומית ממירים רק בעת ההצגה על המסך.
  3. סנכרון והרשאות. קובעים מקור אמת, פתרון קונפליקטים בעת עריכה משני מכשירים, התנהגות באובדן קשר והכנסת אירועים זרים לבחירה.
  4. בדיקת תרחישי גבול. מריצים מעבר לשעון קיץ, אירוע בשעה שאינה קיימת, חזרה „היום האחרון בחודש", החלפת אזור זמן בדרך וביטול סדרה עם מופעים שכבר שונו.
  5. בדיקת עומס. בודקים כיצד מתנהגים השאילתות והתזכורות בלוח זמנים צפוף ובמספר גדול של משתתפים, היכן נוצרים עיכובים.
  6. מסירה לתמיכה. מוסרים סכמת נתונים, תיאור מודל החזרות, רשימת מקרי גבול שנבדקו והוראה לבירור תלונות על תזכורות שנעלמו או הוכפלו.

הגדרות, סכמות ותקנות שאנו מוסרים

אנו מוסרים לא רק אפליקציה עובדת, אלא גם ערכת מסמכים שלפיה הצוות שלכם יוכל לפתח את המתזמן ולטפל בפניות בלעדינו. להלן מה בדיוק נשאר בידיכם.

תיעוד לוגיקת האירועים וההרשאות

  • תצורת המתזמן: פרמטרי חזרות, כללי טיפול באירועים חופפים, התנהגות בעת החלפת אזור זמן ומעבר לשעון קיץ.
  • סכמת מודל האירועים: ישויות „אירוע", „משתתף", „תזכורת", „חריגה מהסדרה", שדות חובה ומחושבים, קשרים ביניהם.
  • סכמת הרשאות גישה: תפקידי בעל לוח השנה, משתתף וצופה, מה כל אחד יכול לקרוא ולשנות, כיצד הרשאות עוברות בירושה ללוחות שנה משותפים וחיצוניים.
  • תיאור הסנכרון: אילו מקורות דו-כיווניים, אילו לקריאה בלבד, כיצד נפתרים קונפליקטים של עריכות בו-זמניות ומה המשתמש רואה בעת אובדן קשר.

תקנון עדכון ותמיכה

  • תקנון עדכון אירועים: סדר הוצאת שינויים בכללי חזרות ותזכורות כך שרשומות שכבר נוצרו לא יאבדו ולא יוכפלו.
  • הוראות לתמיכה: עץ החלטות לפניות טיפוסיות — האירוע לא הופיע, התזכורת פעלה פעמיים, ההרשאות לא הוחלו.
  • סדר נסיגה ונקודות בקרה: איזו גרסת סכמה תואמת לגרסה הקודמת, מה לעשות בעת אי-התאמת נתונים במכשירים.

המסמכים מסודרים במאגר לצד הקוד ונבדקים לעכשוויות בכל מהדורה. את המסירה סוגרים בבירור עם הצוות שלכם — כדי שהתיעוד ישמש בפועל ולא יישמר סתם.

מקרה בוחן: סנכרון לוח שנה עם מערכות חיצוניות

הלקוח — שירות הזמנת שירותים: אפליקציית מובייל ופאנל ניהול, לוח השנה שלהם התקיים בנפרד מ-Google Calendar, שאליו מנהלים הזינו פגישות ידנית.

שיעור אי-ההתאמות הגיע ל-6% מהיקף האירועים: פגישה שהועברה נשארה במשבצת הישנה, התמיכה קיבלה כ-40 פניות „יש רשומה אבל אין בעל מקצוע", ובירור תקלה אחת ארך בממוצע 25 דקות — הלוגים של האפליקציה והמערכת החיצונית לא תאמו במזהים.

במסגרת מקרה הבוחן של יישום המתזמן העברנו את החילוף למחזור דו-כיווני קבוע עם יומן שינויים. כל אירוע קיבל מזהה יציב ותג גרסה, ולקוח המובייל — מטמון מקומי שממנו הממשק מצויר באופן מיידי, כולל ללא רשת. שינויים יוצאים בתור ומשוחזרים לאחר חידוש הקשר, ולכן חבילה שאבדה כבר לא הופכת לפגישה שאבדה.

טיפול בקונפליקטים ובאירועים חוזרים

קונפליקטים של עריכות באירועים אנו פותרים לא לפי העיקרון „מי שאחרון — צודק". עריכה מהמערכת החיצונית מושווית לפי תג גרסה: הגרסה החדשה יותר מנצחת, והמפסידה לא נעלמת — היא עוברת להיסטוריה ומוצגת למנהל כהצעה.

אירועים חוזרים נשמרים כסדרה עם רשימת חריגים והחלפות, ולא כעותקים פרוסים: העברה של פגישה אחת לא שוברת את הסדרה, והחלפת אזור זמן לא מזיזה את כל לוח הזמנים.

כעבור חודשיים אי-ההתאמות הצטמצמו מ-6% ל-0.3%, פניות בנושא לוח השנה — מ-40 ל-5 בחודש, בירור תקלה — מ-25 ל-7 דקות הודות למזהה אירוע מקצה לקצה.

„התוצאה העיקרית אינה במספרים", אומר המהנדס שלנו, „אלא בכך שאין יותר השוואה ידנית של שני לוחות שנה: אם משהו לא תואם, המערכת עצמה מראה היכן ומתי".

מודול תכנון מוכן או מודל אירועים משלנו?

מודול מוכן סוגר את המקרה הבסיסי: אירוע — נקודה בזמן עם שם, משתתפים ותזכורת. הוא מספק תצוגת חודש ושבוע, כללי חזרה פשוטים, התראות וקריאה של לוח השנה המערכתי של המכשיר. ברגע שמופיעה לוגיקה תחומית — משמרות, חלונות הזמנה, תלויות בין משימות — מתחיל לעקוף את המגבלות שלו.

את גבולות היישום קובע סימן אחד: מי הבעלים של מודל האירוע. אם לוח הזמנים מתואר בזוג „התחלה — סיום" ובסוג רשומה אחד, המודול מחזיר את ההשקעה מהר — פחות קוד, התנהגות צפויה בעת החלפת אזור זמן ומעבר לשעון קיץ.

אם סוג האירוע קובע את הפעולות הזמינות ואת משך הזמן המותר, נדרש מודל משלנו, והמודול נשאר שכבת רינדור.

המגבלה העיקרית — סוגי אירועים אינם ניתנים להרחבה. מאפיינים מיותרים נדחסים לשדה הערות אחד, והסינון לפיהם הופך לשליפה ידנית לפי טקסט. שכבת אירועים משלנו מגדירה סוג, סט שדות וכללים לשילובם: לוח השנה נשאר ממשק, ומקור האמת הופך למודל שלכם, ולא לרכיב.

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

הבחירה נעשית לפי מספר הישויות, ולא לפי טעם. אם די בשדות הסטנדרטיים ובכלל חזרה אחד — לוקחים מודול מוכן. אם יש יותר משני סוגים או שהכללים מתנגשים זה בזה — מודל אירועים משלנו מפחית את עומס התמיכה. בהמשך נפרט כיצד זה מתאים ללוח זמנים קונקרטי.

שאלות טכניות נפוצות בנוגע למימוש

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

איך אירועים שורדים החלפת אזור זמן?

נקודת הזמן נשמרת ב-UTC, וההיסט מיושם רק בתצוגה — בטיסה הרשת נבנית מחדש לפי אזור הזמן של המכשיר, ולא נעה בכמה שעות. מסד אזורי הזמן מתעדכן בנפרד מקוד האפליקציה, ולכן שינוי בכללי המעבר לשעון קיץ לא דורש הוצאת גרסה חדשה.

איך בנויים אירועים חוזרים?

הסדרה נשמרת ככלל, ולא כסט תאריכים: „כל יום שלישי שני", „יום העבודה האחרון בחודש". חריגים והעברות של מופע אחד נשמרים כרשומות נפרדות — עריכה של יום אחד לא משכתבת את כל הסדרה, ולכללים ארוכים מוגדר גבול פריסה.

מה קורה בעת עריכה בו-זמנית משני מכשירים?

לאירוע יש גרסה, ובמקרה של אי-התאמה השרת ממזג שינויים לפי שדות, ולא מוחק נתונים עם הבקשה האחרונה. המכשיר מקבל גרסה מעודכנת לאחר הסנכרון, ולכן עריכת הכותרת בטלפון לא מבטלת העברת זמן בטאבלט.

האם אפשר לשנות את לוגיקת המתזמן בלי להוציא גרסה לחנויות?

חלק מההתנהגות — מגבלות על אורך הסדרה, פורמטים של תזכורות, סט הכללים הזמינים — מועבר לתצורת צד שרת. שינויים כאלה מגיעים למשתמשים מיד, ובאפליקציה נשארת רק הלוגיקה שחייבת לעבוד לא מקוון.

איך בודקים את לוח השנה לפני הוצאה?

בהרצה נפרדת על תרחישי קצה: אירוע ב-23:59 עם מעבר דרך חצות, סדרה בלי תאריך סיום, 29 בפברואר, אזור זמן שמשתנה בחזרה פעילה, קידום ונסיגה של שעון המכשיר.

רשימת בדיקה לקבלת לוח שנה: „תרחישי גבול שוברים את המתזמן לעתים קרובות יותר מהזרימה העיקרית, ולכן כל מהדורה נבדקת לפיהם בנפרד, לפני בדיקת התרחישים הרגילים".

נדון במשימה ונחזור עם הערכה ותוכנית

לפני שנקבע לוחות זמנים, אנו מקבעים את גבולות המשימה: מכך תלויים גם ההערכה, וגם אילו תרחישים של לוח השנה באפליקציית המובייל נכנסים לגרסה הראשונה, ואילו — לשנייה. להלן מה אנו מבררים אתכם בבירור ומה מצרפים לתוכנית העבודה ליישום.

  • תרחישי שימוש: לוח זמנים אישי, לוח שנה צוותי, הזמנת משאבים — אילו חובה להשיק, ואילו אפשר לדחות.
  • תפקידים והרשאות: מי יוצר אירועים, מי רואה לוח זמנים של אחרים, האם נדרש אישור השתתפות והתראות על שינויים.
  • מערכות חיצוניות: עם אילו שירותים נדרש סנכרון, באיזה כיוון מתבצע החילוף, כיצד פותרים קונפליקט רשומות וניתוק קשר.
  • היקף לוח הזמנים: כמה אירועים יש למשתמש, האם נדרשות רשומות חוזרות, כמה אזורי זמן, משאבים מקושרים.
  • עבודה ללא רשת ותזכורות: כיצד האפליקציה מתנהגת לא מקוון, מה היא מסנכרנת בחזרת הקשר, אילו התראות קריטיות למשתמש.
  • לוחות זמנים ומגבלות: התאריך שעד אליו נדרשת ההשקה, קישור למהדורות, עומס צפוי בתקופות שיא.
  • מגבלות בצד שלכם: גישות וסביבות בדיקה, דרישות לאחסון נתונים, מוכנות חלק השרת לחילוף.

בתגובה תקבלו תוכנית עבודה ליישום: הרכב השלבים, הערכת לוחות זמנים לכל אחד, תחומי אחריות של הצוות שלנו ושל הצד שלכם, סדר קבלה עם קריטריוני מוכנות. תארו את המשימה — נחזור עם הערכה ותוכנית.