fb_license

技術標籤

@selector (1) 初使化區塊 (1) 物件 (1) 物件導向 (2) 型別 (4) 封裝 (1) 流程控制 (1) 陣列 (3) 推論型別 (2) 實機測試 (1) 蓋索林(gasolin) (1) 模組 (1) 憑證 (1) 轉型 (1) 羅康鴻 (121) 類別 (1) 變數 (5) Accelerometer (1) ActiveRecord (1) Activity (1) AFNetworking (1) alloc (1) Android (3) Animation (1) App (1) App ID (1) APP上傳 (1) ASP.NET (1) AVAudioPlayer (1) block (1) C# (2) class (1) CLLocationManager (1) CLLocationManagerDelegate (1) CMMotionManager (4) Controller (1) delegate (1) DELETE語法 (1) Device Motion資料 (1) Dialog (1) DropDownList (1) dynamic language (2) Facebook SDK (9) FBRequest (5) FBRequestConnection (2) FMDB (1) Gesture Recognizers (6) GROUP BY (2) Gyro (1) HAVING (1) IBAction (1) IBOutlet (1) id (3) inheritance (1) init (1) Insert (1) instance variable (1) Interface Builder (1) iOS (70) iOS idea (7) iOS Introduction (1) Layout (1) Magnetometer (1) Menu (2) Method (2) MKMapView (1) MKPointAnnotation (1) MS SQL (5) Nil (1) NSArray (1) NSDictionary (1) NSError (1) NSFileManager & .plist (1) NSMutableArray (1) NSMutableDictionary (1) NSNotificationCenter (1) NULL (1) object (2) Objective-C (16) Objective-C idea (1) ORDER BY (1) Parameter (1) property (1) protocol (2) Provisioning (1) Proximate Sensor (1) Q and A (2) R類別 (1) Rails (9) RESTful SOA (9) Ruby (8) Scene (1) SEELECT (1) Segue (2) SEL (1) SELECT語法 (1) Shake (1) Simulator (1) SOA (8) SQL (6) SQL Server (5) SQL函數 (1) SQL彙總函數 SQL (1) SQLite (1) Storyboard (1) Style (1) Swift (1) Table (1) target & action (1) Theme (1) Toast (1) TRUNCATE TABLE語法 (1) UIActionSheet (1) UIActionSheetDelegate (1) UIActivityIndicatorView (1) UIAlertView (1) UIBarButtonItem (1) UIButton (1) UICollectionView (1) UICollectionViewDataSource (1) UIControl (9) UIDatePicker (1) UIImage (1) UIImagePickerController (2) UIImagePickerControllerDelegate (2) UIImageView (1) UILabel (1) UILongPressGestureRecognizer (1) UINavigationController (2) UIPanGestureRecognizer (1) UIPinchGestureRecognizer (1) UIProgressView (1) UIResponder (1) UIRotationGestureRecognizer (1) UISegmentedControl (1) UISlider (1) UIStepper (1) UISwipeGestureRecognizer (1) UISwitch (1) UITabBarController (1) UITableView (1) UITableViewDataSource (1) UITapGestureRecognizer (1) UITextField (1) UITextFieldDelegate (1) UITextView (2) UITextViewDelegate (1) UIToolBar (1) UIView (8) UIWebView (1) UPDATE語法 (1) var (2) VB.NET (7) View (4) WHERE子句 (1) XML (1)

2013/10/21

[iOS] FBRequestConnection startFor... 方法系列




我是FBRequest
透過我你可以決定要向Facebook提出各種操作Facebook的請求,接著你將我交給FBRequestConnection,麻煩FBRequestConnection執行請求就可以了。
我是FBRequestConnection
不用麻煩FBRequest了,
我直接提供startFor...系統的方式
讓您一次完成建立與執行請求的動作
快速又省事。


先前我們完成了:[iOS] FBRequest刪除 - requestForDeleteObject:

現在,我們透過FBRequestConnection:
1. + startForPostStatusUpdate:completionHandler:
2. + startForDeleteObject:completionHandler:

完成PO文與刪文的操作。







事前的準備:
1. 建立2個場景Scene,一個為登入頁面,一個為登入後主頁面

  • 登入頁面:其中有個登入按鈕
  • 登入後主頁面:1個文字標籤Label、1個PO文按鈕、1個刪除PO文按鈕和1個登出按鈕



2. 建立繼承自UIViewController的LoginController,並設定在登入場景中



3. 建立繼承自UIViewController的MainController,並設定在登入後的主場景中



4. 設定登入場景轉場至主場景的轉場Segue,並命名為go_main






第1步:登入並取得刪除PO文權限

  • 在"登入"按鈕上建立對應的action - loginTocuh

  • 使用FBSession的+openActiveSessionWithPublishPermissions:...開啟Session,並帶入以陣列方式帶入刪除物件所需的權限@[@"publish_actions"],其與PO文的權限也相同,其中的defaultAudience:參數給予FBSessionDefaultAudienceEveryone表示PO的文所有人都看的到。在成功登入後即透過"go_main"轉場segue,轉場至主頁面

- (IBAction)loginTouch:(id)sender { //透過+[openActiveSession allowLoginUI:YES...]進行Facebook登入, //這次使用openActiveSessionWithPublishPermissions取得可以刪除物件的請求, //當然,刪除物件的權限與PO文的權限相同,以陣列的方式@[@"publish_actions"]帶入, //defaultAudience參數代入FBSessionDefaultAudienceEveryone表示PO文的資訊所有人皆可看的到 [FBSession openActiveSessionWithPublishPermissions:@[@"publish_actions"] defaultAudience:FBSessionDefaultAudienceEveryone allowLoginUI:YES completionHandler:^(FBSession *session , FBSessionState status , NSError *error) { if(error != nil){ NSLog(@"error:%@", [error description]); } //若無error且session的status等於FBSessionStateOpen //成功登入Facebook開啟連結 if(error == nil && status == FBSessionStateOpen) { //則透過轉場識別字"go_main"轉場至MainController [self performSegueWithIdentifier:@"go_main" sender:self]; } }]; }


第2步:PO文
  • 在"PO文"按鈕上建立對應的action - postTouch,同時加上objectID屬性,以將PO文後的物件ID - id保存下來,後續才能透過物件ID進行刪除的動作

  • 透接透過FBRequestConnection的+startForPostStatusUpdate:completionHandler:,直接發生PO文的請求,事實上+startFor...系統的方法,都會自動幫您建立FBRequest請求物件,並執行發送出去。注意,在成功PO文後,會將PO文的物件ID保存在objectID屬性中。
- (IBAction)postTouch:(id)sender { //FBReuqestConnection類別的startForPostStatusUpdate...方法, //一次完成建立與發送PO文的請求。 [FBRequestConnection startForPostStatusUpdate:@"來自於iOS程式的訊息。" completionHandler:^(FBRequestConnection *connection , id result , NSError *error) { NSString *message = nil; //若error不為nil表示執行成功, //則message帶入PO文成功字樣, //若不成功則帶入PO文失敗字樣。 if(error == nil) { message = @"PO文成功,請至您的Facebook版面查看訊息。"; //成功PO文後,將物件id表存在objectID屬性中 self.objectID = [result objectForKey:@"id"]; } else { //message = @"PO文失敗!"; message = [error description]; } //透過UIAlertView顯示PO文結果 UIAlertView *view = [[UIAlertView alloc] initWithTitle:nil message:message delegate:nil cancelButtonTitle:@"關閉" otherButtonTitles: nil]; [view show]; }]; }


第3步:刪除PO文

  • 在"刪除PO文"按鈕上建立對應的action - deleteTouch



  • 透過FBRequestConnection的+startForPostStatusUpdate:completionHandler:,直接發生PO文的請求。同樣的,事實上+startFor...系統的方法,都會自動幫您建立FBRequest請求物件,並執行發送出去。

  •   - (IBAction)deleteTouch:(id)sender { //FBReuqestConnection類別的startForDeleteObject...方法, //一次完成建立與發送刪除Facebook物件的請求。 [FBRequestConnection startForDeleteObject:self.objectID completionHandler:^(FBRequestConnection *connection , id result , NSError *error) { NSString *message = nil; //若error不為nil表示執行成功, //則message帶入PO文成功字樣, //若不成功則帶入PO文失敗字樣。 if(error == nil) { message = @"刪除PO文成功,請至您的Facebook版面查看訊息。"; } else { //message = @"刪除PO文失敗!"; message = [error description]; } //透過UIAlertView顯示PO文結果 UIAlertView *view = [[UIAlertView alloc] initWithTitle:nil message:message delegate:nil cancelButtonTitle:@"關閉" otherButtonTitles: nil]; [view show]; }]; }

    第4步:執行
    • 接下登入,此時會出現取得權限的畫面,點選"PO文"後至您的Facebook查看此文,而後在點選"刪除PO文"在回到Facebook查看此文已不存在,已被刪除









    別忘了補上登出程式

    • 為"登出"按鈕加上action - logoutTouch

    • 透過closeAndClearTokenInformation關閉session以登出Facebook,並透過dismissViewControllerAnimated:方法關閉目前所在的場景

    - (IBAction)logoutTouch:(id)sender { //透過closeAndClearTokenInformation關閉session以登出Facebook [FBSession.activeSession closeAndClearTokenInformation]; //關閉此登出畫面 [self dismissViewControllerAnimated:YES completion:nil]; }






    檔案連結:myiosapp_startForPostStatusUpdate_startForDeleteObject.zip (此Facebook AppID已刪除,僅提供程式參考)



    更多的FBReuqestConnection的+startFor...系統方法,請參考:
    https://developers.facebook.com/docs/reference/ios/current/class/FBRequestConnection