// объявляем массив в заголовочном файле, который будет содержать список всех друзей -
NSMutableArray * m_allFriends;
// выделяем и инициализируем массив только один раз
m_allFriends = [[NSMutableArray alloc] init];
В FB SDK 3.0 и API версии выше 2.0 вам необходимо вызвать функцию ниже (график api со мной / друзьями), чтобы получить список друзей FB, использующих то же приложение.
// найдите друзей, которые используют приложение
-(void) getMineFriends
{
[FBRequestConnection startWithGraphPath:@"me/friends"
parameters:nil
HTTPMethod:@"GET"
completionHandler:^(
FBRequestConnection *connection,
id result,
NSError *error
) {
NSLog(@"me/friends result=%@",result);
NSLog(@"me/friends error = %@", error.description);
NSArray *friendList = [result objectForKey:@"data"];
[m_allFriends addObjectsFromArray: friendList];
}];
}
Примечание: 1) Предел по умолчанию для количества друзей, возвращаемых по вышеуказанному запросу, составляет 25.
2) Если в результате появляется следующая ссылка, это означает, что есть еще несколько друзей, которых вы получите в следующем запросе и так далее.
3) В качестве альтернативы вы можете изменить лимит (уменьшить лимит, превысить лимит с 25) и передать его в параметре.
/////////////////////////////////////////////// /////////////////////////
Для друзей не из приложения -
// m_invitableFriends - глобальный массив, который будет содержать список приглашенных друзей
Также, чтобы получить друзей не из приложения, вам нужно использовать (/ me / invitable_friends), как показано ниже -
- (void) getAllInvitableFriends
{
NSMutableArray *tempFriendsList = [[NSMutableArray alloc] init];
NSDictionary *limitParam = [NSDictionary dictionaryWithObjectsAndKeys:@"100", @"limit", nil];
[self getAllInvitableFriendsFromFB:limitParam addInList:tempFriendsList];
}
- (void) getAllInvitableFriendsFromFB:(NSDictionary*)parameters
addInList:(NSMutableArray *)tempFriendsList
{
[FBRequestConnection startWithGraphPath:@"/me/invitable_friends"
parameters:parameters
HTTPMethod:@"GET"
completionHandler:^(
FBRequestConnection *connection,
id result,
NSError *error
) {
NSLog(@"error=%@",error);
NSLog(@"result=%@",result);
NSArray *friendArray = [result objectForKey:@"data"];
[tempFriendsList addObjectsFromArray:friendArray];
NSDictionary *paging = [result objectForKey:@"paging"];
NSString *next = nil;
next = [paging objectForKey:@"next"];
if(next != nil)
{
NSDictionary *cursor = [paging objectForKey:@"cursors"];
NSString *after = [cursor objectForKey:@"after"];
//NSString *before = [cursor objectForKey:@"before"];
NSDictionary *limitParam = [NSDictionary dictionaryWithObjectsAndKeys:
@"100", @"limit", after, @"after"
, nil
];
[self getAllInvitableFriendsFromFB:limitParam addInList:tempFriendsList];
}
else
{
[self replaceGlobalListWithRecentData:tempFriendsList];
}
}];
}
- (void) replaceGlobalListWithRecentData:(NSMutableArray *)tempFriendsList
{
// replace global from received list
[m_invitableFriends removeAllObjects];
[m_invitableFriends addObjectsFromArray:tempFriendsList];
//NSLog(@"friendsList = %d", [m_invitableFriends count]);
[tempFriendsList release];
}