我正在从我的iOS应用程序发送Facebook应用程序邀请,并且正在尝试使用块实现成功/失败流程。
我创建了一个类来包装我与Facebook SDK的通信,它暴露了一个发送邀请方法。
在该方法中,我有以下代码:
[self.facebook dialog:@"apprequests"
andParams:params
andDelegate:self];
如documentation中所述。
我的包装类符合FBDialogDelegate协议,我已经实现了5个委托方法:
dialog:(FBDialog *)dialog didFailWithError:(NSError *)error,
dialogCompleteWithUrl:(NSURL *)url,
dialogDidComplete:(FBDialog *)dialog,
dialogDidNotCompleteWithUrl:(NSURL *)url
dialogDidNotComplete:(FBDialog *)dialog
问题是,当用户取消对话框或发送请求时,唯一被调用的方法是dialogCompleteWithUrl:(NSURL *)url方法。 有谁能解释一下?
答案 0 :(得分:2)
这似乎是reported几个times的一个突出问题。当用户按下取消按钮时调用didComplete的事实确实是一个有效的动作,因此设计中调用了didComplete。文档可能已过时,我们有一项任务要修复它,但在我们的开发人员站点上报告doc bug将允许您跟踪进度。
所以要回答你的问题,如果用户按下' x'按钮应该调用didNotComplete。用户按发送或取消将调用didComplete,因为它是这样设计的。
但是,对于FBDialog,this person came up with a good workaround你可以做类似的事情,比如在成功时检查URL的值与用户按下取消时的值,并检查是否检查该情况。
希望这有帮助。