Facebook没有显示在UIActivityViewController,但叽叽喳喳做

我的iOS是8.1.2,我正在使用UIActivityViewController进行社交分享。 我点击一个button,并允许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]; } 

我正在得到这个

在这里输入图像说明

我得到消息推特邮件WhatsApp更多button。
点击更多我得到这个。

在这里输入图像说明 FACEBOOK在哪里? 我有我的iPhone的Facebook应用程序,它是设置与我的ID太设置。 但Facebook从来没有出现在这里。 Twitter呢。 这是一个错误还是什么? 请build议

谢谢

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

如果您尝试与纯文本共享一个URL或一个图像,您将看到Facebook作为一个选项,但文本字段将是空白的。 图片或url将附加没有问题。

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

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

这不是一个答案,但很明显,这个问题是由Facebook应用程序造成的。

编辑:

这不是理想的,但我创造了一个解决方法。 不要忘记,你将需要附上一个图像或一个URL才能工作。

  1. 检测用户是否安装了Facebook应用程序。 如果他们这样做,然后给他们一些types的信息消息。

     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. 创buildUIActivityItemProvider的子类并重写

     - (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上。

我确认djr报告了什么 – 如果你有FB应用文本不再共享。 我删除了FB应用程序,现在共享文本和图像作品。

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

用于Facebook的UIActivityViewController不显示默认文本

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

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

要显示Facebook的分享button,你必须添加一个图像的活动项目数组…这可能是一个苹果方面的错误,但我还没有看到任何公开雷达这个问题。

另外请注意,由于某些原因,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];