我正在尝试使用SLComposeViewController在我的iOS应用程序中共享链接。
SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
[controller setInitialText:@"Here's the link I promised:"];
[controller addURL:[NSURL URLWithString:@"http://www.url.com"]];
[self presentViewController:controller animated:YES completion:nil];
当控制器出现时,输入框中没有文本。您可以添加文本并将其发送正常(URL也会在Post中正确显示)。
我刚刚安装了FacebookSDK 4.01,它是iOS 7/8应用程序。
关于为什么初始文本没有出现的任何想法。我甚至试图在没有URL的情况下这样做,只是做文本,但没有。
附加说明:如果我删除了addURL,那么当我点击“发布”时该应用程序会冻结,并且该帖子永远不会被发送。
谢谢你的帮助!!!
我找到了解决这个问题的好方法,它仍然可以让用户控制。
仅限Facebook,在呈现SLComposerViewController之前,我会显示一个自解雇警报(如果没有点击,则会解雇6秒)。此警报将包含“写信给你的朋友,告诉他们你是如何玩的!\ n \ n你只能用PASTE来预设信息。”
在显示警报后,我然后使用以下内容将预设消息发布到UIPasteboard:
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
pasteboard.string = msg;
然后呈现SLComposeViewController并在其上方显示警报视图。一旦用户解除警报视图(或6秒钟并且自行解除),用户可以选择在消息文本中直接粘贴预设消息。或者不是,这就是它的美丽。
希望这有助于其他人绕过FB决定突然强制执行的操作。我甚至没有意识到对FB使用setInitialText方法是违反政策的。
干杯。
此行为是有意的。另见此错误报告: https://developers.facebook.com/bugs/962985360399542/。正如@WizKid所提到的那样,预先填写文本是违反政策的。直到最近,你仍然可以这样做(违反政策),但现在实际上已经实施了。
你无能为力;这是Facebook的政策执行。
另外,相关的Rdar: http://openradar.appspot.com/20709403