我正在从我的iOS应用程序发送一个Facebook app-invite,并尝试使用块实现一个成功/失败流程。
我已经创建了一个类来包装我与Facebook SDK的通信,它公开了一个send invite方法。
在该方法中,我有以下代码:
[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方法。有人能解释这个吗?
发布于 2012-12-22 03:11:12
这似乎是一个悬而未决的问题,已经reported了几个times。事实上,当用户按下cancel按钮时调用didComplete确实是一个有效的操作,所以调用didComplete是经过设计的。
因此,为了回答你的问题,如果用户按下'x‘按钮,它应该调用didNotComplete。用户按下send或cancel将调用didComplete,因为它是这样设计的。
但是,FBDialog的this person came up with a good workaround可能会做类似的事情,比如检查成功时的URL值与用户按下取消时的URL值,并使用if检查来检查这种情况。
希望这能有所帮助。
https://stackoverflow.com/questions/13934815
复制相似问题