SLComposeViewController 不会为 SLServiceTypeFacebook 设置 initialText

Posted

技术标签:

【中文标题】SLComposeViewController 不会为 SLServiceTypeFacebook 设置 initialText【英文标题】:SLComposeViewController won't set initialText for SLServiceTypeFacebook 【发布时间】:2015-04-25 20:44:13 【问题描述】:

这似乎是社交框架中的一个错误,它不会为 Facebook 服务类型设置初始文本。这是我使用 Swift 实现的:

let view = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
if view.setInitialText("Some text") 
    NSLog("Success")
 else 
    NSLog("Failure")

view.addURL(NSURL(string: "https://google.ro"))
self.presentViewController(view, animated: true, completion: nil)

它的作用:

Facebook 和 Twitter 都会显示 URL initialText 仅适用于 Twitter

什么不起作用:

即使上面的代码输出“成功”,initialText 也不会显示在 Facebook 上

更新 2

Facebook 似乎真的不希望开发人员在共享时设置消息的初始文本,因为即使使用他们的 SDK 也不可能。在我正在实施的应用中,我选择了应用中的屏幕截图(以图片形式上传),让用户在 Facebook 上分享他们的进度。

更新

解决方案是使用 Facebook SDK for ios,Facebook 不再支持 Social framework 的该功能。

【问题讨论】:

【参考方案1】:

不是错误,Facebook 不再允许这样做。

iOS 分享表的使用受 Facebook 平台政策的约束,包括第 2.3 节,其中规定应用不得预填充。在共享表的上下文中,这意味着应用可能不会在共享表的 initialText 字段中预先填充人们在使用应用之前未输入的内容。

【讨论】:

【参考方案2】:

Facebook 不再允许预先填写消息。 欲了解更多信息here

也就是说,如果您使用原生 Facebook sdk,它不会解决您的问题,因为 Facebook 不会发布您的应用。 因此,正如 Facebook 指南中所写,您拥有的唯一解决方案是:

    使用用户之前在应用流程中手动输入的内容填充用户消息参数。 您应用的作曲家可以包含一个号召性用语,当人们开始写帖子时该号召性用语就会消失。例如,Facebook 的作曲家使用灰度文本来询问“你在想什么?”当人们开始写作时,它就会消失。

【讨论】:

【参考方案3】:

我认为这是一个 iOs 8.3 错误。 在我更新到该版本之前,它工作正常。 :-(

【讨论】:

是的,这是一个错误。我将改用 Facebook 和 Twitter SDK。它们要好得多,也更复杂。

以上是关于SLComposeViewController 不会为 SLServiceTypeFacebook 设置 initialText的主要内容,如果未能解决你的问题,请参考以下文章

白色按钮 SLComposeViewController

无法使用 SLComposeViewController 将图像发布到 Facebook?

SLComposeViewController 深色键盘外观

SLComposeViewController 会崩溃

SL 在 iOS 的 SLComposeViewController 中代表啥?

无法呈现视图控制器 (SLComposeViewController)