Facebook 未显示在 UIActivityViewController 中,但 twitter 显示
Facebook is not shown in UIActivityViewController but twitter does
我的 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];
}
我收到这个
我正在收到 Message、Twitter、Mail、WhatsApp 和一个 更多 按钮。
单击 更多 我明白了。
FACEBOOK 在哪里?我的 iPhone 中有 facebook 应用程序,它也在设置中使用我的 ID 进行设置。但是facebook从来没有出现在这里。推特确实如此。这是一个错误还是什么?请推荐
谢谢
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 共享按钮,您必须将图像添加到 activity 项的数组中...这可能是苹果方面的一个错误,但我还没有看到任何关于此问题的公开雷达。
另请注意 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];
我第一次看到这个是在 Facebook 于 4 月 24 日更新他们的应用程序时。只要安装了 Facebook 应用程序,就无法将纯文本共享到 Facebook。删除后,它再次可用。
如果您尝试与纯文本一起分享 URL 或图像,您会看到 Facebook 作为一个选项,但文本字段将为空白。图片或 URL 将毫无问题地附加。
我在 github 上发布了一个重现此问题的示例项目:
https://github.com/djr/UIActivityViewController-Facebook
这不是答案,但很明显问题是由 Facebook 应用引起的。
编辑:
这并不理想,但我创建了一个解决方法。不要忘记您需要附上图片或 URL 才能正常工作。
检测用户是否安装了 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
}
创建 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;
}
告诉用户他们必须粘贴到 Facebook 文本字段才能共享。
在 Facebook 上归咎。
我确认 djr 报告的内容 - 如果您有 FB 应用程序,文本将不再共享。我删除了 FB 应用程序,现在共享文本和图像作品。
Facebook 希望您使用他们的 SDK。他们阻止了设置初始文本的能力。 (不确定如何。)在类似 post:
中查看我的答案
所需的解决方案(来自 Facebook)是使用他们的 SDK。
我的 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];
}
我收到这个
我正在收到 Message、Twitter、Mail、WhatsApp 和一个 更多 按钮。
单击 更多 我明白了。
谢谢
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 共享按钮,您必须将图像添加到 activity 项的数组中...这可能是苹果方面的一个错误,但我还没有看到任何关于此问题的公开雷达。
另请注意 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];
我第一次看到这个是在 Facebook 于 4 月 24 日更新他们的应用程序时。只要安装了 Facebook 应用程序,就无法将纯文本共享到 Facebook。删除后,它再次可用。
如果您尝试与纯文本一起分享 URL 或图像,您会看到 Facebook 作为一个选项,但文本字段将为空白。图片或 URL 将毫无问题地附加。
我在 github 上发布了一个重现此问题的示例项目:
https://github.com/djr/UIActivityViewController-Facebook
这不是答案,但很明显问题是由 Facebook 应用引起的。
编辑:
这并不理想,但我创建了一个解决方法。不要忘记您需要附上图片或 URL 才能正常工作。
检测用户是否安装了 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 }
创建 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; }
告诉用户他们必须粘贴到 Facebook 文本字段才能共享。
在 Facebook 上归咎。
我确认 djr 报告的内容 - 如果您有 FB 应用程序,文本将不再共享。我删除了 FB 应用程序,现在共享文本和图像作品。
Facebook 希望您使用他们的 SDK。他们阻止了设置初始文本的能力。 (不确定如何。)在类似 post:
中查看我的答案所需的解决方案(来自 Facebook)是使用他们的 SDK。