【问题标题】:Facebook ios SDK - How to handle feed dialog callback?Facebook ios SDK - 如何处理提要对话框回调?
【发布时间】:2012-01-30 14:12:30
【问题描述】:

我使用在 Facebook 开发者网站上找到的以下代码来做墙贴:

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];

这会显示一个弹出窗口,让用户编写他的消息并按发布或取消。

有什么方法可以知道帖子是否已成功发布(取消或连接问题)?

非常感谢!

【问题讨论】:

    标签: ios facebook dialog


    【解决方案1】:

    尝试使用除 self 之外的委托来捕获对话框的响应。

    见:http://developers.facebook.com/docs/reference/iossdk/dialog/

    如果您调用的方法需要,您应该调用此对话框 设置对话框的参数。您应该将您的代表设置为 处理对话成功的场景,被取消 用户,以及任何错误场景。

    至于委托:http://developers.facebook.com/docs/reference/iossdk/FBRequestDelegate/ 我假设它是 request:didReceiveResponse: 委托。

    编辑

    如果有其他反馈,您的答案在于我在原始回复中提供的链接中列出的 dialogDidComplete 代表。

    【讨论】:

    • 非常感谢您的回答!不幸的是self,指定的委托是FBDialogDelegate,但对话框永远不会触发request:didReceiveResponse: 确实似乎提要对话框已被半弃用。看起来@"name" 键不再显示在对话框上(尽管它已发布在用户的墙上)
    • 尝试制作单独的代表,而不是像示例中显示的那样创建名为 self 的代表。
    • 您在[_facebook dialog:@"feed" andParams:params andDelegate:self]; 中使用的委托是FBDialogDelegate,而不是FBRequestDelegate。所以它应该触发像- (void)dialogDidComplete:(FBDialog *)dialog;这样的方法,而不是request:didReceiveResponse:
    【解决方案2】:

    我认为你可以使用 FBDialogDelegate 的- (void)dialogDidComplete:(FBDialog *)dialog; 方法来做到这一点。

    【讨论】:

      【解决方案3】:

      +1 为 Hlung 和 DMCS 提供帮助,但看起来提要对话框越来越被弃用,并且处理正确的回调很繁琐(不可能?)。 另外,FB 文档不是最新的。

      所以我最终使用了 (void)requestWithGraphPath 而不是 (void)dialog,这需要额外的权限才能在用户的墙上发帖,但使用以下 2 个回调效果更好:

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

      【讨论】:

        【解决方案4】:

        与您的问题有点相关 - 我试图找出哪个对话已完成。

        您可以检测对话框的参数,并检查它是哪一个。我遇到了这个问题,因为我发送了各种对话,并且想知道另一端哪个成功与否。

        - (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
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2012-08-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-28
          • 1970-01-01
          相关资源
          最近更新 更多