2012-01-30 65 views
1

我使用Facebook開發人員網站上發現做的牆後下面的代碼:Facebook ios SDK - 如何處理Feed對話回調?

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
          @"http://developers.facebook.com/docs/reference/dialogs/", @"link", 
          @"http://fbrell.com/f8.jpg", @"picture", 
          @"Facebook Dialogs", @"name", 
          @"Reference Documentation", @"caption", 
          @"Dialogs provide a simple, consistent interface for apps to interact with users.", @"description", nil]; 

[_facebook dialog:@"feed" andParams:params andDelegate:self]; 

這顯示了一個彈出讓用戶寫他的消息,然後按發佈或取消。

有什麼方法可以知道帖子是否已成功推出(取消或連接問題)?

非常感謝!

回答

0

+1對於Hlung和DMCS的幫助,但它看起來像飼料對話變得越來越廢棄,並且處理適當的回調是很煩瑣的(不可能?)。 再加上FB文件不是最新的。

所以我結束了使用(void)requestWithGraphPath,而不是(void)dialog這需要額外的許可發佈用戶的牆上,但工作原理與2個以下的回調更好:

- (void)request:(FBRequest *)request didLoad:(id)result 
- (void)request:(FBRequest *)request didFailWithError:(NSError *)error 
3

嘗試使用指定除self之外的委託來捕獲對話框的響應。

參見:http://developers.facebook.com/docs/reference/iossdk/dialog/

如果要調用該方法需要 參數設置對話框,你應該調用此對話框。您應該將您的委託設置爲 以處理對話框成功的場景,被 用戶取消,以及任何錯誤場景。

至於委託:http://developers.facebook.com/docs/reference/iossdk/FBRequestDelegate/我會認爲這將是request:didReceiveResponse:委託。

編輯

額外的反饋,你的答案就在我在最初的反應給了鏈接上列出的dialogDidComplete委託。

+0

非常感謝您的回答!不幸的是'self',指定的委託是'FBDialogDelegate',但是對話從不觸發'request:didReceiveResponse:' 看起來feed對話框確實被棄用了一半。看起來像'@「name」'鍵不再顯示在對話框中(雖然它張貼在用戶的牆上) – Johann 2012-01-31 10:22:26

+0

嘗試製作單獨的代表而不是自稱的代碼,如它們在示例中所示。 – DMCS 2012-01-31 14:50:28

+1

您在[[_facebook對話框:@「feed」中使用的參數「和params:params andDelegate:self]中使用的代表是FBDialogDelegate,而不是FBRequestDelegate。所以它應該觸發' - (void)dialogDidComplete:(FBDialog *)對話框;',而不是'request:didReceiveResponse:'。 – Hlung 2012-02-01 12:48:57

2

我想你可以使用FBDialogDelegate的- (void)dialogDidComplete:(FBDialog *)dialog;方法。

0

有點關係到你的問題 - 我是想找出哪個對話框已經完成。

您可以檢測對話框的參數,並檢查它是哪一個。我有這個問題,因爲我發送了各種對話,並且想知道另一方是成功還是不成功。

- (void)dialogDidComplete:(FBDialog *)dialog { 
    // the song feed return 
    NSLog(@"params; %@",dialog.params); 
    if([[dialog.params objectFOrKey:@"ref"] isEqualtoString:@"songfeed"]){ 
     // do stuff on return from this dialog 
    } 
}