How to share or post by mail, twitter and facebook from the current application?
Solution 1:
1. For Facebook.
FBGraph is a much better way to use the Facebook API in your application.
Download the FBGraph API documents folder and then add it to in your folder. Read the instructions on the Facebook developer site.
This is the sample code and let me know if you have any query about it.
2. For EMail
Add MessageUI.framework
in your project. Import the header file in your ViewController.h
file:
#import <MessageUI/MFMailComposeViewController.h>
Set the delegate:
UIViewController<MFMailComposeViewControllerDelegate>
And after that, open your mail composer like this:
-(void)yourEmailbuttonClick:(id)sender
{
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:@"Hello!! your subject here"];
// Set up recipients
UIImage *image = [UIImage imageNamed:@"anyImage.png"];
NSData *myData = UIImageJPEGRepresentation(image, 1.0);
[picker addAttachmentData:myData mimeType:@"image/jpg" fileName:@"image"];
[self presentModalViewController:picker animated:YES];
}
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
// Notifies users about errors associated with the interface
switch (result)
{
case MFMailComposeResultCancelled:
// message.text = @"Result: canceled";
break;
case MFMailComposeResultSaved:
// message.text = @"Result: saved";
break;
case MFMailComposeResultSent:
// message.text = @"Result: sent";
break;
case MFMailComposeResultFailed:
// message.text = @"Result: failed";
break;
default:
// message.text = @"Result: not sent";
break;
}
[self dismissModalViewControllerAnimated:YES];
}
3. For Twitter
Add Twitter.framework
in your project. Import the header file in your ViewController.h
file and import:
#import <Twitter/Twitter.h>
Now call the Twitter composer view like this:
-(void)yourTwitterbuttonClick:(id)sender
{
if([TWTweetComposeViewController canSendTweet])
{
UIImage *image = [UIImage imageNamed:@"anyImage.png"];
TWTweetComposeViewController *tweetViewController = [[TWTweetComposeViewController alloc] init];
// Set initial text
[tweetViewController setInitialText:@"your text here"];
if (image)
{
[tweetViewController addImage: image];
}
tweetViewController.completionHandler = ^(TWTweetComposeViewControllerResult result)
{
if(result == TWTweetComposeViewControllerResultDone)
{
// The user finished composing a tweet
alert.title=@"Status";
alert.message=@"Tweet sent";
[alert show];
}
else
if(result == TWTweetComposeViewControllerResultCancelled)
{
// The user cancelled composing a tweet
alert.title = @"Status";
alert.message = @"Tweet cancelled";
[alert show];
}
[self dismissViewControllerAnimated:YES completion:nil];
};
[self presentViewController:tweetViewController animated:YES completion:nil];
}
}
Solution 2:
Have a look at ShareKit.
This is a list of supported services:
Supported Services:
Delicious Email Facebook Google Reader Instapaper Pinboard Read It Later Tumblr Twitter
Solution 3:
You can also do this one by one.
Facebook http://developers.facebook.com/docs/reference/iossdk/
Twitter https://developer.apple.com/library/ios/#documentation/Twitter/Reference/TWTweetSheetViewControllerClassRef/Reference/Reference.html
Mail http://developer.apple.com/library/ios/#documentation/MessageUI/Reference/MFMailComposeViewController_class/Reference/Reference.html