רשימת תפוצה

חפש באתר:

Loading

פייסבוק
5to9-תמונות מ
שיחות בפורום

 

 

« iloop בכנס WIPJAM TLV | Main | המאמר האחרון על ניהול זכרון – עד המאמר הבא »
יום שלישי
נוב152011

טיסת מבחן

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

האתר טיסת מבחן הינו שירות חינם למפתחים שמיועד לעזור בתהליך של beta testing. האתר מאפשר:

  • איסוף של מזהה המכשיר של המשתמש. המשתמשים נרשמים באתר ובתהליך ההרשמה האתר מקבל את המספר המזהה של המשתמש שדרוש לנו על מנת להכין גירסאת ad hoc.
  • האתר נותן לנו דיווח מי מהמשתמשים התקין את האפליקציה.
  • שליחת הודעות לכל המשתמשים המורשים שיש גירסא חדשה. המשתמשים יכולים להתקין את הגירסא מתוך המייל או אם שלבנו את ה–SDK בתוכנה, ניתן להתקין גירסא חדשה ישר מתוך האפליקציה.
  • לאתר יש SDK שאם אנו מוסיפים אותו לאפליקציה (הדבר מצריך שורת קוד אחת) אנו מקבלים את היתרונות הבאים:
    • ניטור בזמן אמת של כמה פעמים כל משתמש הפעיל את האפליקציה.
    • ניטור בזמן אמת של אלו נקודות ציון המשתמש הגיע אליהם (אוקי, אז בשביל זה דרוש יותר משורת קוד אחת בשילוב ה–SDK).
    • צפיה בפלט הקונסול (console log) של כל ריצה, זהו הפלט מ NSLog.
    • במקרה של קריסה, הלוג של הקריסה כולל איתור נקודת הקריסה ניתן לצפיה באתר.
    • ניתן גם לשאול את המשתמשים שאלות באמצעות ה–SDK.

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

להשתמש באתר יש ראשית להרשם כמפתח באתר ולהגדיר קבוצה Team. ניתן להגדיר קבוצה לכל אפליקציה או לכל לקוח או פשוט להגדיר קבוצה אחת, איך שאנו רוצים לארגן לנו את המשתמשים. האתר נותן לנו לינק שניתן לשלוח לגייס מתשמשים. כעת ניתן להוריד את ה–SDK ולהוסיף לפרויקט. לשלב את ה–SDK יש להוסיף את השורה הבאה למתודת application:applicationDidFinishLaunchingWithOptions: של ה UIApplcation delegate שלנו.

[TestFlight takeOff:@"teamID"];

כאשר teamID הוא מספר מזהה שאנו מקבלים מהאתר. ניתן בנוסף אם אנו רוצים גם להוסיף במקומות שונים באפליקציה את הקריאה:

[TestFlight passCheckpoint:@"label"];

כדי לקבל אינדיקציה שהמשתמש עבר נקודת ציון מסוימת.

עכשיו כל שנותר הוא לבנות קובץ IPA מהאפליקציה ולהעלות אותו לאתר. לנוחות אני כתבתי סקריפט להעלות באופן אוטומטי מתוך Xcode. כיצד עושים זאת? אני אוהב להגדיר קונפיגורציה ב–Xcode עבור זאת, זה לא חובה אך יש לזה יתרון נוסף שמייד תראו. הגדירו קונפיגורציה על ידי שיכפול הקונפיגורציה release אני קורא לקונפיגורציה בדרך כלל Ad Hoc.

 

היתרון שבהגדרת קונפיגורציה שניתן להגדיר מקרו בקומפיילר כך:

ואז ניתן באופן אוטומטי לקרוא ל–SDK של testflight רק בבניות Ad Hoc כך:

#ifdef ADHOC

[TestFlight takeOff:@"teamID"];

#endif

ובכך אנו דואגים לשלב את ה–SDK רק בבניות עבור ad hoc ולא לחנות. עכשיו הגדירו סכמה חדשה ב–xcode וקראו לה Test Flight.

ערכו את הסכמה וקבעו שכאשר אתם מריצים אותה היא בונה את הקונפגורציה ad hoc וב–executable מלאו none.

הוסיפו ב–Build ב post-actions שלב חדש של הרצת סקריפט. קיבעו את ה–shell ל–/bin/csh וב–provide build settings from בחרו את האפליקציה שלכם.

כעת הכניסו את הסקריפט הבא:

# 1

set API_TOKEN='xxxxxx'

set TEAM_TOKEN='yyyyyy'

set CONFIGURATION='Ad Hoc'

set DISTRIBUTION_LIST='testers'

 

set BUILDDIR="${SRCROOT}/${TARGET_BUILD_DIR}"

set APP_NAME=$CODESIGNING_FOLDER_PATH:r:t

set DSYM_PATH=${BUILDDIR}/${APP_NAME}.app.dSYM

 

# 2

echo Changes in this build: >/tmp/notes.txt

open -enW /tmp/notes.txt

# 3

zip -r9 $DSYM_PATH.zip $DSYM_PATH

xcrun -sdk iphoneos PackageApplication -v "${SRCROOT}/${CODESIGNING_FOLDER_PATH}" -o "$BUILDDIR/$APP_NAME.ipa"

# 4

curl http://testflightapp.com/api/builds.json -F file="@$BUILDDIR/$APP_NAME.ipa" -F dsym="@$DSYM_PATH.zip" -F api_token="$API_TOKEN" -F team_token="$TEAM_TOKEN" -F 'notes=</tmp/notes.txt'  -F distribution_lists="$DISTRIBUTION_LIST" -F replace=true -F notify=true

הסבר:

בקטע 1 ישנם הגדרות. יש למלא את ה teamID וה–api ID שקבלנו מהאתר. בנוסף ניתן להגדיר שם של רשימת בוחנים שהגדרנו באתר שאוטומטית יקבלו מייל. זהו המקום היחיד שיש צורך להתאים את הסקריפט. בקטע 2 אנו יוצרים קובץ עבור ה release notes שיתווספו למייל המודיע על הגרסא. הקובץ יפתח ב TextEdit ויאפשר לנו לכתוב בו כאשר נצא מ–TextEdit הסקריפט ימשיך. בקטע 3 אנו דוחסים את קובץ הסימבולים. קובץ זה מאפשר לאתר לתת לנו שמות של פונקציות ולא רק כתובות בזכרון אם יש קריסה. כמו כן אנו יוצרים ipa. בשורה 4 אנו שולחים את הכל לאתר.

כעת יש לנו סכמה חדשה בשם Test Flight שכאשר אנו בוחרים אותה באקסקוד ולוחצים על כפתור run אקסקוד יבנה את האפליקציה ויעלה אותה לאתר עבורינו והאתר ישלח מייל למשתמשים שלנו. נוח וקל!

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

לסיכום אתר test flight מאד שימושי ומומלץ להוסיף לארגז הכלים.

PrintView Printer Friendly Version

EmailEmail Article to Friend

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>