2013-06-27 8 views
4

Я отправил запрос на facebook. Он работает отлично, но я получаю запрос (уведомление) только в iPhone facebook App, а не в веб-приложении Facebook. Я хочу, чтобы как собственное приложение Facebook, так и веб-приложение получили уведомление. Как я могу это сделать?iOS: Отправка запроса Facebook

#pragma Sending Facebook app request 

- (NSDictionary*)parseURLParams:(NSString *)query { 
    NSArray *pairs = [query componentsSeparatedByString:@"&"]; 
    NSMutableDictionary *params = [[NSMutableDictionary alloc] init]; 
    for (NSString *pair in pairs) { 
     NSArray *kv = [pair componentsSeparatedByString:@"="]; 
     NSString *val = 
     [[kv objectAtIndex:1] 
     stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

     [params setObject:val forKey:[kv objectAtIndex:0]]; 
    } 
    return params; 
} 
- (void)sendRequest { 
    NSError *error; 
    NSData *jsonData = [NSJSONSerialization 
         dataWithJSONObject:@{ 
         @"social_karma": @"5", 
         @"badge_of_awesomeness": @"1"} 
         options:0 
         error:&error]; 
    if (!jsonData) { 
     NSLog(@"JSON error: %@", error); 
     return; 
    } 
    NSString *giftStr = [[NSString alloc] 
         initWithData:jsonData 
         encoding:NSUTF8StringEncoding]; 
    NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
            giftStr, @"data", 
            nil]; 

    // Display the requests dialog 
    [FBWebDialogs 
    presentRequestsDialogModallyWithSession:nil 
    message:@"Learn how to make your iOS apps social." 
    title:nil 
    parameters:params 
    handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) { 
     if (error) { 
      // Error launching the dialog or sending the request. 
      NSLog(@"Error sending request."); 
     } else { 
      if (result == FBWebDialogResultDialogNotCompleted) { 
       // User clicked the "x" icon 
       NSLog(@"User canceled request."); 
      } else { 
       // Handle the send request callback 
       NSDictionary *urlParams = [self parseURLParams:[resultURL query]]; 
       if (![urlParams valueForKey:@"request"]) { 
        // User clicked the Cancel button 
        NSLog(@"User canceled request."); 
       } else { 
        // User clicked the Send button 
        NSString *requestID = [urlParams valueForKey:@"request"]; 
        NSLog(@"Request ID: %@", requestID); 
       } 
      } 
     } 
    }]; 
} 

- (void)sendRequestClicked { 
    // Filter and only show friends using iOS 
    [self requestFriendsUsingDevice:@"iOS"]; 
} 


- (void)sendRequest:(NSArray *) targeted { 
    NSError *error; 
    NSData *jsonData = [NSJSONSerialization 
         dataWithJSONObject:@{ 
         @"social_karma": @"5", 
         @"badge_of_awesomeness": @"1"} 
         options:0 
         error:&error]; 
    if (!jsonData) { 
     NSLog(@"JSON error: %@", error); 
     return; 
    } 
    NSString *giftStr = [[NSString alloc] 
         initWithData:jsonData 
         encoding:NSUTF8StringEncoding]; 
    NSMutableDictionary* params = 
    [NSMutableDictionary dictionaryWithObjectsAndKeys:giftStr, @"data", 
    nil]; 

    // Filter and only show targeted friends 
    if (targeted != nil && [targeted count] > 0) { 
     NSString *selectIDsStr = [targeted componentsJoinedByString:@","]; 
     [params setObject:selectIDsStr forKey:@"suggestions"]; 
    } 

    // Display the requests dialog 
    [FBWebDialogs 
    presentRequestsDialogModallyWithSession:nil 
    message:@"Learn how to make your iOS apps social." 
    title:nil 
    parameters:params 
    handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) { 
     if (error) { 
      // Error launching the dialog or sending request. 
      NSLog(@"Error sending request."); 
     } else { 
      if (result == FBWebDialogResultDialogNotCompleted) { 
       // User clicked the "x" icon 
       NSLog(@"User canceled request."); 
      } else { 
       // Handle the send request callback 
       NSDictionary *urlParams = [self parseURLParams:[resultURL query]]; 
       if (![urlParams valueForKey:@"request"]) { 
        // User clicked the Cancel button 
        NSLog(@"User canceled request."); 
       } else { 
        // User clicked the Send button 
        NSString *requestID = [urlParams valueForKey:@"request"]; 
        NSLog(@"Request ID: %@", requestID); 
       } 
      } 
     } 
    }]; 
} 


- (void) requestFriendsUsingDevice:(NSString *)device { 
    NSMutableArray *deviceFilteredFriends = [[NSMutableArray alloc] init]; 
    [FBRequestConnection startWithGraphPath:@"me/friends" 
           parameters:[NSDictionary 
              dictionaryWithObjectsAndKeys: 
              @"id,devices", @"fields", 
              nil] 
           HTTPMethod:nil 
          completionHandler:^(FBRequestConnection *connection, 
               id result, 
               NSError *error) { 
           if (!error) { 
            // Get the result 
            NSArray *resultData = [result objectForKey:@"data"]; 
            // Check we have data 
            if ([resultData count] > 0) { 
             // Loop through the friends returned 
             for (NSDictionary *friendObject in resultData) { 
              // Check if devices info available 
              if ([friendObject objectForKey:@"devices"]) { 
               NSArray *deviceData = [friendObject 
                    objectForKey:@"devices"]; 
               // Loop through list of devices 
               for (NSDictionary *deviceObject in deviceData) { 
                // Check if there is a device match 
                if ([device isEqualToString: 
                 [deviceObject objectForKey:@"os"]]) { 
                 // If there is a match, add it to the list 
                 [deviceFilteredFriends addObject: 
                 [friendObject objectForKey:@"id"]]; 
                 break; 
                } 
               } 
              } 
             } 
            } 
           } 
           // Send request 
           [self sendRequest:deviceFilteredFriends]; 
          }]; 
} 
+0

Добро пожаловать в stackoverflow. Пожалуйста, рассмотрите следующие моменты, когда вы публикуете в SO с этого момента. 1) Используйте «Я», а не «я» при обращении к себе. 2) Кажется, вы не являетесь носителем английского языка, но, пожалуйста, не забудьте правильно разделить предложения и использовать «.» где должным образом. 3) [Вот как вы форматируете код в SO] (http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks) 4) [Пожалуйста, не используйте ' Привет ',' Спасибо 'и т. Д. В вашем сообщении] (http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts) – Krishnabhadra

+0

@ Кришнабхадра Спасибо – VinukondaPraveen

ответ

0

Вы можете получать уведомления только на веб-приложении Facebook, если приложение имеет приложение Facebook Canvas.

invitable_friends API доступен только для игр, которые реализации приложений на Facebook Canvas с помощью версии 2.0 API Graph.

Check here the full documentation

Canvas представляет собой раму, в которой поместить ваше приложение или игру прямо на Facebook.com на настольных компьютерах и ноутбуках.

Details about Canvas

Примечание: В документации вы найдете «свою игру», они означают «ваша игра или приложение».