Facebook没有在UIActivityViewController中显示,但是Twitter也没有

Raj*_*ari 16 facebook objective-c ios uiactivityviewcontroller ios8

我的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];
}
Run Code Online (Sandbox Code Playgroud)

我得到了这个

在此输入图像描述

我收到消息,Twitter,邮件,WhatsApp更多按钮.
单击更多我得到这个.

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

谢谢

djr*_*djr 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
    }
    
    Run Code Online (Sandbox Code Playgroud)
  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;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 告诉用户他们必须粘贴到Facebook文本字段才能共享.

  4. 归咎于Facebook.