在新的Facebook 3.0中过滤FBFriendPickerViewController返回的朋友

时间:2012-08-17 18:53:35

标签: objective-c ios facebook

我在“{iOS 3”类型的http://developer.facebook.com上有一个Facebook应用程序,它使用新的Facebook iOS SDK 3.0连接到实际的iOS应用程序。

我怎么知道已经安装了该应用程序并授权Facebook应用程序的多个人是否也可以将它们放在某个列表中,但这不是我的问题,因为我知道有一个名为“已安装”的字段用户安装应用时返回true

因此,如果我想根据用户是否使用该应用来过滤FBFriendPickerViewController返回的朋友,那么我如何使用installed字段或其他内容来过滤朋友。

注意:我知道在哪里过滤好友(*)我需要的是我需要检查的字段或属性,以确保用户安装我的应用程序。

* - (BOOL)friendPickerViewController:(FBFriendPickerViewController *)friendPicker shouldIncludeUser:(id<FBGraphUser>)user

1 个答案:

答案 0 :(得分:0)

我找到了一种方法:

我创建了一个方法,将FQL发送给我需要的人(例如我的朋友,他们是男性)

然后使用以下方法将此请求返回的内容与FBFriendPickerViewController已存在的内容进行比较:

- (BOOL)friendPickerViewController:(FBFriendPickerViewController *)friendPicker shouldIncludeUser:(id<FBGraphUser>)user

请求:

NSDictionary *queryParam = [NSDictionary dictionaryWithObjectsAndKeys:@"query", @"q", nil];
[FBRequestConnection startWithGraphPath:@"/fql" parameters:queryParam HTTPMethod:@"GET" 
completionHandler:^(FBRequestConnection *connection,  id result, NSError *error) {
             if (error)
             {
                 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Oops" message:@"Some thing go wrong !, Try again" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

                 [alert show];
             }
             else
             {
                 NSArray *friendInfo = (NSArray *) [result objectForKey:@"data"];

                 for(int i = 0; i < [friendInfo count]; i++)
                 {
                     [self.friendsNames addObject:[[friendInfo objectAtIndex:i] objectForKey:@"name"]];
                 }
             }     
 }];

如您所见,我有NSArray存储已过滤的朋友,下一步是在上面的委托方法中对它们进行比较。

希望你觉得它很有用。