2012-01-30 17 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 
    } 
} 
相关问题