SLComposeViewController setInitialText not showing up in View

拟墨画扇 提交于 2019-11-27 17:51:48

问题


I'm trying to use the SLComposeViewController to share a link in my iOS App.

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];

When the controller presents, there is no text in the entry box. You can add text and send it fine (the URL shows up correctly in the Post as well).

I just installed FacebookSDK 4.01 and it's a iOS 7/8 App.

Any ideas on why the initial text isn't showing up. I even tried to do it without the URL and just do text, but nothing.

Additional Note: If I do remove the addURL, then the App freezes when I touch "Post" and the post never gets sent.

Thanks for any help!!!


回答1:


I found a nice way to work around this which still gives the user control.

For Facebook only, just before presenting the SLComposerViewController I show a self dismissing alert (with a 6 second dismissal if OK wasn't tapped). This alert will contain "Write to your friends about how you did playing !\n\nYou can just PASTE for a preset message.".

Right after showing the alert, I then use the following to post a preset message to the UIPasteboard:

    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    pasteboard.string = msg;

So then the SLComposeViewController is presented and an alert view right over it. Once the user dismisses the alert view (or 6 seconds passes and it self dismisses), that the user has the option to just PASTE, right in the message text, your preset message. Or not, that's the beauty of it.

Hope this helps some others get around what FB decided to suddenly enforce. I didn't even realize it was against policy to use the setInitialText method for FB.

Cheers.




回答2:


This behaviour is intended. See also this bug report: https://developers.facebook.com/bugs/962985360399542/. As @WizKid mentions, it's against policy to pre-fill text. Up until recently, you could still do so (violating the policy) but now this is actually enforced.

There is nothing you can do for this on your side; it's a policy enforcement by Facebook.

Also, related Rdar: http://openradar.appspot.com/20709403



来源:https://stackoverflow.com/questions/29970741/slcomposeviewcontroller-setinitialtext-not-showing-up-in-view

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!