iOS:如何在社交网络上分享文本和图片?

48

请问,我是否犯了错误?

NSString *sharedMsg=[NSString stringWithFormat:@"Hello world"];
UIImage* sharedImg=[UIImage imageNamed:@"image"];
NSArray* sharedObjects=[NSArray arrayWithObjects:sharedMsg, sharedImg, nil];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] 
              initWithActivityItems:sharedObjects applicationActivities:nil];
activityViewController.popoverPresentationController.sourceView = self.view;
[self presentViewController:activityViewController animated:YES completion:nil];

当我在运行时选择 Facebook 图标时,文本缺失,但是图片可以正常显示。
我的 Xcode 版本为 6.3.1,测试在 iPad 上。

3个回答

95
看起来最近更新的Facebook应用程序已经将内置的Facebook分享活动替换为忽略状态文本的活动-如果您从设备中删除Facebook应用程序,则可以使用您拥有的代码显示文本。如果安装了Facebook应用程序,您将获得图像、URL,但不包含文本。
Facebook的政策不允许您预填状态消息,并要求所有内容均为用户生成。虽然我理解其背后的意图,但我个人认为在许多情况下这种政策有些愚蠢。例如,在我的游戏中,我希望预填用户的分数,但现在我无法做到这一点,因此用户将看到一个空的对话框。我可能会简单地删除Facebook分享选项,因为现在没有人会使用它。
这份来自Facebook的回复确认此行为是按设计实现的。

12
你说得对,这是毫无意义的选择……用户只需在发送到自己的个人资料前进行编辑和更改即可。这样Facebook将失去许多分享。 - user3290180
谢谢你指出这个问题,它让我感到很烦恼!Facebook 真是太愚蠢了。 - Ash
只有 #hashtag 对我有效。纯文本和 URL 不再起作用了吗? - SDW
1
我无法分享图片,只能分享URL。 - User
嘿@Ixx,我们也遇到了同样的问题。如果您提供链接,图像将被忽略。在分享到Facebook和Whatsapp时,请删除链接即可解决问题。 - Yuchen

8

以下是Swift代码,可能无法解决您的问题,但对于想要实现此功能的人可能会有所帮助。只需创建一个按钮及其操作,并像下面这样安装按钮的操作即可。

注意:您必须通过进入设置来登录您的Facebook或Twitter账户,然后按照以下步骤执行。

@IBAction func onShareTouched(sender: AnyObject) {

    print("share")

    let myShare = "My beautiful photo! <3 <3"
    let image: UIImage = UIImage(named: "yourImageNameHere")

    let shareVC: UIActivityViewController = UIActivityViewController(activityItems: [(image), myShare], applicationActivities: nil)
    self.presentViewController(shareVC, animated: true, completion: nil)

  }

图片分享对我不起作用,只能分享文本,请建议。 - Anand Gautam

0
NSString* text=@"Hello world";
NSURL *myWebsite = [NSURL URLWithString:@"http://www.website.com/"];
//  UIImage * myImage =[UIImage imageNamed:@"myImage.png"];
NSArray* sharedObjects=@[text,myWebsite];
UIActivityViewController * activityViewController=[[UIActivityViewController alloc]initWithActivityItems:sharedObjects applicationActivities:nil];

activityViewController.popoverPresentationController.sourceView = self.view;
[self presentViewController:activityViewController animated:YES completion:nil];

是的,我测试过了,GooglePlus和FacebookShare都是UIActivity的自定义子类。 - Arpit Lokwani
你还没有展示FacebookShare的代码 - 可能这是使用Facebook SDK实现分享的一些代码。使用Facebook SDK需要同意Facebook条款,禁止预填文本。 - Paulw11
1
如果您安装了最新的Facebook应用程序,则此方法将无法正常工作 - 文本区域将会是空白的。如果您使用旧版应用程序或未安装应用程序,则此方法可以正常工作。 - Paulw11
我昨天刚刚安装了最新版的Facebook,只是为了修复这个错误而下载的。我已经运行了你的代码,有时使用了NSURL,有时没有使用,还在iPhone 6上进行了测试,使用NSURL的情况下一切正常。 - Arpit Lokwani
1
URL会在那里,但没有文本。文本将出现在消息、邮件或Twitter中。 - Paulw11
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接