פיתוח לאייפון

Guy Moore

New member
פיתוח לאייפון

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

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

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

זה הכל.

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

מה שאני *לא* רוצה לבצע, הוא כתיבת אתר Web רספונסיבי ואז לגלוש אליו מהמובייל,
ואפילו *לא* פשוט לעטוף אותו באפליקציה/קונטיינר שבסה"כ יציג את תוכן האתר דרך דפדפן פנימי (או משהו דומה),
בנוסף, אני רוצה לעבוד על PC ולא על MAC, וגם לא על האקינטוש, VPC או כל פתרון ביניים אחר,
אני גם מבין שהאפליקציה הנ"ל לא משתמשת ביכולות מאוד ספציפיות ו Low Level של האייפון,
לכן האם כנראה הכיוון הוא ללכת על משהו כמו PhoneGap, Xamarin, אולי React Native וכו'?
האם NodeJS משתלב בתמונה?

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

BravoMan

Active member
אתה מבקש לעשות משהו, ש-Apple הפעילו כל כוחם למנוע ממך.

ולכן התשובה היא שאין פתרון לדרישות.
&nbsp
מה שאתה רוצה לעשות נקרא "אפליקציה native" - כלומר, תוכנה של ממש שרצה על המכשיר, ואינה אתר שמוצג.
אין שום דרך לבנות כזו ל-iPhone בלי להשתמש במערכת הפעלה Mac OS.
&nbsp
לגבי שלוש הטכנולוגיות שהצגת, כולן עדיין דורשות XCode רץ על Mac OS כדי לקמפל גרסה ל-iPhone, למרות שהקוד יכול להיות משותף לפלטפורמות אחרות ולהבנות גם עם סביבות אחרות לאותן פלטפורמות.
&nbsp
והבעיה עם הטכנולוגיות האלה שהן לא נתמכות באמת במערכת ההפעלה וצריכות לסחוב איתן את כל התמיכה, לכן האפליקציה הקטנה שלך תהפוך לכבדה ואטית מאוד.
&nbsp
PhoneGap למעשה עוטף אתר בתוך אפליקציה - בדיוק מה שאתה לא רוצה.
&nbsp
React Native שם node js בתוך האפליקציה שלך, ומנסה לשלב בין קוד JS לשפה טבעית של המכשיר (Objective-C או Swift במקרה של iOS), והצורך לשנע נתונים למנוע JS ומחוצה לו יוצר בעיית ביצועים רצינית (בדיוק הייתי בהרצאה על זה).
&nbsp
Xamarin מנסה לקמפל #C לפלטפורמות שאין עליהן תמיכה ב-NET.
אני לא בטוח לגבי הפרטים, אבל הוא מן הסתם יהיה חייב לסבול מאותן צרות כמו React Native.
&nbsp
אם אתה רוצה לפתח על PC יישום טבעי למובייל ושיצא באמת קליל ושפוי, תפתח לאנדרויד במקום.
iOS כבר מזמן אינה המערכת השולטת בשוק, אבל היא עדיין אלופה בתקיעת מקלות בגלגלים למפתחים.
&nbsp
ללא Mac, לא תוכל אפילו להריץ את התוכנה שכתבת על הטלפון האישי שלך!
על הפצה למישהו אחר, בין אם לחבר אחד בחינם או לכלל הציבור בתשלום, אין מה לדבר...
&nbsp
ואם הסיבה שבחרת דווקא באייפון זה כי זה הטלפון שיש לך, עדיף לך כבר לקנות איזה אנדרויד זו למשחקים, או להסתפק באמולטור.
 

Guy Moore

New member
אני רואה שיש לך ידע רב, אשמח לדעת:

לצערי האפליקציה חייבת לרוץ גם על אייפון והפיתוח חייב להיות על PC,
האפליקציה עצמה היא פשוטה מאוד, חשבתי על Node.js ו React Native.
(או אולי Ionic אבל ל React Native יש קהילה עצומה, שזה יתרון).
הנושא של בעיית הביצועים ב React Native ידועה, אבל זניחה במקרה שלי.

1. על איזו טכנולוגיה אתה ממליץ במקרה הנ"ל? האם הבחירה שלי סבירה או שיש המלצה אחרת?

2. לטובת הפצת האפליקציה, אני מניח שאת החלק הזה (לא את הפיתוח) כן אוכל לבצע על מאק (אולי VPC), זה אמור להספיק כדי להעלות אותה ל App Store, לא?

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

אני מבין שאפל מעדיפים פיתוח נייטיב ואני גם מבין שזה האינטרס של המפתח/חברה לעשות זאת,
מכיוון שזו הדרך הטבעית עם התוצאות הטובות ביותר,
אבל לעיתים יש אילוצים, אז לאור הכתוב לעיל ולאור הידע שיש לך בכל המונחים שהזכרתי,
האם לדעתי Node.js עם React Native זה הפתרון המועדף, או משהו אחר?

תודה.
 

BravoMan

Active member
רק איזה 14 שנה בפיתוח למובייל, בקטנה


נראה שאתה אחד מאותם אנשים שתמיד מתלוננים עליהם שלא מבינים ש-"לא אומר לא"

&nbsp
אין בעיה טכנית לפתח את האפליקציה שאתה רוצה בעזרת React Native, ואם אתה חייב בסיס קוד כמה שיותר אחיד לפלטפורמות שונות זה כנראה הפתרון המועדף היום.
&nbsp
הבדל במהירות אולי יהיה זניח, אבל מה שלא יהיה זניח זה נפח האפליקציה, שכאמור תכלול את כל המנוע של node.js בפנים.
&nbsp
כלומר, אפליקציה של 2 מסכים שבאופן רגיל במקרה הגרוע היית שוקלת מגה, תתנפח ל-30 מגה או יותר.
&nbsp
אתה תוכל לכתוב את הקוד בצד ה-PC, אבל לא תוכל לקמפל אותו לרוץ על iOS בצורה כזו, ואין שום אמולטור iOS שרץ על Windows או אפילו על Linux, למרות שמבחינה מבנית Linux קרובה הרבה יותר ל-Mac OS מאשר Windows.
&nbsp
אין לי מושג למה בדיוק אתה מתכוון ב-VPC, אבל לא שמעתי מעולם על מישהו שהצליח להריץ Mac OS בתוך מכונה ווירטואלית על Windows.
&nbsp
אני לא אומר שזה לא אפשרי, אבל מבחינה חוקית וטכנית זה לא יהיה שונה מהאקינטוש, כך שאם פסלת אחד, כנראה תצטרך לפסול את האחר.
&nbsp
אבל כך או כך, אלא אם אתה רוצה להסתבך ממש בהעתקה של קוד ממכונה למכונה, עדיף לך לעשות את הפיתוח כולו על Mac OS כלשהו, כי כאמור מעבר לכתיבת קוד לא תוכל לעשות כלום על Windows - לא בניה של הבינארי ולא דיבאג.
&nbsp
אני לא יודע מה סיבותיך להתנגד לשימוש ב-Mac OS אבל אולי כדאי שתציג אותן, אם אתה יכול, ונמצא פתרון להם, במקום למה שאתה מבקש.
זה הרבה יותר סביר שיהיה.
&nbsp
למשל, אם הבעיה היא כספית, יש דרכים למצוא מחשבי Mac זולים יחסית, שאולי יעבדו לאט אבל יספיקו לפיתוח.
 

Guy Moore

New member
תודה רבה, שאלה טכנית ברשותך

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

Guy Moore

New member
תודה, כלומר במצב הזה אצטרך

להעביר את הקבצים למאק לא רק לטובת ההעלאה, אלא רק לטובת הבדיקות (דרך Xcode), נכון?
 

BravoMan

Active member
קודם כל תצטרך להעביר אותם לטוב הקימפול!

אני מזכיר לך, שלמרות שאתה כותב ב-JS ב-React, אתה עדיין צריך לקמפל את התוצר לקובץ IPA במקרה של iPhone.
&nbsp
אין כלים לעשות זאת על Windows, ולכן תצטרך להעביר את כל הפרויקט, לקמפל אותו על Mac OS, ורק אז תוכל להריץ אותו היכנשהו.
 

Guy Moore

New member
אתה צודק כמובן, אחדד:

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

BravoMan

Active member
זו לא שאלה של דרך נכונה או לא נכונה...

זו שאלה של האם יש כלים או אין כלים.
&nbsp
כדי להיות בטוחים, בוא נשאל את דוד גוגל, שיודע הרבה יותר מכל אחד מאיתנו.
&nbsp
הקישור הראשון שהוא נותן לי מעלה את זה:
https://techonation.com/best-ios-emulators-for-windows-run-ios-apps/
&nbsp
על פניו, יש פה 20 אפשרויות, אז נראה שטעיתי, אבל כשמסתכלים מקרוב רואים שהאפשרות הראשונה היא discontinued, האפשרות השנייה היא משהו וובי שמכריח אותך להעלות אפליקציה לאתר זר ויכול לקחת חצי שעה להריץ אותה, וזה מתדרדר משם.
&nbsp
אבל, אף אחד לא מונע ממך לנסות, אולי משהו מכל זה יעבוד לך.
כאמור, אלא רק אמולטורים, אתה עדיין צריך איכשהו לקמפל את היישום שלך.
&nbsp
עכשיו בוא נראה אם טעיתי לגבי הפיתוח עצמו:
זה הלינק הראשון שגוגל נותן.
https://learnappmaking.com/develop-ios-apps-on-windows-pc/
&nbsp
מה הם מציעים?
1. תקנה מק
2. תריץ האקינטוש
3. כמו 2 אבל במכונה ווירטואלית
4. תקנה מק זול יד שניה
&nbsp
בקיצור, אולי בכל זאת יש סיכוי קלוש שתצליח להריץ את היישום שלך על Windows עם איזה כלי אלמוני.
עדיין לא נראה שתוכל להימנע ממאק כדי לקמפל ולדבג, אבל אם זה מה שיעשה לך את היום, אז בהצלחה!
&nbsp
נקודה קטנה למחשבה:
ל-Android ו-iOS יש ממשק משתמש שונה לא רק במראה אלא גם בהתנהגות.
&nbsp
זו הסיבה שכלים כמו PhoneGap מייצרים אפליקציות כ"כ מגעילות - הממשק של מה שנוצר לא מתאים למערכת הפעלה, והתוכנה נראית זרה ולא נוחה לתפעול.
&nbsp
React Native מתגבר על זה ע"י כך שמכריח אותך לכתוב פעמיים את הקוד של הממשק עצמו, פעם אחת לכל פלטפורמה בשפה הטבעית שלה.
זה נותן ליישום מראה טבעי ושפוי, אבל עולה לך בעבודה כפולה.
&nbsp
כדי להבין כמה ההבדל יכול להיות משמעותי, אני אתן לך דוגמה בסיסית שרלוונטית גם לתוכנה שלך עם 2 מסכים:
&nbsp
נניח שאחרי שמשתמש פתח את המסך השני ביישום שלך אתה רוצה לאפשר לו לחזור למסך הראשון.
&nbsp
ב-Android אתה כמתכנת לא צריך לעשות כלום. במערכת יש כפותר "אחורה" מובנה, ואם לא תשנה את ההתנהגות שלו בתוך היישום שלך, הוא יעשה אוטומטית את החזרה בשבילך.
&nbsp
ב-iOS אתה חייב לממש כפתור חזרה בתוך המסך שלך, ולדאוג לכל הקוד שלו, אחרת למשתמש לא יהיה איך לחזור.
מצד שני, משתמשי אנדרויד לא רגילים לחפש כפתור מיוחד לחזרה אחורה בחלק העליון של המסך.
&nbsp
משהו קטן שעושה הבדל משמעותי בשימושיות של האפליקציה הכי פשוטה!
 
מה זאת אומרת “הפיתוח חייב להיות על PC”?
מי החליט את זה ולמה?
&nbsp
אין שום אפשרות לעשות את מה שאתה מבקש. No ifs, whens or buts. אתה לא הראשון בעולם ששואל או שמתחבט בנקודה הזו. תחפש קצת בגוגל ותראה.
 

Guy Moore

New member
הסיבה היא לא טכנית או כלכלית

לכן אין צורך לעייף אתכם עמם

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

Guy Moore

New member
תודה, מה בנוגע למכונה וירטואלית?

האם יש בעיה עקרונית לעשות את הקמפול, בדיקות והעלאה לאפסטור,
מתוך מאק שרץ על מכונה וירטואלית על פי סי?
&nbsp
אני שואל טכנית נטו.
 
למעלה