עדכון סטטוס ב-Facebook מתוך האפליקציה | גיא הדרכה ופיתוח תוכנה

עדכון סטטוס ב-Facebook מתוך האפליקציה

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

הדבר אפשרי מאוד ומצריך מספר פעולות (לא אינטואיטיביות יש לציין)
מצד המפתח …. ואתם שם!

למה זה טוב?

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

מה צריך לעשות ?….

אני צריך חשבון ב- Facebook בשביל זה?

התשובה היא כן! אחרת לא נוכל לקבל את קוד הגישה מהאפליקציה לאתר של Facebook. ארחיב על כך בהמשך.

אז עושים את זה?

בכללי

אנחנו נדבר שני מרכיבים עיקריים בדרך למימוש הרעיון:

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

אפליקציית Facebook

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

יצירת האפליקציה תיתן לנו את המרכיבים הבאים:

  1. נקבל קוד סודי ל-API לגישה דרך האפליקציה שלנו. כל זאת ע"מ לאפשר גישה מאושרת ל- Facebook דרך האפליקציה שלכם באיפון.
  2. יספק לנו את העטיפה הטקסטואלית (ולא רק) לסטטוס שלנו כמו: "גיא כותב מאמר על שליחת סטטוס לפייסבוק! am •10:21דרך My Facebook iphone App"

אין פעילות שרת ברקע (לא חובה להבין)

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

התקנת אפליקציית ה- Facebook

ע"מ לאפשר לאפליקציה באיפון "לדבר" עם ה- Facebook יש להוסיף אפליקציה בחשבון ה- Facebook שלכם להיכרות עם האפליקציה באיפון.

אם טרם הוספתם את אפליקציית Facebook בחשבונכם ב- Facebook עשו זאת כעת:

  1. התחברו ל Facebook
  2. כנסו ל – Developer Application
  3. לחצו על Allow (אשר).

לאחר מכן, הוסיפו אפליקציה חדשה ל- Developer Application:

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

עכשיו האפליקציה שלכם "מוכרת" ל Facebook !

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

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

קידוד באיפון

אנחנו ניצור אפליקציה עם VIEW אחד כדי להראות את העיקרון ובעיקר את הפשטות שביצירת הקשר ל- Facebook.

הקוד

ע"מ לפתח אפליקציה ששולחת סטטוס ל-Facebook יש להשתמש ב-SDK מתאים לכך. כדי להוריד את המרכיבים הדרושים לפיתוח יש לפעול כך:

  1. כנסו ל – Facebook Connect for iPhone.
  2. לחצו על הקישור Download the SDK .
  3. חלצו את הקבצים מתוך קובץ ה – ZIP .

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

תכנית הדוגמא

אנחנו ניצור תכנית דוגמא שתתמודד עם החיבור ל-Facebook ועדכון הסטטוס:

  1. יצירת אפליקציה חדשה
  2. הכנסת הקבצים הדרושים לחיבור ל- Facebook לתוך האפליקציה
  3. הוספת קבצי עזרה לספריית הפיתוח של האפליקציה.
  4. הוספת קוד להתחברות ושינוי סטטוס ב- Facebook .
יצירת אפליקציה חדשה

כנס ל- XCode וצור אפליקציה חדשה מבוססת VIEW שנקראת StatusUpdater :

  1. מתוך התפריט של XCode כנס ל: File > New Project…
  2. בחר View-Based Application מתוך iPhone OS > Application ולחץ על Choose
  3. קרא לפרויקט StatusUpdater ולחץ על Save .

הכנסת הקבצים הדרושים לחיבור ל-Facebook לתוך האפליקציה

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

  1. גשו לספריה בה נמצאת הספרייה fbconnect-iphone באמצעות ה- Finder.
  2. פתח את ספריית Src.
  3. פתחו את הפרויקט FBConnect.xcodeproj עכשיו צרכים להיות לכם שני חלונות פתוחים בסביבת – XCode .
  4. פתחו את ספריות קוד התוכנית (FBConnect.xcodeproj).
  5. העתיקו ע"י גרירה את ספריית FBConnect לתוך התכנית החדשה שיצרתם (יש לסמן את הספרייה עצמה).
  6. הוסיפו את הקבצים עם אופציית ההעתקה מסומנת בחלון ההוספה ולחצו על Add .
  7. בפאנל Groups & Files של הפרויקט StatusUpdater עמדו על שם הפרויקט ולחצו מקש ימני להבאת ה- Info של הפרויקט.
  8. בחרו בכרטיסייה Build .
  9. לחיצה כפולה על Header Search Paths בחלק של ה- Search Paths .
  10. לחצו על '+' להוספת ספריית חיפוש (search path).
  11. הכניסו שם את הנתיב של ספריית ה src כמו בדוגמא: ../fbconnect-iphone/src
  12. לחצו Ok לאישור הוספת נתיב החיפוש.

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


במידה והכול תקין, יש לסגור את הפרויקט FBConnect.


הוספת קבצי עזרה לספריית הפיתוח של האפליקציה

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

  1. גשו לספריה בה נמצאת הספרייה MOFBHelper באמצעות ה- Finder.
  2. פתחו את הפרויקט MOFBHelper.xcodeproj עכשיו צרכים להיות לכם שני חלונות פתוחים בסביבת הפיתוח : StatusUpdater, MOFBHelper
  3. פתחו את ספריות קוד התוכנית (MOFBHelper.xcodeproj ).
  4. העתיקו ע"י גרירה את ספריית MOFBHelper לתוך התכנית החדשה שיצרת (יש לסמן את הספרייה עצמה).
  5. הוסיפו את הקבצים עם אופציית ההעתקה מסומנת בחלון ההוספה ולחצו על Add .

הפרויקט שלנו אמור להיראות משהו בסגנון הבא:

הוספת קוד להתחברות ושינוי סטטוס ב- Facebook

קוד ה- MOFBHelper מספק לנו את הנוחות לעדכן את הסטטוס של המשתמש בפשטות כמו בקוד הבא: fbHelper.status = @"reading Mobile Orchard";

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

העתיקו את הקוד הבא לתוך הקובץ StatusUpdaterViewController.h:

#import

#import "FBConnect/FBConnect.h"

#import "MOFBHelper.h"

@interface StatusUpdaterViewController : UIViewController

FBSession *session;

MOFBHelper *fbHelper;

}

@end

שימו לב שישנם שני Delegates חדשים שיש להוסיפם לאובייקט ה – Controller .

העתיקו את הקוד הבא לתוך הקובץ StatusUpdaterViewController.m:

#import "StatusUpdaterViewController.h"
@implementation StatusUpdaterViewController
<#pragma mark View Methods
– (void)viewDidLoad {
[super viewDidLoad];
session = [FBSession sessionForApplication:@"API KEY!!!" secret:@"APP SECRET" delegate:self];
FBLoginButton* button = [[[FBLoginButton alloc] init] autorelease];
[self.view addSubview:button];
fbHelper = [[MOFBHelper alloc] init];
fbHelper.delegate = self;
}
– (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[session resume];
}
#pragma mark Facebook Session Protocol Methods
– (void)session:(FBSession*)session didLogin:(FBUID)uid {
fbHelper.status = @"אנחנו לומדים איך מעדכנים סטטוס מהאיפון!!";
}
#pragma mark Optional MOFBHelper Protocol Methods
– (void)statusDidUpdate:(MOFBHelper*)helper {
NSLog(@"עדכון סטטוס");
}
-(void)status:(MOFBHelper*)helper DidFailWithError:(NSError*)error {
NSLog(@"status update failed: %@", [error description]);<
}
# pragma mark Housekeeping
– (void)dealloc {
[session release];
[fbHelper release];
[super dealloc];
}
@end

שימו לב – יש לשנות את הקוד הסודי שקיבלתם מהאפליקציה באתר Facebook ע"י קריאה לשגרה הבאה:

;sessionForApplication:secret:delegate:self

בשגרה viewDidLoad אנחנו ניצור חיבור דרך לחצן שיתווסף ל- View והוא זה שיוצר את המחלקה של MOFBHelper.

בשגרה viewDidAppear: אנחנו למעשה ממשיכים את ההתחברות שאולי הייתה קיימת כאשר המשתמש סימן את האופציה להישאר מחובר ; אחרת חלון של Login יופיע לקבלת פרטי משתמש.

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

במידה והמשתמש לא אישר מאיזו שהיא סיבה את החיבור ל- Facebook אזי נקבל את מסך ההתחברות שוב.

אין לעשות השמה של הסטטוס בשגרה viewDidLoad בשום מצב! מפני שה – View צריך להיות מוצג בטרם נראה את מסך ה-Login .

ספריית ה- MOFBHelper מספקת לנו פרוטוקול מיוחד ע"מ שנוכל לקבל חיווי לפעולת עדכון הסטטוס באם הצליח או לאו. לכן ישנם שתי שגרות עיקריות לטיפול בשגיאות התחברות ועדכון והן : statusDidUpdate: ו- status:DidFailWithError:.

ניתן למצוא את מספרי השגיאות בקובץ MOFBErrors.h. אם לא אכפת לך נושא השגיאות יש להוריד את השיגרה שמטפלת בשגיאה מקובץ ה – h של ה- MOFBHelperDelegate.

לסיכום

אשמח לדעת שהצלחתם לעבוד עם השיטה, לי זה עובד נהדר בינתיים :-]

המאמר מפורסם גם בפורום המפתחים ל iPhone בניהולי לחץ כאן למעבר לפורום.

12 מרץ, 2010 תחת קטגוריה מאמרים - המשך קריאה

3 Responses to “עדכון סטטוס ב-Facebook מתוך האפליקציה”

  1. מאת לאה:

    הי גיא
    איך אפשר להחזיר סטטוס שנמחק בטעות בפייסבוק
    זה היה במהלך 10/12
    תודה מראש
    לאה 052-5287823

  2. מאת גיא דור:

    היי גיא,
    תודה רבה על המדריך, אשמח לדעת אם יש אפשרות להציג את אותו דיאלוג של login ו-publishing ב-UIWebView במקום בחלון הקופץ של Facebook

    תודה!

  3. מאת גלי בליס:

    גיא, אחלה מאמר !

    רציתי לדעת אם יש אפשרות לצפות בסטטוסים שלי מתוך האפליקציה ?

    תודה !

כתיבת תגובה

  • תגים