似乎对于批处理请求,所有参数都作为relative_url的一部分进行转义,如果omit_response_on_success设置为 @(false),应用程序将崩溃并显示以下消息: -[__NSCFNumber长度]:无法识别的选择器
NSDictionary *parameters = [NSMutableDictionary dictionaryWithObjectsAndKeys: @(false), @"omit_response_on_success", nil];
FBRequest *request1 = [FBRequest requestWithGraphPath:self.graphPath
parameters:parameters
HTTPMethod:nil];
[newConnection addRequest:request1 completionHandler:handler batchEntryName:@"entryName"];
如果 graphPath 设置为 @"me/home?omit_response_on_success=0"
,则这些操作将不输出。有什么想法吗?
是的,SDK 目前不支持此选项,请务必为此在 https://developers.facebook.com/bugs 上提交功能请求。
这不应该是一个参数,而应该是一个键值,如文档中所述。我相信问题是如何在iOS SDK中设置该键值,因为我们无法访问请求的正文。据我所知,没有办法做到这一点,但我不确定这是否是一个错误。
Facebook不允许我们使用iOS SDK设置此标志,这非常烦人。 我花了几个小时试图找出一种方法,这是我想出的一个技巧。 它应该是相对安全的。 只需使用 RSFBRequestConnection 而不是 FBRequestConnection:
@interface RSFBRequestConnection : FBRequestConnection
@end
@implementation RSFBRequestConnection
- (NSMutableURLRequest *)urlRequest
{
NSMutableURLRequest *request = [super urlRequest];
NSData *body = request.HTTPBody;
NSString *bodyStr = [[NSString alloc] initWithData:body encoding:NSUTF8StringEncoding];
NSLog(@"%@", bodyStr);
NSString *fixed = [bodyStr stringByReplacingOccurrencesOfString:@""relative_url"" withString:@""omit_response_on_success":false,"relative_url""];
request.HTTPBody = [fixed dataUsingEncoding:NSUTF8StringEncoding];
return request;
}
@end