KkMIW
KkMIW

Reputation: 1112

Unable to added Facebook and Twitter to UIActivityViewController

Trying to share application on social median, and email, and message. Since Email and message is working fine for me. But Facebook,and twitter is not all showing to UIActivityViewController

Below is code which i try.

NSArray *excludeActivities = @[UIActivityTypeAirDrop,
                               UIActivityTypePostToFacebook,
                               UIActivityTypePostToTwitter];
UIActivityViewController *activityViewController =
[[UIActivityViewController alloc] initWithActivityItems:@[string, URL]
                                  applicationActivities:nil];
activityViewController.excludedActivityTypes = excludeActivities;
[self presentViewController:activityViewController
                                   animated:YES
                                 completion:^{
                                 }];

- (id)activityViewController:(UIActivityViewController *)activityViewController
         itemForActivityType:(NSString *)activityType
{
    if ([activityType isEqualToString:UIActivityTypePostToFacebook]) {
        return NSLocalizedString(@"calling facebook", );
    } else if ([activityType isEqualToString:UIActivityTypePostToTwitter]) {
        return NSLocalizedString(@"calling twitter", );
    } else {
        return nil;
    }
}

@All Please let me know what i need to do.

Upvotes: 0

Views: 247

Answers (2)

Dipen Chudasama
Dipen Chudasama

Reputation: 3093

For that just create one class for that like this.

SharingActivityProvider.h

#import <Foundation/Foundation.h>


@interface SharingActivityProvider : UIActivityItemProvider
@end


**SharingActivityProvider.m**

#import "SharingActivityProvider.h"


@implementation SharingActivityProvider {

}

- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType {

    // Create the default sharing string
    NSString *shareString = @"";

    // customize the sharing string for facebook, twitter, weibo, and google+
    if ([activityType isEqualToString:UIActivityTypePostToFacebook]) {
        shareString = [NSString stringWithFormat:@"Attention Facebook:%@", shareString];
    } else if ([activityType isEqualToString:UIActivityTypePostToTwitter]) {
        shareString = [NSString stringWithFormat:@"Attention Twitter:%@", shareString];
    } else if ([activityType isEqualToString:UIActivityTypePostToWeibo]) {
        shareString = [NSString stringWithFormat:@"Attention Weibo:%@", shareString];
    }

    return shareString;
}

- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController {
    return @"";
}

@end

Then after just use below code, suppose button action.

-(IBAction)shareAppTapped:(id)sender{

    SharingActivityProvider *sharingActivityProvider = [[SharingActivityProvider alloc] init];

    NSArray *activityProviders = @[sharingActivityProvider,@"what ever text"];
    UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityProviders applicationActivities:nil];

    // tell the activity view controller which activities should NOT appear
    activityViewController.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll];

    activityViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [self presentViewController:activityViewController animated:YES completion:nil];
   // [self.btnShareApp setBackgroundColor:OnebackgroundColorTable];
}

Upvotes: 2

Paresh Navadiya
Paresh Navadiya

Reputation: 38239

One mistake here is exclude activities also have facebook and twitter. Hence it will not show by any means.

Note excludedActivityTypes should be which you does not need in controller.

For example it should be:

NSArray *excludeActivities = @[UIActivityTypePostToWeibo,
                               UIActivityTypeMessage,
                               UIActivityTypeAssignToContact,
                               UIActivityTypeSaveToCameraRoll,
                               UIActivityTypeAddToReadingList,
                               UIActivityTypePostToFlickr,
                               UIActivityTypePostToVimeo,
                               UIActivityTypePostToTencentWeibo];

Upvotes: 0

Related Questions