Публикация контента в iOS

Из этого руководства вы узнаете, как публиковать контент из приложения для iOS в Facebook. Контент, которыми делятся люди, отображаются в их Хронике, а также в Лентах новостей их друзей.

Необходимые условия

Чтобы интегрировать в свое приложение функцию публикации, выполните следующие действия:

  • добавьте в среду разработки мобильных приложений Facebook SDK для iOS;
  • настройте ID приложения Facebook и свяжите его со своим приложением;
  • укажите ID своего приложения, его отображаемое имя и причину, по которой пользователям предлагается предоставить вашему файлу .plist доступ к фото;
  • создайте в FBSDKShareKit.framework ссылку на свой проект.

Ваше приложение не должно заранее включать контент, который будет опубликован. Это противоречит Политике Платформы Facebook. Подробнее см. раздел 2.3 этой Политики.

Начало работы с SDK для iOS

Моделирование контента

Для каждого типа контента предусмотрен интерфейс, соответствующий <FBSDKSharingContent>. Смоделировав контент, добавьте в приложение интерфейс их публикации, соответствующий <FBSDKSharing> (например, FBSDKShareDialog).

Когда человек публикует на Facebook ссылку из вашего приложения, в нее добавляется contentURL. Создайте контент для ссылок с помощью модели FBSDKShareLinkContent. Список всех атрибутов см. в справке по FBSDKShareLinkContent.

Пример кода для запуска публикации:

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"https://developers.facebook.com"];

Примечание. Если в публикациях вашего приложения содержатся ссылки на iTunes или Google Play, имейте в виду, что мы не публикуем изображения или описания, которые вы указываете в публикуемых материалах. Вместо этого мы публикуем информацию о приложении, полученную краулером Webcrawler напрямую из магазина приложений, в которой могут отсутствовать изображения. Чтобы предварительно просмотреть публикуемую ссылку на iTunes или Google Play, введите URL ссылки в отладчике перепостов.

Фото

Люди могут делиться на Facebook фото из вашего приложения. Для этого можно использовать диалог "Поделиться" или пользовательский интерфейс.

  • Размер фото не должен превышать 12 МБ.
  • На устройстве должно быть установлено нативное приложение Facebook для iOS (версии 7.0 или выше).

Создайте контент фото для публикации с помощью модели FBSDKSharePhotoContent. Список всех атрибутов см. в справке по FBSDKSharePhotoContent.

- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
  UIImage *image = info[UIImagePickerControllerOriginalImage];

  FBSDKSharePhoto *photo = [[FBSDKSharePhoto alloc] init];
  photo.image = image;
  photo.userGenerated = YES;
  FBSDKSharePhotoContent *content = [[FBSDKSharePhotoContent alloc] init];
  content.photos = @[photo];
  ...
}

Видео

Люди могут делиться на Facebook видео из вашего приложения. Для этого можно использовать диалог "Поделиться" или пользовательский интерфейс.

  • Размер видео не должен превышать 50 МБ.
  • На устройстве должен быть установлен клиент Facebook для iOS (версии 26.0 или выше).

Создайте контент видео для публикации с помощью модели FBSDKShareVideoContent. Список всех атрибутов см. в справке по FBSDKShareVideoContent.

 - (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
  FBSDKShareVideo *video = [[FBSDKShareVideo alloc] init];
  if (@available(iOS 11, *)) {
    video.videoAsset = [info objectForKey:UIImagePickerControllerPHAsset];
  } else {
    video.videoURL = [info objectForKey:UIImagePickerControllerReferenceURL];
  }
  FBSDKShareVideoContent *content = [[FBSDKShareVideoContent alloc] init];
  content.video = video;
  ...
}

Мультимедийный контент

Пользователи вашего приложения могут делиться на Facebook контентом, содержащими фото и видео, с помощью диалога "Поделиться". Имейте в виду:

  • На устройстве должна быть установлена версия iOS 7.0 или выше.
  • На устройстве должен быть установлен клиент Facebook для iOS версии 52.0 или выше.
  • Размер фото не должен превышать 12 МБ, а видео — 50 МБ.
  • Человек может опубликовать не более одного видео и до 29 или 30 фото.

Создайте мультимедийный контент для публикации с помощью модели FBSDKShareMediaContent. Список всех атрибутов см. в справке по FBSDKShareMediaContent.

FBSDKSharePhoto *photo = [FBSDKSharePhoto photoWith...
FBSDKShareVideo *video = [FBSDKShareVideo videoWith...
FBSDKShareMediaContent *content = [FBSDKShareMediaContent new];
content.media = @[photo, video];
}

Методы публикации

После создания модели для контента можно использовать диалог "Поделиться" или диалог сообщения.

Кнопки

Для iOS предусмотрены нативные кнопки Facebook, которые позволяют запускать диалог "Поделиться".


Кнопка "Поделиться"

С помощью этой кнопки люди могут публиковать контент в своей хронике в Facebook, в хронике своих друзей или в группе. Кнопка "Поделиться" вызывает диалог "Поделиться". Чтобы добавить кнопку "Поделиться", добавьте в представление следующий фрагмент кода:

FBSDKShareButton *button = [[FBSDKShareButton alloc] init];
button.shareContent = content;  
[self.view addSubview:button];

Кнопка "Отправить"

С помощью этой кнопки можно делиться фото, видео и ссылками с друзьями и контактами в личных сообщениях Messenger от Facebook. Кнопка "Отправить" служит для вызова диалога сообщения. Чтобы добавить кнопку "Отправить", добавьте в представление следующий фрагмент кода:

FBSDKSendButton *button = [[FBSDKSendButton alloc] init];
button.shareContent = content; 
[self.view addSubview:button];

Если Messenger не установлен, эта кнопка будет скрыта. Помните, что это не должно портить внешний вид приложения. Чтобы проверить, можно ли показать на устройстве кнопку "Отправить", используйте свойство isHidden в FBSDKSendButton:

if (button.isHidden) {
  NSLog(@"Is hidden");
} else {
  [self.view addSubview:button];
}

Диалог "Поделиться"

Чтобы использовать инструменты Facebook для публикации, определите контент, как описано в разделе, посвященном моделированию контента (см. выше), а затем вызовите диалог "Поделиться". Пример кода для публикации ссылки с помощью диалога "Поделиться":

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"http://developers.facebook.com"];
[FBSDKShareDialog showFromViewController:self
                              withContent:content
                                 delegate:nil];

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

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

Если нативное приложение Facebook установлено, SDK версий 4.0–4.4 переключает людей в нативное приложение Facebook для iOS, а после публикации возвращает в ваше приложение. Если используется SDK версии 4.5 или более поздней, вместо переключения в нативное приложение Facebook для iOS отображается интерфейс Share Sheet iOS.

Диалог сообщения

Этот диалог используется для переключения в нативное приложение Messenger для iOS. После публикации пользователь возвращается в ваше приложение.

[FBSDKMessageDialog showWithContent:content delegate:nil];

Примечание. Диалог сообщения пока не поддерживается на устройствах iPad.

Интеграция с iOS

В iOS есть нативный интерфейс Share Sheet, с помощью которого на Facebook можно делиться обновлениями статуса, фото, видео и ссылками. Этот интерфейс позволяет настраивать аудиторию публикации и добавлять геоданные. Facebook SDK поддерживает использование нативного элемента управления. Начиная с версии 4.5 SDK Facebook именно этот элемент люди видят в большинстве случаев, когда вы вызываете диалог Facebook "Поделиться".

Использование интерфейса Share Sheet iOS не противоречит Политике Платформы Facebook, в частности требованиям раздела 2.3 в отношении предварительного заполнения в контексте Share Sheet. Это означает, что в контексте интерфейса Share Sheet приложение не должно предварительно включать в поле initialText какие-либо контент, которые не вводил пользователь приложения.

Этот API использует тот же блок стилей, что и другие компоненты Facebook SDK. Чтобы показать нативный диалог "Поделиться" iOS, используйте следующий код:

// Example content. Replace with content from your app.
FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"https://developers.facebook.com"];

FBSDKShareDialog *dialog = [[FBSDKShareDialog alloc] init];
dialog.fromViewController = self;
dialog.content = content;
dialog.mode = FBSDKShareDialogModeShareSheet;
[dialog show];

Имейте в виду, что атрибут .fromViewController обязателен, поскольку он требуется для интерфейса Share Sheet.

Дополнительные функции

При использовании диалога "Поделиться" Facebook вы можете применять дополнительные функции, которые недоступны, если вы делитесь контентом с помощью API.

Хэштеги

Для фото, ссылки или видео, которыми вы делитесь, можно указать один хэштег. Он также будет отображаться в диалоге "Поделиться". Перед публикацией люди, если пожелают, смогут удалить его.

Ниже показано, как добавить хэштег к ссылке.

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"https://developers.facebook.com"];
content.hashtag = [FBSDKHashtag hashtagWithString:@"#MadeWithHackbook"];

Публикация цитаты

Вы можете позволить людям самостоятельно выделять текст, который будет отображаться как цитата со ссылкой. Или же вы можете сами выбрать цитату, например врез в статье, который будет отображаться вместе со ссылкой. В любом случае цитата представляется в собственном поле отдельно от комментариев пользователя.

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [@"https://developers.facebook.com/products/sharing"];
content.quote = @"Learn quick and simple ways for people to share content from your app or website to Facebook.";

См. также

App Links позволяет создать ссылки для возврата в приложение из публикаций на Facebook, которыми люди поделились из него.

Когда человек нажимает такую публикацию, открывается приложение. Ссылку можно создать даже на определенный контент в приложении.

Симулятор iOS и тестирование

При попытке поделиться видео или фото в симуляторе, с помощью которого тестируется приложение, будут возникать ошибки. Это связано с тем, что для показа диалога "Поделиться" на устройстве должно быть установлено приложение Facebook для iOS. В симуляторе такая возможность не поддерживается.

В случае с публикуемыми ссылками приложение Facebook для iOS не требуется, поэтому вы можете тестировать свое приложение. Для тестирования других сценариев публикации используйте реальное устройство, на котором установлено приложение Facebook для iOS.