פיתוח היברידי?

UpStartering

New member
פיתוח היברידי?

שלום לכולם,

ללא קשר לעלויות, לשחרור MVP מהיר וכו', אלא שאלה טכנית נטו המתייחסת לפיתוח אפליקציה ל iOS ואנדרואיד.

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

2. במידה ומחליטים לפתח אפליקציה אחת שתעבוד גם על אנדרואיד וגם על iOS,
האם יש טכנולוגיות מומלצות?
HTML 5? PhoneGap? Cordova? Xamarin? משהו אחר?

תודה רבה.
 

פרסאוס

New member
ביצועים אם יש צורך, אבל גם נוחות

אם לצוות יותר נוח בסביבה מסוימת, אז גם זאת סיבה.
שתי סביבות שמאפשרות יצירה של אפליקציה ואז עדכון אונליין (פיצ'ר שווה מאוד באייפון, פחות באנדרואיד) הן ionic
http://ionicframework.com/docs/v2/
ו react native
https://facebook.github.io/react-native/
&nbsp
השניה פחות מתאימה כרגע לאנדרואיד, אבל עובדים על זה במרץ.
בזמן שלאנדרואיד אפליקציה מעודכנת מופיעה תוך כמה שעות בחנות,
לאייפון נדרש אישור שוב ושוב.
המסגרות הללו מאפשרות עדכון של הקוד דרך הווב, ואז מין "קמפול" דרך המנוע של האפליקציה.
החסרון הוא פחות ביצועים במידה מסויימת (תלוי כמה מיטוב עשו לזה) והגודל הראשוני של האפליקציה עלול להיות גדול יותר (יכיל את המנוע, אבל זה לא באמת משנה היום).
היתרונות, אם לא סובלים מביצועים נמוכים, הם עצומים:
1. סביבה שעברה חיסון מפני רוב הבעיות
2. כתיבה בשפה אחת, בשני המקרים הללו שפה שמתאימה לווב עם כלי בדיקה לווב
3. עדכון של שתי (ואולי יותר אם יהיה צורך)פלטפורמות, עם אפשרות לשלב גם ווב
4. אחרי התקנה ראשונית, ניתן לעדכן את הקוד במהירות וללא אישור. זה אחד הפיצ'רים הכי חזקים.
&nbsp
אני אוהב פיתוח native, אז לא התעסקתי בזה, אבל יש לי פרוייקט קטן שיהיה מושלם לבדיקה שלהן.
 

BravoMan

Active member
סתם מתוך סקרנות:

ממתי Apple מכניסה לחנות שלה תוכנות שיש להן יכולת להריץ קוד שיורד בדיעבד ולא עובר בדיקות שלה?
&nbsp
למיטב זיכרוני, ובאמת שמזמן לא התעדכנתי בתנאי שימוש שלה, זה היה אחד האיסורים הגדולים: לתוכנה אסור להוריד ספריות, סקריפטים, וכל צורה אחרת של קוד להרצה שלא נארז בקובץ המקורי שעבר את הבדיקות של Apple.
&nbsp
אני חושב שזה גם קשור לסיבה ש-Apple עד היום (וזה וודאי) לא מאפשרים מימושים זרים של תצוגת Web.
כל דפדפן ל-iOS מחויב למעשה להשתמש במנוע WebKit המובנה במכשיר, וזו הסיבה שלא ראינו כ"כ הרבה זמן Firefox ל-iOS עד שהם נשברו בסוף.
 

פרסאוס

New member
לא רק שאפל מודעים לעניין,

הם אפילו הורידו מגבלה שהייתה לדפדפן שלהם.
 

UpStartering

New member
תודה, מדוע ל פשוט HTML 5? אתר מותאם רספונסיבי שירוץ

בכל מכשיר ופלטפורמה, מדוע זה לא מספיק בד"כ?

ושאלה נוספת ברשות,
אם אני מגיע עם ניסיון ב Web ו NET., איזו פלטפורמה עדיפה עבורי לדעתך?
 

selalerer

New member
יש פיצ'רים של המכשיר שאין לך גישה אליהם מ-HTML 5.

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

BravoMan

Active member
עובדה נורמלית מול הפלטפורמה!

הבעיה העיקרית עם אפליקציות היברידיות, היא שהן לא שם ולא פה.
&nbsp
לכל פלטפורמה יש מראה משלה, וקונבנציות UI ו-UX משלה.
אין דבר יותר צורם מלראות על מכשיר Android אפליקציה שנראית ומתנהגת כאילו היא נכתבה ל-iOS, ובמקרה ההפוך האפליקציה אפילו עלולה שלא לעבור אישור.
&nbsp
וכמובן לאפליקציה כזו אין סיכוי לנצל פיצ'רים שייחודיים לפלטפורמה, אבל לא כל אפליקציה צריכה לעשות זאת.
&nbsp
בנוסף, מהירות היא לא הפקטור היחיד - יש גם את עניין צריכת הזיכרון.
רוב פלטפורמות ה-"היברידיות" לא באמת היברידיות.
PhoneGap למשל היא לא יותר ממעטפת דפדפן לאתר שנארז בתוך אפליקציה...
&nbsp
מה שאנשים רבים לא מבינים, הוא שהדפדפן הוא אחת התוכנות הכבדות ביותר שיש בכל מערכת הפעלה!
דפדפן מודרני הוא כמעת מערכת הפעלה בפני עצמו - הוא מפרש קוד, טוען ספריות, מריץ אפליקציות.
לכן, כמות הזיכרון שאפליקציה "היברידית" תצרוך בהשוואה למה שהיא עושה בפועל, תהיה גבוהה משמעותית ממה שתצרוך אפליקציית native שעושה את אותו הדבר, ולו בגלל הטעינה של ה-WebVIew.
&nbsp
ואם במקרה מנסים לדאוג לתאימות אחורה, במיוחד על Android ואורזים WebView פרטי במקום להשתמש במערכתי, הסיפור בכלל תופח לממדים לא הגיוניים.
&nbsp
למען האמת, אני חושב שכל ראיון הזה הוא ניסיון עלוב לחסוך בכסף ומפתחים, שתוצריו, עד כמה שנתקלתי בהם, בולטים בהיותם גרועים, וככל שהדבר הזה ייכחד מהעולם מהר יותר, כך ייטב לכולנו.
&nbsp
אבל אולי אני סתם משוחד
 

פרסאוס

New member
ניסית? כי אני מכיר חברה שעובדים על זה

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

BravoMan

Active member
לפתח באופן אישי - לא.

אבל עד לאחרונה עבדתי די הרבה שנים בחברה שמתמחה בפיתוח יישומים למובייל, עוד מימי Windows Mobile העליזים.
&nbsp
השתמשתי בכמה אפליקציות שפותחו עם PhoneGap ודומיו, והאיכות שלהן פשוט היית ירודה.
גם בעיצוב, גם בביצועים, וכמובן בצריכת זיכרון.
&nbsp
שקלנו בזמנו לאמץ כלי כזה או אחר, אבל די מהר הגענו למסקנה שזה בזבוז זמן וכסף - אם רוצים לתת מוצר איכותי ומקצועי ללקוח, אין תחליף ללהושיב מפתח שמתמחה בפלטפורמה ולפתח גרסאות במקביל.
&nbsp
נכון - זה עולה יותר, אבל שווה את ההוצאה, במיוחד בשוק אכזרי מוצף באפליקציות, שבו קל מאוד להידחף לחלק האחורי של החנות, וכשזה קורה, זה כאילו אתה לא קיים.
&nbsp
אני יכול לתת לך כמה דוגמאות ספציפיות לבעיות שאני לא בטוח איך אם בכלל הכלים האלה פותרים:
&nbsp
1. ניווט בתוך מסכי אפליקציה שונה בין iOS ל-Android.
ב-Android יש כפתור "אחורה" קבוע, והמשתמשים מצפים שהאפליקציה תגיב ללחיצה עליו בחזרה למסך הקודם או יציאה.
&nbsp
ב-iOS כמובן אין שום כפתור כזה, והמתכנת אחראי לשים כפתורים שיבצעו ניווט בין המסכים מה שלרוב יוצר חיווית ניווט שונה ופחות אחידה באפליקציות שונות.
&nbsp
עבור משתמש iOS כפתור "אחורה" בחלק העליון של חלון היישום הוא טבעי ביותר, עבור משתמש Android הוא דבר זר ומיותר.
&nbsp
ראיתי את זה עצל משתמשי Android שלקחו iPhone פעם ראשונה - הם פותחים משהו, ואז אינסטנקטיבית האצבע הולכת למטה לחפש כפתור לצאת מזה.
אבל הוא לא שם, וצריך לצוד איפה בממשק כן יש משהו שמאפשר לנווט לאן שרוצים.
&nbsp
בסוף מתרגלים, אבל זה לוקח זמן.
&nbsp
2. תקשורת בין יישומים ותגובת יישום לבקשות מבחוץ:
לא יודע עד כמה אתה מכיר פיתוח ל-Android, אבל תודות לשיטת ה-Manifest וה-Intent שלהם, כל אפליקציה יכולה להכריז באלו פעולות היא תומכת - דברים כמו "פתח תמונה", ואז כל אפליקציה אחרת שתנסה לבצע את הפעולה הזו בצורה סטנדרטית תופנה ע"י המערכת לאפליקציה שיודעת לעשות את הפעולה.
&nbsp
אם יש כמה, המשתמש יכול לבחור, ויכול גם לקבוע ברירת מחדל.
&nbsp
ב-iOS, הדבר נכנס רק בגרסה 8 ובצורה מאוד מוגבלת.
אם מפתח תוכנה רוצה שלמשתמש תהיה בחירה, הוא צריך לבקש את הפעולה בצורה מיוחדת, בעוד שצורה מערכתית סטנדרטית תביא אותו לאפליקציית ברירת מחדל שנקבעת ע"י יצרן המכשיר ולא מהשתמש!
&nbsp
אאל"ט, עד היום, אין אפשרות לפתוח קישורים מתוך תוכנת דוא"ל מובנית ב-iOS בדפדפן שאינו ספרי (אלא עם מעתיקים את הקישור במקום ללחוץ עליו).
&nbsp
3. שמירת קבצים.
אם היישום שלך שומר ופותח מסמכים, או קבצי משתמש מסוג כלשהו, כל ההתנהלות ב-Android ו-iOS שונה.
לא רק מבחינת "איך זה עובדת מתחת למכסה" - כי את זה הכלים יכולים להסתיר ממך בלי בעיה, אלא מבחינת יכולות המשתמש.
&nbsp
למשל, ב-iOS אין אזור אחסון משותף דרכו יישומים יכולים לשתף קבצים בלי להכיר אחד את השני.
&nbsp
4. פיתחנו כמה וכמה יישומים שעובדים עם BLE - כל מיני התקנים כמו צמידי כושר, שעונים חכמים (לא בהכרח Android Ware) ועוד גאדג'טים.
&nbsp
העבודה עם זה ב-iOS שונה מאוד מאשר ב-Android, וגם די עקומה.
והשוני מתבטא ביכולות, וכלן לא ניתן להסתיר אותו ע"י אבסטרקציה של framework.
&nbsp
5. מראה - זו נקודת התורפה הכי גדולה של האפליקציות האלה.
אולי קרה בחודשים האחרונים משהו שלא שמעתי עליו, איזה פיתוח מהפכני ואני לא מעודכן.
&nbsp
אבל, למיטב ידיעתי, לאפליקציות ההיברידיות פשוט אין יכולת לקבל מראה טבעי למערכת!
עיצוב שתואם לערכת הנושא שלה.
&nbsp
ב-iOS זה עוד חצי צרה כי כל המכשירים נראים אותו דבר אז אולי ניתן לזייף את המראה, אבל ב-Android יש הרבה ערכות נושא שהמשתמש גם יכול להחליף.
&nbsp
איך תתכוונן לזה עם HTML ו-CSS?
&nbsp
הנה בשלוף 5 דוגמאות שחלקן יוצרות בעיה אפילו לאפליקציה פשוטה שמקבלת כמה שדות ומתקשרת עם שרת.
הרי אם האפליקציה שלך נראית מכוער - כאילו היא לא במקום המכשיר, הדבר הראשון שהלקוח יחשוב זה שהיא לא מקצועית.
&nbsp
בכל אופן, אם בכל זאת יצא לך לעשות איזה פרויקט עם אחד הכלים שדיברת עליהם, אשמח לקרוא רשמים טריים.
אולי משהו השתנה, בטוח שדברים התחדשו - כלים כאלה מפותחים מהר.
אני לא שולל הפתעות, אם כי אני גם לא אופטימי.
&nbsp
בכל מקרה, בהצלחה בפרויקט!
 

פרסאוס

New member
לא ממש 5 דוגמאות

הראשונה עוברת בקושי וגם זה רק מפני שלא בדקתי את הכלי הזה לעומק (אני אבדוק כשייצא ואודיע).
לגבי השניה - ההנחה שלך שהישום מבקש לעשות שימוש בשירותי מערכת מתקדמים היא פשוט לא נכונה לחלק לא מבוטל של אפליקציות.
אני מסכים לגמרי שאם בתכנון עולים צרכים ספציפיים, צריך לעבור לפיתוח ספציפי.
שמירת קבצים - שוב אותו דבר. אם בהצגה של נתונים ותמונות - זה מתבצע עבורך (באופן מהיר יותר דרך אגב).
אם אתה מחפש משהו מורכב - אז שוב, סיפור אחר.
4 - בכלל לא קשור. זאת אפילו לא נקודה. אפיליקציות יעודיות ברור שתפותחנה על אותה פלטפורמה.
אף אחד לא העלה על דעתו שימוש לשעונים חכמים וציוד היקפי.
5. המראה הוא כפול. מצד אחד - אתה צודק לכל מערכת הפעלה שגעונות משלה.
מצד שני, לא רק שהניווט משתנה (מכיר אפליקציה מיסתורית בשם וואטסאפ?
אחורה מהודעה מנווטים באנדרואיד בדיוק כמו באייפון וזאת רק דוגמה אחת)
אלא שאחידות לאורך מכשירים היא לפי דעתי יתרון גדול מהחיסרון.
ככה גם משתמש אייפון יוכל להמליץ למשתמש אנדרואיד והפוך.
אז אולי לנו זה טריוויאלי, אבל למשתמש שלא יודע איך להפעיל אפליקציות (ויש הרבה יותר כאלו ממה שניתן לחשוב)
המלצה ממקור חיצוני זה חשוב. בעיני? יותר מאפשר כפתור ספציפי. ואני לא לבד פה. אפליקציות של חברות גדולות מממשות אחידות ברמה זו או אחרת.
 

BravoMan

Active member
כנראה לא הסברתי את עצמי טוב עניין UI ו-UX:

אחידות בין פלטפורמות שבאה על חשבון אחידות מול יישומים אחרים של פלטפורמה היא דבר רע מאוד למשתמשים!
&nbsp
כפתור ה-"אחורה" הוא רק מקרה אחד, שאולי טריוויאלי.
&nbsp
תראה, אני לא איש UX, אבל יצא לי לעבוד עם חברות שמתמחות בזה (הן לא מפתחות תוכנות, הן רק מפתחות UX ומגדירות אותו עבור מפתחי התוכנה).
&nbsp
אם תשאל מקצוען כזה, הוא יגיד לך שלממשק יש "שפה": לא שפת תכנות שבה ממשים אותו, אלא הדרך בו התוכנה מדבר עם המשתמש.
&nbsp
בד"כ, השפה הזו ייחודית לפלטפורמה, ומי שמשתמש בפלטפורמה זמן מה מתרגל לשפה המסוימת. כתוצאה מזה, גם כשהוא נתקל ביישום חדש, אם היישום מדבר באותה שפה הוא ימצא את הפעולות העיקריות בו באופן כמעת אינסטנקטיבי, בלי להכיר את היישום מראש, כי הן יהיו במקום מוכר.
&nbsp
תחשוב על אנשים שמגיעים מסביבת Windows ל-Mac:
מי שעובד שנים עם Windows, או אפילו הפצות לינוקס גרפיות מודרניות, רגיל שלחיצה ימנית על העכבר תביא לו תפריט מבוסס הקשר.
&nbsp
לא משנה באיזו אפליקציה הוא נמצא - אפילו אם לא ראה אותה מימיו, אם חסרה לו איזושהי אפשרות, הוא ידע לחפש אותה בלי להתייעץ אם אדם שבאמת מכיר את התוכנה.
&nbsp
ב-Mac לאומת זאת, שנים קיימת תרבות של "כפתור אחד".
אומנם ניתן עדיין לקבל תפריט הקשר בצירוף איזה מקש (CMD?), אבל זה משהו שצריך ללמוד ולהתרגל אליו.
&nbsp
מי שמשתמש ב-Android רגיל שיישומים מתנהגים בצורה מסוימת, ומעמידים אפשרויות וכפתורים בצורה מסוימת כנ"ל עבור משתמש iOS.
&nbsp
גם מי שפותח יישום ולא מכיר אותו ספציפית, יצפה לדברים מסוימים כמו שלוש נקודות שמייצגות תפריט, או או סמל מסוים ליצירת פריט חדש או דרך קבועה לצאת מהיישום.
&nbsp
מצד אחד זה אולי נשמע נחמד שמישהו כתב יישום שמתנהג באותה צורה בשתי פלטפורמות שונות, ואז משתמש Whatsapp ב-Android יכול ללכת ולשאול חבר עם אייפון איך להגיע לאיזו אפשרות, אבל ברגע שמבינים שאם היישום היה מתנהג באופן טבעי לפלטפורמה אותו משתמש לא היה בכלל צריך לשאול אף אחד והיה מוצא את האופציה בעצמו פשוט כי היא באותו מקום כמו ביישומים שהוא כבר מכיר, הסיפור היה נראה אחרת.
&nbsp
אגב, נשאלת השאלה:
אם היישום כה פשוט שאינו צריך כלל פיצ'רים ייחודיים למערכת, למה הוא צריך להיות יישום מקומפל ומותקן על המכשיר?
&nbsp
אם מה שאתה בונה הוא על פניו סתם ממשק לשירות Web, למה לא לעשות אותו בתור אתר וזהו?
אם תבנה אותו בצורה נכונה ורספונסיבית, לא רק שתרוויח במכה את כל הפלטפורמות הסלולריות, אלא את כל שאר הפלטפורמות גם יחד, ובכלל לא תצטרך להתעסק עם חנויות, תשלומם על חשבונות מפתחים, קומפילציה, וכלים צד שלישי.
 

פרסאוס

New member
ראשית מק נהנה מלחיצה "ימנית" לא זוכר כבר כמה שנים

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

BravoMan

Active member
איזה מנוע רינדור?

לא יודע לגבי אחרים, אבל PhoneGap ספציפית משתמש ב-WebView של המערכת, או, במקרה של מכשירי Android ישנים מאפשר לארוז גרסה עדכנית יותר של ה-WebView.
&nbsp
וכן - יש לחיצה ימנית שעובדת - אם מחברים עכבר שאינו של Apple.
בדיוק עבדתי עם בחור שדחפו לו מק בוק מהעבודה - וגם בפאד שם אין לחיצה ימנית!
(שוב - אולי היית אופציה מקבילה, שלא ידענו עליה, אבל זה בדיוק השוני שאני מדבר עליו!)
הוא היה מאוד שמח שהיה לי עכבר "נורמלי" להשאיל לו

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

פרסאוס

New member
בשתי הסביבות שציינתי לא עובדים עם

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

UpStartering

New member
איזה פיצ'רים יחודיים לדוגמא? אגב, בנוגע ל PhoneGap

ודומיו, אם זה בסופו של דבר מעטפת דפדפן לאתר שנארז כאפליקציה,
אז מדוע לא לכתוב במקום זה פשוט אתר ב HTML 5?
 
למעלה