无法将 Facebook 和 Twitter 添加到 UIActivityViewController

Posted

技术标签:

【中文标题】无法将 Facebook 和 Twitter 添加到 UIActivityViewController【英文标题】:Unable to added Facebook and Twitter to UIActivityViewController 【发布时间】:2015-03-02 10:03:02 【问题描述】:

尝试在社交媒体、电子邮件和消息上分享应用程序。 因为电子邮件和消息对我来说很好用。 但是 Facebook 和 twitter 并没有全部显示给UIActivityViewController

下面是我尝试的代码。

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;
    

@全部 请让我知道我需要做什么。

【问题讨论】:

在处理此问题时添加额外的点。如何向用户显示 facebook、twitter 未登录设置。它将有助于用户体验,如果我向最终用户显示关于打开 facebook、twitter 以启用设置以便在各自的社交网络中发布应用程序的警报消息。 【参考方案1】:

为此,只需为此创建一个类。

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

然后在使用下面的代码之后,假设按钮动作。

-(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];

【讨论】:

我尝试了 MVC 接近,这是一个赞赏。但它现在仍然在其中显示 facebook、twitter。我正在使用 xcode 6.1.1 ios 部署目标 8.1 你在哪个设备上测试这个? iPhone 6 ? 我正在使用 Iphone 5c。 [它是一个设备] 在那个设备上安装了脸书应用? 它没有安装。谢谢你。【参考方案2】:

这里的一个错误是exclude activities 还有facebooktwitter。因此它不会以任何方式显示。

注意 excludedActivityTypes 应该是您在控制器中不需要的。

例如应该是:

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

【讨论】:

谢谢,即使它没有在 uiactivityviewcontroller 中显示 facebook 和 twitter 图标。

以上是关于无法将 Facebook 和 Twitter 添加到 UIActivityViewController的主要内容,如果未能解决你的问题,请参考以下文章

Facebook Twitter Google line 登录之 fb登录

无法使用开放图形元标记从我的 React next.js 网站共享 Facebook/Twitter 内容

UIActivityViewController 和 facebook/twitter

Facebook、Twitter 和电子邮件无法使用 ShareKit

css 这会将facebook twitter和instagram图标添加到包含“facebook.com”,“twitter.com”和“instagram.com”的内容中的链接

css 这会将facebook twitter和instagram图标添加到包含“facebook.com”,“twitter.com”和“instagram.com”的内容中的链接