I decided in Objective-C to add a custom UIActivityItemProvider :
#import "CustomUiActivityItemProvider.h" @implementation CustomUiActivityItemProvider - (id)initWithText:(NSString *)text{ if ((self = [super initWithPlaceholderItem:text])) { self.text = text ?: @""; self.url = @""; } return self; } - (id)item { NSString *activityType = self.activityType; if ([self.placeholderItem isKindOfClass:[NSString class]]) { if ([self.activityType isEqualToString:UIActivityTypePostToFacebook]) { self.url = [[NSString alloc] initWithFormat:@"%@&utm_source=facebook", self.text]; } else if ([activityType isEqualToString:UIActivityTypePostToTwitter]) { self.url = [[NSString alloc] initWithFormat:@"%@&utm_source=twitter", self.text]; } else if ([activityType isEqualToString:UIActivityTypeMessage]) { self.url = [[NSString alloc] initWithFormat:@"%@&utm_source=message", self.text]; } else if([activityType isEqualToString:UIActivityTypeMail]){ self.url = [[NSString alloc] initWithFormat:@"%@&utm_source=email", self.text]; } else if ([activityType isEqualToString:UIActivityTypePostToWeibo]){ self.url = [[NSString alloc] initWithFormat:@"%@&utm_source=weibo", self.text]; }else{ self.url = [[NSString alloc] initWithFormat:@"%@&utm_source=other", self.text]; } return self.url; } return self.placeholderItem; } @end
And using it like this:
CustomUiActivityItemProvider *customProvider = [[CustomUiActivityItemProvider alloc] initWithText:urlString]; UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:@[customProvider] applicationActivities:nil]; activityVC.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll]; activityVC.completionHandler = ^(NSString *activityType, BOOL completed) {
source share