Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Facebook应用程序邀请代表团混乱_Ios_Facebook_Facebook App Requests - Fatal编程技术网

Ios Facebook应用程序邀请代表团混乱

Ios Facebook应用程序邀请代表团混乱,ios,facebook,facebook-app-requests,Ios,Facebook,Facebook App Requests,我正在从我的iOS应用程序发送Facebook应用程序邀请,并尝试使用块实现成功/失败流 我创建了一个类来包装我与Facebook SDK的通信,该SDK公开了一个send-invite方法 在该方法中,我有以下代码: [self.facebook dialog:@"apprequests" andParams:params andDelegate:self]; 正如在报告中所解释的那样 我的包装器类符合FBDialogDelegate协议,我实现了

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

我创建了一个类来包装我与Facebook SDK的通信,该SDK公开了一个send-invite方法

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

[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方法。
有人能解释一下吗

这似乎是一个一直存在的悬而未决的问题。当用户按下cancel按钮时调用didComplete这一事实确实是一个有效的操作,因此根据设计调用didComplete。文档可能已经过时,我们有一项任务来修复它,但是在我们的开发人员站点上报告文档错误将允许您跟踪进度

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

但是,对于FBDialog,您可能可以执行类似的操作,例如在URL成功时检查URL的值,而不是在用户按下“取消”时检查URL的值,并进行if检查以检查这种情况


希望这能有所帮助。

据我所知,如果对话框通过“X”按钮关闭,则应该调用dialogDidComplete,不是吗?是否从主线程打开对话框?主线程-当然,@lgy-但我如何知道它是否失败?didComplete意味着成功(但一直都在打电话,而不仅仅是在成功的时候)谢谢你的明智回答,杰西