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