iOS: Как поделиться текстом и изображением в социальных сетях?

Пожалуйста, не могли бы вы сказать мне, если я делаю ошибки?

NSString *sharedMsg=[NSString stringWithFormat:@"Hello world"];
UIImage* sharedImg=[UIImage imageNamed:@"image"];
NSArray* sharedObjects=[NSArray arrayWithObjects:sharedMsg, sharedImg, nil];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] 
              initWithActivityItems:sharedObjects applicationActivities:nil];
activityViewController.popoverPresentationController.sourceView = self.view;
[self presentViewController:activityViewController animated:YES completion:nil];

Во время выполнения, когда я выбираю значок Facebook, текст отсутствует, изображение отображается правильно.
Мой xcode – 6.3.1, протестирован на iPad.


person user3290180    schedule 27.04.2015    source источник


Ответы (3)


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

Политика Facebook не позволяет вам предварительно заполнять сообщения о состоянии и требует, чтобы весь контент создавался пользователями — хотя я понимаю намерение, стоящее за этим, я лично считаю, что во многих случаях это глупо — например, в моей игре я хочу предварительно заполнить оценку пользователя, но теперь я не могу, поэтому пользователю предоставляется пустое диалоговое окно. Я, вероятно, просто удалю опцию обмена в Facebook, так как теперь ею никто не будет пользоваться.

Этот ответ от Facebook подтверждает, что такое поведение является преднамеренным.

person Paulw11    schedule 27.04.2015
comment
вы правы, бессмысленный выбор... пользователь мог просто отредактировать и изменить его перед отправкой в ​​свой профиль. Таким образом, Facebook потеряет много акций. - person user3290180; 27.04.2015
comment
Спасибо за указание на это, это сводило меня с ума! Какой глупый ход со стороны Facebook. - person Ash; 19.05.2016
comment
У меня работает только #хэштег. Простой текст и URL больше не работают? - person SDW; 21.07.2016
comment
Я не могу делиться изображениями, только URL-адресами - person User; 15.09.2016
comment
Привет @Ixx, мы тоже столкнулись с той же проблемой. Если вы предоставите ссылку, изображение будет проигнорировано. Удалите ссылку при публикации в Facebook, и приложение What's будет работать. - person Yuchen; 15.05.2017

Вот ответ в Swift. Это может не решить вашу проблему, но может быть полезно для тех, кто ищет это название. Просто создайте кнопку, и это действие. И установите действие кнопки следующим образом.

Примечание. Вы должны войти в свою учетную запись Facebook или Twitter, перейдя в настройки. Тогда сделайте так.

@IBAction func onShareTouched(sender: AnyObject) {

    print("share")

    let myShare = "My beautiful photo! <3 <3"
    let image: UIImage = UIImage(named: "yourImageNameHere")

    let shareVC: UIActivityViewController = UIActivityViewController(activityItems: [(image), myShare], applicationActivities: nil)
    self.presentViewController(shareVC, animated: true, completion: nil)

  }
person appiconhero.co    schedule 19.12.2015
comment
Обмен изображениями не работает для меня, это только обмен текстом, пожалуйста, предложите. - person Anand Gautam; 25.02.2019

person    schedule
comment
Не могли бы вы добавить контекст к этому ответу? Откуда берутся объекты GooglePlus и FacebookShare? Вы тестировали этот код с установленным последним приложением Facebook? - person Paulw11; 27.04.2015
comment
Да, я тестировал, GooglePlus и FacebookShare являются пользовательским подклассом UIActivity. - person Arpit Lokwani; 27.04.2015
comment
Вы до сих пор не показали код для FacebookShare. Предположительно, это какая-то реализация обмена с помощью Facebook SDK. Использование Facebook SDK требует согласия с условиями Facebook, которые запрещают предварительное заполнение текста. - person Paulw11; 27.04.2015
comment
Извините, @paulw, на самом деле я думал, что вы использовали пользовательский подкласс UIActivity, но на самом деле не использовали. В вашем коде вы просто передаете аргумент NSURL вместе с текстом для обмена в социальных сетях, я отредактировал код, попробуйте новый. Спасибо! - person Arpit Lokwani; 28.04.2015
comment
Это не сработает, если у вас установлено новейшее приложение Facebook — текстовая область просто пуста. Это работает, если у вас есть старое приложение или нет приложения - person Paulw11; 28.04.2015
comment
Я установил последнюю версию Facebook только вчера, которую я скачал, чтобы исправить эту ошибку. Я уже запустил ваш код с NSURL и без него и проверил на iPhone 6, что он отлично работает с NSURL. - person Arpit Lokwani; 28.04.2015
comment
URL-адрес будет там, но не текст. Текст будет в сообщении или почте или Twitter - person Paulw11; 28.04.2015