iOS facebook检查朋友是否安装了应用程序

Fir*_*fly 12 iphone api facebook ios

有没有办法用facebook ios API获取安装了你的应用程序的朋友列表?我基本上需要类似"Words with Friends"的东西,他们可以确定哪些FB朋友正在玩游戏.我有一个解决方案,需要一些额外的数据库使用,但希望FB api可能内置了这种查询.

pck*_*ill 10

创建一个FBFriendPickerDelegate委托类并覆盖此函数:

-(BOOL)friendPickerViewController:(FBFriendPickerViewController *)friendPicker shouldIncludeUser:(id<FBGraphUser>)user{
    BOOL installed = [user objectForKey:@"installed"] != nil;
    return installed;
}
Run Code Online (Sandbox Code Playgroud)

对于未安装应用程序的用户,installed字段将是nil,但您必须在加载数据时请求它:

self.friendsController = [[FBFriendPickerViewController alloc] initWithNibName:nil bundle:nil];
//...
NSSet *fields = [NSSet setWithObjects:@"installed", nil];
self.friendPickerController.fieldsForRequest = fields;
//...
[self.friendsController loadData];
Run Code Online (Sandbox Code Playgroud)


小智 9

我觉得fql对我来说有点复杂,所以我在FBRequest中使用这个函数来调用Graph API来解决Facebook SDK 3.5中的这个问题

+ (FBRequest *)requestWithGraphPath:(NSString*)graphPath parameters:(NSDictionary*)parameters HTTPMethod:(NSString*)HTTPMethod;
Run Code Online (Sandbox Code Playgroud)

代码是:

FBRequest *request =  [FBRequest  requestWithGraphPath:@"me/friends"
                         parameters:@{@"fields":@"name,installed,first_name"}
                         HTTPMethod:@"GET"];

[request startWithCompletionHandler:^(FBRequestConnection *connection,
                                     id result,
                                      NSError *error){



}];
Run Code Online (Sandbox Code Playgroud)

您可以将所有有趣的字段放在参数字典中.并且根据SDK参考,包含类型的对象(这总是"用户"),id(用户的ID)和可选的已安装字段(如果返回则始终为true); 只有在用户安装了应用程序时才会返回已安装的字段,否则它不是返回对象的一部分