2015-03-13 58 views
-1

我试图在Facebook上分享图片,但我不能。这是我正在使用的代码:如何在iOS上分享照片到Facebook?

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { 
    SLComposeViewController * fbSheetOBJ = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 

    SLComposeViewControllerCompletionHandler myBlock = 
    ^(SLComposeViewControllerResult result){ 
     [fbSheetOBJ dismissViewControllerAnimated:YES completion:nil]; 
    }; 
    fbSheetOBJ.completionHandler = myBlock; 

    [fbSheetOBJ addURL:[NSURL URLWithString:@"http://www.test.com"]]; 
    [fbSheetOBJ setInitialText:@"Post from my iOS application"]; 
    [fbSheetOBJ addImage:[UIImage imageNamed:@"download.jpeg"]]; 

    [self presentViewController:fbSheetOBJ animated:YES completion:Nil]; 
} 
+0

你确定[UIImage imageNamed:@“download.jpeg”]在那里。检查是否([UIImage imageNamed:@“download.jpeg”])这个 – DilumN 2015-03-13 13:54:04

回答

0

如果([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]){

SLComposeViewController * mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

  NSString *desc = @"the Text what you want to post in in facebook";     
      [mySLComposerSheet addURL:[NSURL URLWithString:@"yourLink"]]; 
      [mySLComposerSheet setInitialText:desc]; 
      //convert any type of image to png format 

//图片URL在Facebook上发布。我们可以通过下面的例子来介绍一下NSData的数据类型:[NSURL URLWithString:[self.imageurl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];

  UIImage *image = [UIImage imageWithData:data]; 
      data = UIImagePNGRepresentation(image); 
      UIImage *pngImage = [UIImage imageWithData:data]; 



      // image convertion ends.. 

      [mySLComposerSheet addImage: image]; 

      [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) { 

       switch (result) { 
        case SLComposeViewControllerResultCancelled: 

        alert = [[UIAlertView alloc]initWithTitle:@"Cancelled" message:@"You Cancelled posting the Deal." delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles: nil]; 
         [alert show]; 
         [alert release]; 
         break; 
        case SLComposeViewControllerResultDone: 

         alert1 = [[UIAlertView alloc]initWithTitle:@"Success" message:@"The Deal was posted successfully." delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles: nil]; 
         [alert1 show]; 
         [alert1 release]; 
         break; 

        default: 
         break; 
       } 
      }]; 

      [self presentViewController:mySLComposerSheet animated:YES completion:nil]; 
     } 
+0

如何将图像转换为网址 – 2015-03-13 14:07:53

+0

要么共享本地图像,要么从互联网 – 2015-03-16 06:37:39

+0

如果它是本地图像,你可以转换成NSData,然后你可以发送。 – 2015-03-16 06:45:58

0

尝试此

如果([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]){

SLComposeViewController * mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

  NSString *desc = @"the Text what you want to post in in facebook";     
      [mySLComposerSheet addURL:[NSURL URLWithString:@"yourLink"]]; 
      [mySLComposerSheet setInitialText:desc]; 
      //convert any type of image to png format 

//图片URL在Facebook上发布。我们可以通过下面的例子来介绍一下NSData的数据类型:[NSURL URLWithString:[self.imageurl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];

  UIImage *image = [UIImage imageWithData:data]; 
      data = UIImagePNGRepresentation(image); 
      UIImage *pngImage = [UIImage imageWithData:data]; 



      // image convertion ends.. 

      [mySLComposerSheet addImage: image]; 

      [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) { 

       switch (result) { 
        case SLComposeViewControllerResultCancelled: 

        alert = [[UIAlertView alloc]initWithTitle:@"Cancelled" message:@"You Cancelled posting the Deal." delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles: nil]; 
         [alert show]; 
         [alert release]; 
         break; 
        case SLComposeViewControllerResultDone: 

         alert1 = [[UIAlertView alloc]initWithTitle:@"Success" message:@"The Deal was posted successfully." delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles: nil]; 
         [alert1 show]; 
         [alert1 release]; 
         break; 

        default: 
         break; 
       } 
      }]; 

      [self presentViewController:mySLComposerSheet animated:YES completion:nil]; 
     }