0

看来批量的要求,所有参数都转义为relative_url的部分,如果omit_response_on_success设置为@(假),应用程序将与此消息崩溃: - [__ NSCFNumber长度]:无法识别选择的Facebook SDK 3.0的iOS:无法设置omit_response_on_success批量请求

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

是3.0版本的Facebook SDK还是iOS SDK? – ThomasW 2012-08-08 07:31:24

+0

它是今天发布的facebook SDK 3.0。 – Tao 2012-08-08 07:35:35

回答

0

这不应该是一个参数,但在该请求的JSON主体上的键 - 值,如在docs指出。我相信问题在于如何在iOS SDK中设置该键值,因为我们无法访问请求的主体。从我可以告诉我没有办法做到这一点,但我不确定这是否是一个错误。

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