2012-01-16 4 views
12

앱을 설치 한 친구 목록을 가져 오는 방법은 이미 facebook ios API가 있습니까? 나는 기본적으로 "친구와의 단어"와 비슷한 것을 요구합니다. 친구들이 게임을하고있는 친구를 결정할 수 있습니다. 몇 가지 여분의 데이터베이스 사용이 필요하지만 어쩌면 FB API가 이런 종류의 쿼리를 위해 내장 된 것을 원했던 하나의 솔루션이 있습니다.iOS facebook 친구가 앱을 설치했는지 확인하십시오.

+1

관련을 : [에서 FQL을 사용하는 방법 'iOS SDK'] (http://stackoverflow.com/questions/4941430/fql-and-graph-api-in-ios) – darvids0n

답변

10

FBFriendPickerDelegate 위임 클래스를 작성하고 우선이 기능 : 앱을 설치하지 않은 사용자의 경우

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

installed 필드 nil 될 것입니다,하지만 당신은 당신이 데이터를로드 할 때이를 요청해야 :

self.friendsController = [[FBFriendPickerViewController alloc] initWithNibName:nil bundle:nil]; 
//... 
NSSet *fields = [NSSet setWithObjects:@"installed", nil]; 
self.friendPickerController.fieldsForRequest = fields; 
//... 
[self.friendsController loadData]; 
+0

어떻게 테스트 할 수 있습니까? 나는 시뮬레이터에서 테스트하고 싶다. 하지만 지금 당장 개발중인 앱을 갖고있는 fb 친구 목록에있는 내 친구는 없습니다. 나는 비어있는 목록을 얻고있다 (refrence : 친구 선택기 컨트롤러 샘플). 어떻게하면 응용 프로그램 사용자 목록에 표시 될 수있는 더미 사용자 (fb friend)를 만들 수 있습니까? – Rakesh

+0

페이스 북으로 이동하여 새 사용자를 등록하고 친구를 친구 계정에 추가 한 다음 자신의 계정에 앱을 설치하십시오. 나는 그것이 분명해야한다고 생각했다. – pckill

+0

그래, 내가 가지고있어 .. 응답 주셔서 감사합니다 .. 페이스 북은 사용자가 페이스 북에 아이오스 앱을 사용하여 로그인 할 때 자동으로 참조를 저장합니다 .. – Rakesh

2

나는 사용자로부터 친구를 사용하여 앱을 얻으려면이 코드를 사용했습니다.

facebook은 FB Connect와 함께 제공되는 Facebook 클래스입니다.

NSString *fql = [NSString stringWithFormat:@"SELECT name,uid, pic_small FROM user WHERE is_app_user = 1 AND uid IN (SELECT uid2 FROM friend WHERE uid1 = %@) order by concat(first_name,last_name) asc",userId,userId]]; 

NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:fql ,@"query", [facebook accessToken], @"access_token", nil]; 

[facebook requestWithMethodName:@"fql.query" andParams:params andHttpMethod:@"GET" andDelegate:self]; 
+0

꽤 우아 해 보이지만 FQL에 익숙하지 않습니다. 그들이 실행중인 앱인지 어떻게 판단 할 수 있습니까? 앱 ID가 필요하다고 생각했습니다. 또는 is_app_user는 무엇입니까? – Firefly

+0

iOS 용 Facebook Connect를 사용하는 경우 인스턴스화 할 때 앱 ID를 설정해야합니다. facebook = [[Facebook alloc] initWithAppId : yourAppId] ;. 그 후에 모든 귀하의 요청은 귀하의 appid로 식별됩니다. is_app_user는 특정 사용자가 요청을 보낸 앱을 설치했는지 알려주는 플래그입니다. –

+0

굉장합니다. 명확히 해 주셔서 감사합니다. – Firefly

9

나는 fql이 약간 복잡하기 때문에 FBRequest에서이 함수를 사용하여 Graph API를 호출한다. LVE 페이스 북 SDK 3.5

+ (FBRequest *)requestWithGraphPath:(NSString*)graphPath parameters:(NSDictionary*)parameters HTTPMethod:(NSString*)HTTPMethod; 

그리고 코드에서이 문제는 다음과 같습니다

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

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



}]; 

당신은 매개 변수를 사전에 모든 관심 분야를 넣을 수 있습니다. 및 SDK 참조에 따라 유형을 포함하는 객체 (항상 "사용자"), ID (사용자의 ID) 및 선택적으로 설치된 필드 (항상 반환되는 경우 true). 사용자가 응용 프로그램을 설치 한 경우 설치된 필드는 그렇지 않으면 반환 된 객체

+0

코드를 사용하여 우리는 모든 친구를 얻습니다. 그래서 어떻게 앱 사용자를 얻을 수 있습니까? –

+0

@kirtimali는 반환 된 객체의 "installed"필드를 확인합니다. – DeXter

+0

고맙습니다. 내 솔루션을 설립했습니다. –

1

쉬운 용액에 FBFriendPickerDelegate 프로토콜 구현

- (BOOL)friendPickerViewController: shouldIncludeUser: 

방법을 사용의 일부가 아닌, 리턴 최신 3.5.1 나/친구를 가져올 때 "설치됨"필드를 기반으로 친구를 목록에 포함할지 여부를 대리인에게 묻는 Facebook SDK (2013 년 6 월).

친구가 호출 응용 프로그램의 사용자 인 경우 설치된 필드가 있습니다 (true).

당신은 다음과 같이 사용할 수 있습니다

- (BOOL)friendPickerViewController:(FBFriendPickerViewController *)friendPicker 
       shouldIncludeUser:(id <FBGraphUser>)user { 
     return [[user objectForKey:@"installed"] boolValue];  
} 

중요! 당신은 요청과 그 위임에 대해 friendPicker을 알리기 위해 필드를 포함하는 다음을 포함해야한다 :

self.fieldsForRequest = [NSSet setWithObject:@"installed"]; 
    self.delegate = self; 

당신은 애플 리케이션 만 친구가 그래프 API를 사용하여 디스플레이를 설치 한 그래프 API 광고 Explorer를 사용하여 확인할 수 있습니다 탐색기를 실행하여 쿼리를 입력하십시오.

me/friends?필드는

을 설치 = 당신은 다시 사용자 중 하나가 (참) 응용 프로그램을 설치 한이 같은 친구의 목록을 얻을 수 있습니다 :

... 
{ 
    "id": "100002656xxxxxx" 
}, 
{ 
    "installed": true, 
    "id": "100004366xxxxxx" 
}, 
... 
관련 문제