Skip to content

Instantly share code, notes, and snippets.

@victorchee
Created August 12, 2015 01:21
Show Gist options
  • Save victorchee/04d7ef53fad56b747c09 to your computer and use it in GitHub Desktop.
Save victorchee/04d7ef53fad56b747c09 to your computer and use it in GitHub Desktop.
Social share in iOS
#import "SocialShare.h"
#import <Social/Social.h>
@interface SocialShare()
{
SLComposeViewController *composeViewController;
}
@end
@implementation SocialShare
- (id)init
{
if (self = [super init]) {
;
}
return self;
}
+ (SocialShare *)sharedSocialShare
{
__strong static SocialShare *share = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
share = [[self alloc] init];
});
return share;
}
- (void)shareToTwitterWithRootViewController:(UIViewController *)controller title:(NSString *)title content:(NSString *)content
{
[self shareWithServiceType:SLServiceTypeTwitter
rootViewController:controller
title:title
content:content];
}
- (void)shareToFacebookWithRootViewController:(UIViewController *)controller title:(NSString *)title content:(NSString *)content
{
[self shareWithServiceType:SLServiceTypeFacebook
rootViewController:controller
title:title
content:content];
}
- (void)shareToSinaWeiboWithRootViewController:(UIViewController *)controller title:(NSString *)title content:(NSString *)content
{
[self shareWithServiceType:SLServiceTypeSinaWeibo
rootViewController:controller
title:title
content:content];
}
- (void)shareByActivityWithRootViewController:(UIViewController *)controller title:(NSString *)title content:(NSString *)content
{
NSArray *activityitems = @[[title stringByAppendingFormat:@"\n%@", content]];
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityitems applicationActivities:nil];
[controller presentViewController:activityController animated:YES completion:^{
;
}];
}
- (void)shareWithServiceType:(NSString *)serviceType rootViewController:(UIViewController *)controller title:(NSString *)title content:(NSString *)content
{
if([SLComposeViewController isAvailableForServiceType:serviceType])
{
composeViewController = [SLComposeViewController composeViewControllerForServiceType:serviceType];
[composeViewController setInitialText:[title stringByAppendingFormat:@"\n%@", content]];
[composeViewController addURL:[NSURL URLWithString:@"http://victorchee.github.com/"]];
[controller presentViewController:composeViewController animated:YES completion:^{
;
}];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Oops!"
message:@"Social service is unavailable."
delegate:nil
cancelButtonTitle:@"Don't send it."
otherButtonTitles:nil, nil];
[alert show];
alert = nil;
}
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment