0

My requirement is I need to post on my Facebook wall through my application with privacy setting (notifying particular friends) how to achieve this I have followed the following code

-(void)sendNotification

{

    CoreDataManager *coremanagerobj = [[CoreDataManager alloc]init];
    NSArray *useridarray = [coremanagerobj GetAllMembersList]; 
    NSMutableArray *arraylist = [[NSMutableArray alloc]init]; // it will have the selected friends id
    NSMutableDictionary  *dict = [[NSMutableDictionary alloc]init];

    for (NSManagedObject *obj in useridarray)
    {
        [ arraylist addObject:[obj valueForKey:@"memberId"]];
    }

    [dict setValue:@"CUSTOM" forKey:@"value"];
    [dict setValue:arraylist forKey:@"allow"];

    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict
                                                       options:NSJSONWritingPrettyPrinted 
                                                         error:&error];
    NSString *jsonString;
    if (! jsonData) {
        NSLog(@"Got an error: %@", error);
    } else {
        jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    }

    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   @"sending notification", @"message",@"Posted via testApp", @"description",jsonData ,@"privacy",
                                   nil];

    // Make the request
    if ([FBSession.activeSession isOpen])
    {
        [FBSession openActiveSessionWithPublishPermissions:[NSArray arrayWithObject:@"publish_actions"]
                                           defaultAudience:FBSessionDefaultAudienceFriends
                                              allowLoginUI:YES
                                         completionHandler:^(FBSession *session, FBSessionState status, NSError *error)
         {
             if (!error && status == FBSessionStateOpen)
             {
                 [FBRequestConnection startWithGraphPath:@"/me/feed"
                                              parameters:params
                                              HTTPMethod:@"POST"
                                       completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
                  {
                      if (!error)
                      {
                          // Link posted successfully to Facebook
                          NSLog(@"Result: %@", result);
                      }
                  }];

             }
         }];

    }
}

the Post is not getting posted in FaceBook.
I tried to debug using Breakpoint.
It is showing "error

NSError *domain: @"com.facebook.sdk" - code: 5  0x000000010958d110"

If any one knows the solution kindly please help me Thanks in advance...

Larme
  • 24,190
  • 6
  • 51
  • 81
Peer Mohamed Thabib
  • 636
  • 2
  • 9
  • 29

1 Answers1

0

I changed the code like this its working for me!

   CoreDataManager *coremanagerobj = [[CoreDataManager alloc]init];
        NSArray *useridarray = [coremanagerobj GetAllMembersList];
        NSString *stringlist = [[NSString alloc]init];
        NSMutableDictionary  *dict = [[NSMutableDictionary alloc]init];

    for (int i=0;i<useridarray.count;i++)
    {
        NSManagedObject *obj = [useridarray objectAtIndex:i];
        NSString *value = [obj valueForKey:@"memberId"];

        if (i==[useridarray count]-1) {
            stringlist = [ stringlist stringByAppendingString:[NSString stringWithFormat:@"%@",value]];
        }
        else
        {
            stringlist =  [ stringlist stringByAppendingString:[NSString stringWithFormat:@"%@,",value]];
        }
    }

[dict setValue:@"CUSTOM" forKey:@"value"];
    [dict setValue: stringlist forKey:@"allow"];

    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict
                                                       options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
                                                         error:&error];
    NSString *jsonString;
    if (! jsonData) {
        NSLog(@"Got an error: %@", error);
    } else {
        jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    }

    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   @"sending notification", @"message",@"Posted via testApp", @"description", jsonString,@"privacy",
                                   nil];

    // Make the request
    if ([FBSession.activeSession isOpen])
    {
        [FBSession openActiveSessionWithPublishPermissions:[NSArray arrayWithObject:@"publish_actions"]
                                           defaultAudience:FBSessionDefaultAudienceFriends
                                              allowLoginUI:YES
                                         completionHandler:^(FBSession *session, FBSessionState status, NSError *error)
         {
             if (!error && status == FBSessionStateOpen)
             {
                 [FBRequestConnection startWithGraphPath:@"/me/feed"
                                              parameters:params
                                              HTTPMethod:@"POST"
                                       completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
                  {
                      if (!error)
                      {
                          // Link posted successfully to Facebook
                          NSLog(@"Result: %@", result);
                      }
                  }];

             }
         }];

    }
}
Peer Mohamed Thabib
  • 636
  • 2
  • 9
  • 29