Sunday 15 September 2013

ios - Post multiple images using SLComposeViewController on Facebook/ Twitter? -



ios - Post multiple images using SLComposeViewController on Facebook/ Twitter? -

i ios developer , using slcomposeviewcontroller share post on facebook/twitter. issue have post multiple images in single post.

i have done follows:

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]]])

in above code, imagearray array of images want post.

when doing on facebook, images posted separate post.

while in case of twitter, addimage method returns true first images while in case of other images returns false. 1 image posted.

so want know how accomplish goal , possible post multiple images in single tweet.

i think need create album first.

here's link facebook album api documentation.

- (void)sharetofacebook { if (fbsession.activesession.isopen) { nslog(@"session open"); [self createfacebookalbum]; } else { nslog(@"session 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 problem 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; } }

ios objective-c iphone ios7 ios5

No comments:

Post a Comment