מפתחי iPhone, אל תשכחו לתמוך גם בי!

[10 בספטמבר 2009] [2 תגובות]

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

הבעיה

משתמש ניגש ל-App Store ורוצה להוריד את התוכנה שפיתחתם, אבל הוא נתקל בהודעה הבאה:

OS Not Supported

אבל למה? הרי האפליקציה שלכם לא עושה שום דבר שדורש את מערכת ההפעלה 3.0. חבל.

הבעיה נעוצה בכך שהתוכנית מכריזה כי היא תומכת רק בגירסאות של iPhone 3.0 ומעלה.

הנה סיבה אחת למה לא ניתן לתמוך אחורה: נניח שאתם רוצים להשתמש באופציה של שליחת מיילים מתוך האפליקציה שלכם. אתם תהיו חייבים להשתמש ב-SDK 3.0 ומעלה ולהשתמש ב-Framework שנקרא MessageUI. ה-Framework הזה אינו קיים בגירסאות קודמות ולכן מעכשיו האפליקציה שלכם אינה תומכת בגירסאות 2.0 של ה-iPhone.

לא ניתן לתמוך אחורה? הצחקת את סטיב ג'ובס.

הפתרון

הפתרון, כמו כל דבר טוב, מחולק לשלושה חלקים:

1. יש להגדיר את ה-Base SDK להיות הכי חדש שאתם רוצים, למשל תוכלו להשתמש ב-3.0 (ולא כמו שהתמונה מראה, בחירה ב-2.2.1):

Base SDK

2. יש לבחור את גירסת מערכת ההפעלה הכי קדומה שתוכל להריץ את הקוד בתור ה-Target OS Deployment Target. אם אפשר, כדאי לבחור את 2.0:

Deployment Target

3. יש לסמן את ה-Framework שאינו נתמך ב-SDK הישן כ-Weak Linking:

Weak Linking

השאלה המתבקשת

אם לא שאלתם את עצמכם: "איך iPhone 2.0 יריץ את זה!?", משהו לא בסדר איתכם. התשובה היא שה-iPhone יריץ כל דבר שהוא תומך בו ולא יריץ כל דבר שהוא אינו תומך בו. אם האייפון לא תומך בשליחת מייל ודווקא כן ננסה לשלוח מייל, התוכנית תתרסק (או תתנהג בצורה לא צפויה).

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

Class mailCapable = (NSClassFromString(@"MFMailComposeViewController"));
if (mailCapable == nil)
{
   //Not supported, tell the user about it and bail out
}

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

אז בבקשה ממכם, תתמכו גם בי!

 

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

2 תגובות

  1. אחד שמבין | 9/12/2009 3:28:15 PM

    הסיבה היחידה לא לשדרג למעלה היא רק מי שעשה JAILBREAK (שזה 100% מהתושבים בארץ, אבל פחות מ 10% מכלל המשתמשים של המכשירים) ואת זה לא מעניין כלכך מי שמפתח ל APPLE STORE.

    כי אם יש משהו שאפל כן עשו בחוכמה זה את אופציית ה BACKUP AND UPDATE (חבל רק שה JAILBREAK דפק למשתמשים את הנוחות של זה).

  2. טל | 9/13/2009 9:13:55 AM

    בכלליות אתה צודק, אבל גם אם יש 5% שלא רוצים לעבור לגירסה החדשה, ואפשר לתמוך בהם, אז למה לא?

    כפי שהראתי (והתנסתי בזה בפועל) זה לא דורש בכלל מאמץ או שינוי קוד משמעותי לתמוך בגירסאות ישנות.

    מי שמוכר אפליקציות בוודאי ישמח להגדיל את קהל היעד שלו אפילו בקצת..

התגובות נעולות