Important: The easiest way by far to share content from iOS app is to use UIActivityViewControler
. If this is not enough for you, than ShareKit might be useful. Beware though - ShareKit is rather dated, although kept updated as time permits. Some services might have changed their API's or deprecated their SDK's in the meantime. It is a lot of work to keep ShareKit updated, and urgent help is needed, so you are more than welcome to test, add issues or open pull requests.
ShareKit allows you to share content easily:
- (void)myButtonHandlerAction {
// Create the item to share (in this example, a url)
NSURL *url = [NSURL URLWithString:@"http://getsharekit.com"];
SHKItem *item = [SHKItem URL:url title:@"ShareKit is Awesome!" contentType:SHKURLContentTypeWebpage];
// Get the ShareKit action sheet
SHKActionSheet *actionSheet = [SHKActionSheet actionSheetForItem:item];
// ShareKit detects top view controller (the one intended to present ShareKit UI) automatically,
// but sometimes it may not find one. To be safe, set it explicitly
[SHK setRootViewController:self];
// Display the action sheet
SHKAlertController *alertController = [SHKAlertController actionSheetForItem:item];
[alertController setModalPresentationStyle:UIModalPresentationPopover];
UIPopoverPresentationController *popPresenter = [alertController popoverPresentationController];
popPresenter.barButtonItem = self.toolbarItems[1];
[self presentViewController:alertController animated:YES completion:nil];
}
Everything else (user authentication, API calls, shareUI etc) is handled by ShareKit. Moreover, you can use and customise SHKAccountsViewController (where users can login/logoff, displays username if someone is logged to a particular service) and SHKUploadsViewController (similar to safari downloads, works with sharers able to report progress). For a brief introduction, check the demo app. To know more about configuration options see DefaultSHKConfigurator.m. To know more about what type of content can be shared, see SHKItem.h. To find out what services and actions are supported, check Sharer implementations. To get a picture of what they are capable of check their .m (implementation) files, methods named:
+ (BOOL)canShareURL;
+ (BOOL)canShareImage;
+ (BOOL)canShareText;
+ (BOOL)canShareFile:(SHKFile *)file;
should tell you everything you need.
Documentation
The latest documentation and installation instructions can be found on the ShareKit Wiki. To get a preview of new features see Changelog.
!!! Updated new service creation guidelines for contributors + updated service templates are here !!!
ShareKit 2
In order to make it easier for new users to choose a canonical fork of ShareKit, the ShareKit community has decided to band together and take responsibility for collecting useful commits into what we're calling "ShareKit 2". It is now ready for you. It is the first officially stable version of ShareKit since February 2010, with more frequent updates expected.
Highlights:
- many new sharers
- new UI (currently used by Facebook, Plurk and LinkedIn, more to follow)
- iOS native social.framework based sharers
- optimised for easy updating (subproject library + 3rd party code as git submodules)
- uses ARC and block callbacks
You can follow the initial planning at ideashower/ShareKit#283.
As ShareKit is now community driven, you are welcome to help, to judge new features, review pull requests etc.. There are many ways you can help, see FAQ
Credits
ShareKit was created by Nate Weiner, is updated by contributors and is maintained by Vilém Kurz.