2013-07-05 36 views
5

Có thể tìm thấy sự hiện diện trực tuyến của bạn bè của tôi (trực tuyến, tránh xa hoặc lỗi) với Facebook SDK không?Hiện diện trực tuyến của bạn bè - Facebook SDK 3

Sử dụng FQL tôi có thể làm điều đó như thế này:

SELECT uid, name,pic_small,pic_big,online_presence FROM user 
    WHERE online_presence IN ('active') AND uid IN 
    (SELECT uid2 FROM friend WHERE uid1 = me())order by name 

Nhưng có một cách để làm điều đó trong facebook SDK, có thể sử dụng một cái gì đó như thế này:

[FBRequest requestForGraphPath:@"some/end/point/that/I/am/missing"] 

Bất kỳ trợ giúp đánh giá cao. Cảm ơn.

+0

Tôi có cùng một vấn đề ở đây – Anand

Trả lời

2

Xin lỗi vì đến trễ để đăng nó ở đây ... Tôi đã giải quyết vấn đề này bản thân mình, đây là giải pháp của tôi:

- (void)getFriendsOnlinePresence 
{ 

NSString* fql1 = [NSString stringWithFormat:@"SELECT uid,pic_square, name,online_presence FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) ORDER BY name"]; 
NSMutableDictionary * params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
           fql1, @"q", 
           nil]; 
[FBSession openActiveSessionWithAllowLoginUI:NO]; 
[FBRequestConnection startWithGraphPath:@"fql" 
          parameters:params 
          HTTPMethod:@"GET" 
         completionHandler:^(FBRequestConnection *connection, 
              id result, 
              NSError *error) { 
          if (error) { 
           NSLog(@"Error: %@", [error localizedDescription]); 
          } else { 
           NSLog(@"Result: %@", result); 
           } 
          } 
//Notify via notification center 
         }]; 

} 
0

Nếu bạn có thể làm điều đó trong FQL sau đó nhận được nó để làm việc trong SDK chỉ đơn giản là vấn đề tìm ra các truy vấn đúng. truy vấn của bạn

SELECT uid, name,pic_small,pic_big,online_presence FROM user 
    WHERE online_presence IN ('active') AND uid IN 
    (SELECT uid2 FROM friend WHERE uid1 = me()) order by name 

được thực hiện như graph.facebook.com/fql?q=SELECT uid, name,pic_small,pic_big,online_presence FROM user WHERE online_presence IN ('active') AND uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) order by name cơ bản HTTP GET /fql?q=<QUERY>

Vì vậy, tôi tin rằng chỉ cần thiết lập đường dẫn như fql trong requestForGraphPath

FBRequest *fql = [FBRequest requestForGraphPath:@"fql"]; 
[fql.parameters setObject:@"SELECT uid, name,pic_small,pic_big,online_presence FROM user WHERE online_presence IN ('active') " 
          @"AND uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) order by name" 
        forKey:@"q"] 

Các tài liệu mới nhất mặc dù chương trình ví dụ với startWithGraphPath dưới FBRequestConnection

NSString *query = 
    @"SELECT uid, name,pic_small,pic_big,online_presence FROM user WHERE online_presence IN ('active') " 
    @"AND uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) order by name"; 
    // Set up the query parameter 
    NSDictionary *queryParam = @{ @"q": query }; 
    // Make the API request that uses FQL 
    [FBRequestConnection startWithGraphPath:@"/fql" 
           parameters:queryParam 
           HTTPMethod:@"GET" 
          completionHandler:^(FBRequestConnection *connection, 
               id result, 
               NSError *error) { 
     if (error) { 
      NSLog(@"Error: %@", [error localizedDescription]); 
     } else { 
      NSLog(@"Result: %@", result); 
     } 
    }]; 

Nguồn: https://developers.facebook.com/docs/howtos/run-fql-queries-ios-sdk/

Các vấn đề liên quan