Search code examples
facebook-ios-sdkfbdialogs

How [FBDialogs canPresentShareDialogWithParams:nil] works?


Does anyone make [FBDialogs canPresentShareDialogWithParams:nil] works properly ? It's always returning me NO. What should I put in params ?

    if ([FBDialogs canPresentShareDialogWithParams:nil]) {
    NSURL* url = [NSURL URLWithString:@"http://www.google.fr"];
    [FBDialogs presentShareDialogWithLink:url
                                  handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {
                                      if(error) {
                                          NSLog(@"Error: %@", error.description);
                                      } else {
                                          NSLog(@"Success!");
                                      }
                                  }];
} else {
    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
        SLComposeViewController *fbComposer = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
        [fbComposer setInitialText:@"Google rocks !"];
        [self presentViewController:fbComposer animated:YES completion:nil];
    } else {
        [[[UIAlertView alloc] initWithTitle:@"Informations" message:@"You have to be registered into the settings of your phone in order to share" delegate:nil cancelButtonTitle:@"Close" otherButtonTitles:nil] show];
    }
}

Solution

  • According to the HelloFacebookSample from the SDK (and my own experience!):

    FBShareDialogParams *p = [[FBShareDialogParams alloc] init];
    p.link = [NSURL URLWithString:@"http://developers.facebook.com/ios"];
    BOOL canShareFB = [FBDialogs canPresentShareDialogWithParams:p];
    

    canShareFB will return YES if the Facebook app is installed in the system; returns NO if no Facebook app is found.