IOS: sending a Facebook request

I sent a request to facebook. It works fine, but I receive a request (notification) only in the iPhone facebook App, and not in the Facebook web application. I want both the Facebook native app and the web app to be notified. How can i do this?

#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]; }]; } 
+4
source share
1 answer

You can only receive notifications on the Facebook web application if your application has the Facebook Canvas application.

The invitable_friends API is only available for games that have Facebook Canvas using version 2.0 of the Graph API.

Check full documentation

Canvas is a frame in which you can directly place the Facebook.com application or game on desktop computers and laptops.

Canvas Details

Note. In the documentation you will find “your game”, they mean “your game or your application”.

0
source

Source: https://habr.com/ru/post/1488418/


All Articles