对于批处理请求,似乎所有参数都作为relative_url的一部分进行转义,如果omit_response_on_success设置为@(false),则app将因此消息崩溃: - [__ NSCFNumber length]:无法识别的选择器
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"
,则此操作不会输出。有什么想法吗?
答案 0 :(得分:1)
是的,SDK目前不支持此选项,请务必在https://developers.facebook.com/bugs上提交功能请求。
答案 1 :(得分:0)
这不应该是参数,而是请求的JSON主体中的键值,如docs中所述。我相信问题是如何在iOS SDK中设置键值,因为我们无法访问请求的主体。据我所知,没有办法,但我不确定这是不是一个错误。
答案 2 :(得分:0)
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