2014-10-28 8 views
1

저는 iOS 개발자이며 현재 SLComposeViewController를 사용하여 Facebook/Twitter에서 게시물을 공유하고 있습니다. 내 문제는 하나의 게시물에 여러 이미지를 게시해야한다는 것입니다.Facebook/Twitter에서 SLComposeViewController를 사용하여 여러 이미지 게시?

다음과 같이 내가 이런 짓을했는지 :

위의 코드에서
SLComposeViewController* mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; 
[mySLComposerSheet setInitialText:textTobeShared]; 
mySLComposerSheet addURL:[NSURL URLWithString:@"http://click-labs.com/"]]; 
for(int count=0;count<imageArray.count;count++) 
     if([mySLComposerSheet addImage:[UIImage imageWithData:[imageArray objectAtIndex:count]]]) 

, imageArray 내가 게시 할 이미지의 배열입니다.

Facebook에서이 작업을 수행 할 때 모든 이미지가 별도의 게시물로 게시됩니다.

트위터의 경우 addImage 메서드는 첫 번째 이미지에만 true를 반환하고 다른 이미지의 경우 false를 반환합니다. 따라서 하나의 이미지 만 게시됩니다.

그래서 내 목표를 달성하는 방법을 알고 싶습니다. 그리고 단일 트윗에 여러 이미지를 게시하는 것이 가능합니다.

+0

트위터에서 트위터 당 하나의 이미지 만 게시 할 수 있습니다. 트위터에는 앨범 같은 것이 없습니다. –

+0

트위터에서이를 달성 할 방법이 없다고 확신하십니까? 이 문제와 관련된 문서가 있습니까? – Santosh

+0

트위터 사용자라면이 사실을 알게 될 것입니다. 각 짹짹 (다른 용어로 게시)에는 하나의 그림이 연결됩니다. –

답변

0

먼저 앨범을 만들어야한다고 생각합니다.

여기에 link to the facebook album API 설명서가 있습니다.

- (void)shareToFacebook { 
if (FBSession.activeSession.isOpen) { 
    NSLog(@"SESSION IS OPEN"); 

    [self createFacebookAlbum]; 
} else { 
    NSLog(@"SESSION IS NOT OPEN"); 
    NSArray* permissions = [NSArray arrayWithObject:@"email"]; 
    [FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState state, NSError *error) { 
     [self sessionStateChanged:session state:state error:error]; 

     if (error) { 
      /* handle failure */ 
      NSLog(@"error:%@, %@", error, [error localizedDescription]); 
      UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"There was a problem with your Facebook permissions." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
      [alert show]; 
     } 
     else if (state == FBSessionStateClosed || state == FBSessionStateClosedLoginFailed) { 
      [FBSession.activeSession closeAndClearTokenInformation]; 
     } 
     else if (state == FBSessionStateOpenTokenExtended || state == FBSessionStateOpen) { 
      if(!self.presentedFacebookSheet) { 
       [self performSelector:@selector(reauthorizeAndContinuePostToFacebook) withObject:nil afterDelay:0.5]; 
       self.presentedFacebookSheet = YES; 
      } 
     } 
     }]; 
    } 
} 

- (void)reauthorizeAndContinuePostToFacebook { 
    NSArray *permissions = [NSArray arrayWithObjects:@"publish_actions", nil]; 

    [[FBSession activeSession] requestNewPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceFriends completionHandler:^(FBSession *session, NSError *error) { 
     [self shareToFacebook]; 
    }]; 
} 

- (void)createFacebookAlbum { 
    NSMutableDictionary* parameters = [NSMutableDictionary dictionary]; 
    [parameters setObject:@"Test name" forKey:@"name"]; 
    [parameters setObject:@"Test message" forKey:@"message"]; 

    FBRequest* request = [FBRequest requestWithGraphPath:@"me/albums" parameters:parameters HTTPMethod:@"POST"]; 

    NSLog(@"creating facebook album"); 
    FBRequestConnection *connection = [[FBRequestConnection alloc] init]; 
    [connection addRequest:request 
     completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 
      if (!error) { 
       NSString* albumId = [result objectForKey:@"id"]; 
       NSLog(@"OK %@", albumId); 
      } 
      else { 
       NSLog(@"Error: %@",error.userInfo); 
      } 
     }]; 
    [connection start]; 
} 

- (void)sessionStateChanged:(FBSession *)session state:(FBSessionState) state error:(NSError *)error { 
    switch (state) { 
     case FBSessionStateOpen: 
     { 
      [[FBRequest requestForMe] startWithCompletionHandler: 
      ^(FBRequestConnection *connection, 
       NSDictionary<FBGraphUser> *user, 
       NSError *error) { 
       if (error) { 
        //error 
       } 
       else { 
        NSLog(@"User session found"); 
       } 
      }]; 
     } 
      break; 
     case FBSessionStateClosed: 
     case FBSessionStateClosedLoginFailed: 
      [FBSession.activeSession closeAndClearTokenInformation]; 
      break; 
     default: 
      break; 
    } 
} 
+0

SLComposeViewController를 사용하여 동일한 작업을 수행 할 수 없습니까? – Santosh

+0

재미 있고,이 게시물에서 문제/요구 사항은 완전히 반대입니다. http://stackoverflow.com/questions/14514179/facebook-ios6-integration-adds-image-to-album-and-not-separate-posts –

+0

예, 방금 질문을 보았습니다. 그러나 그것은 단일 이미지 게시물의 경우입니다. – Santosh