From b279ed21f2b0a4a0cd3f728f9f67dd906c4dcbe5 Mon Sep 17 00:00:00 2001 From: Anton Dobkin Date: Fri, 12 Oct 2012 15:13:36 +0700 Subject: [PATCH 1/2] Improvements in the code - In canPerformWithActivityItems added check that Readability is installed on a device, if not check, the item Readability is always visible to share sheet. Also added check that items of activityItems is kind of NSURL or NSString - Changed method performActivity - Constants ReadabilityActivityURI and ReadabilityActivityAdd declared as static --- ReadabilityActivity.h | 3 --- ReadabilityActivity.m | 45 ++++++++++++++++++++++++------------------- 2 files changed, 25 insertions(+), 23 deletions(-) mode change 100644 => 100755 ReadabilityActivity.h mode change 100644 => 100755 ReadabilityActivity.m diff --git a/ReadabilityActivity.h b/ReadabilityActivity.h old mode 100644 new mode 100755 index 2476ec5..6ba1294 --- a/ReadabilityActivity.h +++ b/ReadabilityActivity.h @@ -7,9 +7,6 @@ #import -extern NSString * const ReadabilityActivityURI; -extern NSString * const ReadabilityActivityAdd; - @interface ReadabilityActivity : UIActivity { @private NSArray *_activityItems; diff --git a/ReadabilityActivity.m b/ReadabilityActivity.m old mode 100644 new mode 100755 index 1c38d54..b88a82a --- a/ReadabilityActivity.m +++ b/ReadabilityActivity.m @@ -7,8 +7,8 @@ #import "ReadabilityActivity.h" -NSString * const ReadabilityActivityURI = @"readability://"; -NSString * const ReadabilityActivityAdd = @"add"; +static NSString * const ReadabilityActivityURI = @"readability://"; +static NSString * const ReadabilityActivityAdd = @"add"; @implementation ReadabilityActivity @@ -22,10 +22,8 @@ - (NSString *)activityTitle return @"Readability"; } -- (UIImage *)activityImage -{ - if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) - { +- (UIImage *)activityImage { + if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { return [UIImage imageNamed:@"Readability-activity-iPad"]; } @@ -34,6 +32,14 @@ - (UIImage *)activityImage - (BOOL)canPerformWithActivityItems:(NSArray *)activityItems { + if (![ReadabilityActivity canPerformActivity]) { + return NO; + } + for (NSObject *item in activityItems) { + if (![item isKindOfClass:[NSURL class]] && ![item isKindOfClass:[NSString class]]) { + return NO; + } + } return YES; } @@ -42,28 +48,27 @@ - (void)prepareWithActivityItems:(NSArray *)activityItems _activityItems = activityItems; } -- (void)performActivity -{ - if ([ReadabilityActivity canPerformActivity]) - { - NSString *activityAction = _activityItems[0]; - NSURL *activityURL = _activityItems[1]; +- (void)performActivity { + if ([ReadabilityActivity canPerformActivity]){ + NSString *activityURL = nil; - NSString *readabilityURLString = [NSString stringWithFormat:@"%@%@/%@", ReadabilityActivityURI, activityAction, [activityURL absoluteString]]; - NSURL *readabilityURL = [NSURL URLWithString:readabilityURLString]; + if([_activityItems[0] isKindOfClass:[NSURL class]]) { + activityURL = [_activityItems[0] absoluteString]; + + } else { + activityURL = _activityItems[0]; + } - [[UIApplication sharedApplication] openURL:readabilityURL]; + NSString *readabilityURLString = [NSString stringWithFormat:@"%@%@/%@", ReadabilityActivityURI, ReadabilityActivityAdd, activityURL]; + [[UIApplication sharedApplication] openURL:[NSURL URLWithString:readabilityURLString]]; [self activityDidFinish:YES]; - } - else - { + } else{ [self activityDidFinish:NO]; } } -+ (BOOL)canPerformActivity -{ ++ (BOOL)canPerformActivity { if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:ReadabilityActivityURI]]) { return YES; From 878802e6ef09581aefeb16a1ecbe0f8de06d59b2 Mon Sep 17 00:00:00 2001 From: Anton Dobkin Date: Tue, 16 Oct 2012 21:02:13 +0700 Subject: [PATCH 2/2] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 87c6eab..e86389f 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,10 @@ iOS 6 introduced the "share sheet"—a simple native interface to launch actions // init Readability activity ReadabilityActivity *rdb = [[ReadabilityActivity alloc] init]; -// set up activity item / action. url is a NSURL -NSArray *activityItems = @[ReadabilityActivityAdd, url]; +NSURL *url = [NSURL URLWithSting:@"http://example.com"]; + +// set up activity item / action +NSArray *activityItems = @[url]; // init share sheet with app-specific activity UIActivityViewController *shareSheet = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:@[rdb]];