问题
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