Ios 使用SLComposeViewController在Facebook/Twitter上发布多张图片?
我是一名iOS开发者,目前正在使用SLComposeViewController在Facebook/Twitter上分享帖子。我的问题是,我必须在一篇文章中发布多个图像 我的做法如下:Ios 使用SLComposeViewController在Facebook/Twitter上发布多张图片?,ios,objective-c,iphone,ios7,ios5,Ios,Objective C,Iphone,Ios7,Ios5,我是一名iOS开发者,目前正在使用SLComposeViewController在Facebook/Twitter上分享帖子。我的问题是,我必须在一篇文章中发布多个图像 我的做法如下: SLComposeViewController* mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; [mySLComposerSheet setInitia
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上这样做的时候,所有的图片都是作为一个单独的帖子发布的
对于Twitter,addImage方法仅对第一个图像返回true,而对于其他图像,它返回false。所以只发布了一张图片
因此,我想知道如何实现我的目标,是否可以在一条推文中发布多张图片。我认为您需要先创建一张相册 这是一份文件
- (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;
}
}
在twitter中,每个tweet只能发布一张图片。twitter上没有相册这样的东西。你确定在twitter上没有办法做到这一点吗。有关于这个问题的文档吗?如果你是twitter用户,你就会知道这一点。其他术语中的每一条推文都会有一张与之相关联的图片。事实上,我是推文新手,所以我对它一无所知。@girish_vr查看这篇推文博文。这应该已经是可能的了。使用SLComposeViewController不可能做同样的事情吗有趣的是,在这篇文章中,问题/需求完全相反。是的,我刚才看到了这个问题。但这是在单一图像后的情况。