Подтвердить что ты не робот

SLComposeViewController setInitialText не отображается в представлении

Я пытаюсь использовать SLComposeViewController для обмена ссылкой в ​​моем приложении iOS.

SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
[controller setInitialText:@"Here the link I promised:"];
[controller addURL:[NSURL URLWithString:@"http://www.url.com"]];
[self presentViewController:controller animated:YES completion:nil];

Когда контроллер показывает, в поле ввода нет текста. Вы можете добавить текст и отправить его в порядке (URL-адрес также отображается в сообщении).

Я только что установил FacebookSDK 4.01 и это приложение iOS 7/8.

Любые идеи о том, почему исходный текст не отображается. Я даже попытался сделать это без URL-адреса и просто сделать текст, но ничего.

Дополнительная заметка. Если я удалю addURL, приложение зависает, когда я касаюсь "Почта", и пост никогда не отправляется.

Спасибо за любую помощь!!!

4b9b3361

Ответ 1

Я нашел хороший способ обойти это, которое все еще дает пользователю управление.

Только для Facebook, перед представлением SLComposerViewController, я показываю оповещение об увольнении (с удержанием в течение 6 секунд, если ОК не было нажато). Это предупреждение будет содержать "Пишите своим друзьям о том, как вы играли!\N\nВы можете просто вставить PASTE для предварительно настроенного сообщения".

Сразу после показа предупреждения, я затем использую следующее, чтобы отправить предварительно настроенное сообщение на UIPboardboard:

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

Итак, представлен SLComposeViewController и отображается над ним предупреждение. Когда пользователь отклоняет представление предупреждения (или пропускает 6 секунд и сам увольняет), пользователь имеет возможность просто PASTE, прямо в тексте сообщения, ваше предварительно настроенное сообщение. Или нет, что красота этого.

Надеюсь, это поможет некоторым другим обойти то, что FB решило внезапно добиться. Я даже не понял, что против политики использовать метод setInitialText для FB.

Приветствия.

Ответ 2

Это поведение предназначено. См. Также этот отчет об ошибке: https://developers.facebook.com/bugs/962985360399542/. Как @WizKid упоминает, он против политики, чтобы предварительно заполнить текст. До недавнего времени вы все равно могли это сделать (нарушая политику), но теперь это фактически принудительно.

Вы ничего не можете сделать для этого на вашей стороне; это политическое исполнение Facebook.

Кроме того, связанный Rdar: http://openradar.appspot.com/20709403