Facebook没有在UIActivityViewController中显示,但是twitter确实

时间:2015-04-26 15:10:29

标签: ios objective-c facebook ios8 uiactivityviewcontroller

我的iOS是8.1.2,我正在使用UIActivityViewController进行社交分享。 我单击一个按钮,允许UIActivityViewController显示

- (IBAction)UIActivityTypeButtonClick:(id)sender {

NSString* text=@"I am sharing this text";
NSArray* sharedArray=@[text];
UIActivityViewController * activityVC=[[UIActivityViewController alloc]initWithActivityItems:sharedArray applicationActivities:nil];
activityVC.excludedActivityTypes=@[];
[self presentViewController:activityVC animated:YES completion:nil];
}

我收到了这个

enter image description here

我正在消息 Twitter 邮件 WhatsApp 以及更多按钮。
点击更多,我就明白了。

enter image description here FACEBOOK 在哪里?我在我的iPhone上有facebook应用程序,并且在设置中也设置了我的ID。但Facebook永远不会出现在这里。 Twitter确实如此。这是一个错误还是什么?请建议

由于

4 个答案:

答案 0 :(得分:19)

4月24日Facebook更新了他们的应用程序时,我第一次看到这个。只要安装了Facebook应用程序,就可以将纯文本共享到Facebook。删除后,它再次可用。

如果您尝试与纯文本共享URL或图像,您将看到Facebook作为选项,但文本字段将为空白。图像或URL将毫无问题地附加。

我发布了一个在github上重现此问题的示例项目:

https://github.com/djr/UIActivityViewController-Facebook

这不是一个答案,但很明显这个问题是由Facebook应用引起的。

编辑:

这不太理想,但我创建了一个解决方法。不要忘记,您需要附加图像或URL才能使用。

  1. 检测用户是否安装了Facebook应用。如果他们这样做,那么给他们一些信息性的消息。

    BOOL facebookIsInstalled = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fb://"]];
    BOOL isUserLoggedInWithFacebook = [SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook];
    
    if(isUserLoggedInWithFacebook && facebookIsInstalled)
    {
        // Explain that they have to copy and paste in order to share on Facebook
    }
    
  2. 创建UIActivityItemProvider的子类并覆盖

    - (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType
    {
        NSString *stringToShare = @"string to share";
    
        if([activityType isEqualToString:UIActivityTypePostToFacebook] ||
           [activityType isEqualToString:@"com.facebook.Facebook.ShareExtension"] ||
           [activityType.lowercaseString rangeOfString:@"facebook"].length) 
           // Because who knows when they are going to change the activityType string?
        {
            // Automatically copy the text for them
            [[UIPasteboard generalPasteboard] setString:stringToShare];
        }
    
        return stringToShare;
    }
    
  3. 告诉用户他们必须粘贴到Facebook文本字段才能分享。

  4. 归咎于Facebook。

答案 1 :(得分:3)

Facebook希望您使用他们的SDK。他们阻止了设置初始文本的能力。 (不知道如何。)在类似的帖子中查看我的答案:

UIActivityViewController for Facebook not Showing Default Text

所需的解决方案(来自Facebook)是使用他们的SDK。

答案 2 :(得分:2)

NSString* text=@"I am sharing this text";
NSURL *myWebsite = [NSURL URLWithString:@"http://www.website.com/"];
//  UIImage * myImage =[UIImage imageNamed:@"myImage.png"];
NSArray* sharedArray=@[text,myWebsite];
 UIActivityViewController * activityVC=[[UIActivityViewController alloc]initWithActivityItems:sharedArray applicationActivities:nil];
NSArray *excludedActivities = @[];

activityVC.excludedActivityTypes=excludedActivities;
[self presentViewController:activityVC animated:YES completion:nil];

答案 3 :(得分:1)

要显示Facebook分享按钮,您必须将图像添加到活动项目数组中......这可能是苹果方面的一个错误,但我没有看到任何有关此问题的开放式雷达。

另请注意,由于某些原因,无法将iOS 8.3文本添加到Facebook。添加文本时,您只能显示空白文本字段。

UIImage *image = [UIImage imageNamed:@"__some_image__file"];

UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[image]
                                                                                     applicationActivities:nil];

[self presentViewController:activityViewController animated:YES completion:nil];