SLComposeViewController setInitialText未显示在View中

Mic*_*and 11 facebook ios slcomposeviewcontroller

我正在尝试使用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];
Run Code Online (Sandbox Code Playgroud)

当控制器出现时,输入框中没有文本.您可以添加文本并将其发送正常(URL也会在Post中正确显示).

我刚安装了FacebookSDK 4.01,它是iOS 7/8应用程序.

关于为什么初始文本没有出现的任何想法.我甚至试图在没有URL的情况下这样做,只是做文本,但没有.

附加说明:如果我删除了addURL,那么当我点击"发布"时该应用程序会冻结,并且该帖子永远不会被发送.

谢谢你的帮助!!!

小智 8

我找到了解决这个问题的好方法,它仍然可以让用户控制.

仅对于Facebook,就在呈现SLComposerViewController之前,我会显示一个自解雇警报(如果没有点击,则解雇6秒).此警报将包含"向您的朋友写下您的游戏方式!\n \n您只需粘贴预设信息即可.".

在显示警报后,我然后使用以下内容将预设消息发布到UIPasteboard:

    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    pasteboard.string = msg;
Run Code Online (Sandbox Code Playgroud)

然后呈现SLComposeViewController,并在其上方显示警报视图.一旦用户解除警报视图(或6秒钟并且自行解除),用户可以选择在消息文本中直接粘贴预设消息.或者不是,这就是它的美丽.

希望这有助于其他人绕过FB决定突然强制执行的操作.我甚至没有意识到对FB使用setInitialText方法是违反政策的.

干杯.


Roe*_*mer 7

此行为是有意的.另请参阅此错误报告:https://developers.facebook.com/bugs/962985360399542/.正如@WizKid所提到的那样,预先填写文本是违反政策的.直到最近,你仍然可以这样做(违反政策),但现在实际上已经实施了.

你无能为力; 这是Facebook的政策执行.

此外,相关的Rdar:http://openradar.appspot.com/20709403