1

我正在从我的 iOS 应用程序发送 Facebook 应用程序邀请,并尝试使用块实现成功/失败流程。

我创建了一个类来包装我与 Facebook SDK 的通信,它公开了一个发送邀请方法。

在该方法中,我有以下代码:

[self.facebook dialog:@"apprequests"
            andParams:params
          andDelegate:self];

文档中所述。

我的包装类符合 FBDialogDelegate 协议,并且我实现了 5 个委托方法:

dialog:(FBDialog *)dialog didFailWithError:(NSError *)error, 
dialogCompleteWithUrl:(NSURL *)url, 
dialogDidComplete:(FBDialog *)dialog, 
dialogDidNotCompleteWithUrl:(NSURL *)url 
dialogDidNotComplete:(FBDialog *)dialog

问题是无论用户取消对话还是发送请求,唯一被调用的方法是 dialogCompleteWithUrl:(NSURL *)url 方法。谁能解释一下?

4

1 回答 1

2

这似乎是一个已被多次报告悬而未决的问题。当用户按下取消按钮时调用 didComplete 的事实确实是一个有效的操作,因此调用 didComplete 是设计使然。文档可能已过时,我们有修复它的任务,但在我们的开发人员网站上报告文档错误将使您能够跟踪进度。

因此,要回答您的问题,如果用户按下“x”按钮,它应该调用 didNotComplete。用户按下发送或取消将调用 didComplete,因为它是这样设计的。

但是,此人为 FBDialog 提出了一个很好的解决方法,您可能可以在其中执行类似的操作,例如在成功时检查 URL 的值与在用户按下取消时检查 URL 的值,并进行 if 检查来检查这种情况。

希望这可以帮助。

于 2012-12-21T19:11:11.603 回答