После интеграции входа через Facebook, публикации на Facebook или Facebook Gaming определенные события в приложении будут автоматически регистрироваться и собираться для Events Manager, если только вы не отключите эту функцию. Мы рекомендуем разработчикам приложений, использующих вход через Facebook, публикацию на Facebook или Facebook Gaming, разобраться, как работает эта функция. Подробнее о том, какая информация собирается и как отключить автоматическую регистрацию событий в приложении, см. в разделе Автоматическая регистрация событий в приложении.
Дополнительные сведения о Facebook iOS SDK см. в этой статье.
Из этого руководства вы узнаете, как публиковать контент из приложения для iOS в Facebook. Контент, которым люди делятся через ваше приложение, появляется в их хронике и Лентах их друзей.
Прежде чем интегрировать в свое приложение функцию публикации, выполните следующие действия:
.plist
доступ к фото;FBSDKShareKit.framework
ссылку на свой проект.Ваше приложение не должно автоматически заполнять поля для контента, которым люди хотят поделиться. Это нарушение Политики платформы Facebook (см. правила для разработчиков).
Начать работу с SDK для iOSДля каждого типа контента предусмотрен интерфейс, соответствующий модели SharingContent
. Смоделировав контент, добавьте в приложение интерфейс публикации, соответствующий модели Sharing
, или используйте класс ShareDialog
.
Когда человек публикует на Facebook ссылку из вашего приложения, в нее добавляется contentURL
. Подготовьте контент для ссылок, используя модель ShareLinkContent
.
Пример кода для запуска публикации:
guard let url = URL(string: "https://developers.facebook.com") else { // handle and return } let content = ShareLinkContent() content.contentURL = url let dialog = ShareDialog( viewController: self, content: content, delegate: self ) dialog.show()
Примечание. Если в публикациях содержатся ссылки на iTunes или Google Play, мы не публикуем изображения или описания из приложения. Вместо этого мы публикуем информацию о приложении, полученную краулером Webcrawler напрямую из магазина приложений, в которой могут отсутствовать изображения. Чтобы предварительно просмотреть публикуемую ссылку на iTunes или Google Play, введите URL ссылки в отладчике репостов.
Люди могут делиться на Facebook фото из вашего приложения. Для этого можно использовать диалог "Поделиться" или пользовательский интерфейс.
Подготовьте контент фото для публикации, используя модель SharePhotoContent
.
func imagePickerController( _ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any] ) { guard let image = info[.originalImage] as? UIImage else { // handle and return return } let photo = SharePhoto( image: image, userGenerated: true ) var content = SharePhotoContent() content.photos = [photo] // use the content }
Люди могут делиться на Facebook видео из вашего приложения. Для этого можно использовать диалог "Поделиться" или пользовательский интерфейс.
Подготовьте контент видео для публикации, используя модель FBSDKShareVideoContent
. Список всех атрибутов см. в справке по FBSDKShareVideoContent
.
func imagePickerController( _ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any] ) { let video: ShareVideo if #available(iOS 11, *) { guard let videoAsset = info[.phAsset] as? PHAsset else { return } video = ShareVideo(videoAsset: videoAsset) } else { guard let url = info[.referenceURL] as? URL else { return } video = ShareVideo(videoURL: url) } }
Пользователи вашего приложения могут делиться на Facebook контентом, содержащими фото и видео. Для этого используется диалог "Поделиться". Обратите внимание на следующие ограничения.
Подготовьте мультимедийный контент для публикации, используя модель ShareMediaContent
.
let photo = SharePhoto(...) let video = ShareVideo(...) var content = ShareMediaContent() content.media = [photo, video]
Создав модель для контента, вызовите диалог "Поделиться" или диалог сообщения.
В iOS предусмотрены нативные кнопки Facebook, которые позволяют запускать диалог "Поделиться".
С помощью этой кнопки люди могут публиковать контент в своей хронике в Facebook, в хронике своих друзей или в группе. Кнопка "Поделиться" вызывает диалог "Поделиться". Чтобы реализовать кнопку "Поделиться", добавьте в представление следующий фрагмент кода:
var button = FBShareButton() button.shareContent = content // Add button to view
Кнопка "Отправить" позволяет делиться фото, видео и ссылками с друзьями и контактами в личных сообщениях в приложении Facebook Messenger. Кнопка "Отправить" вызывает диалог сообщения. Чтобы реализовать кнопку "Отправить", добавьте в представление следующий фрагмент кода:
var button = SendButton() button.shareContent = content // Add button to view
Если Messenger не установлен, кнопка "Отправить" будет недоступна. Чтобы проверить, можно ли показать на устройстве кнопку "Отправить", используйте свойство isImplicitlyDisabled
объекта SendButton
:
Чтобы использовать инструменты Facebook для публикации, определите контент, как описано в разделе, посвященном моделированию контента (см. выше), а затем вызовите диалог "Поделиться". Пример кода для публикации ссылки с помощью диалога "Поделиться":
guard let url = URL(string: "https://developers.facebook.com") else { // handle and return } let content = ShareLinkContent() content.contentURL = url let dialog = ShareDialog( viewController: self, content: content, delegate: self ) dialog.show()
В предыдущих версиях SDK для iOS, прежде чем открыть диалог "Поделиться", приложению необходимо было проверить, установлено ли на устройстве нативное приложение Facebook, и предусмотреть соответствующий код для вызова альтернативной версии диалога, если оно отсутствует.
Теперь SDK автоматически проверяет наличие на устройстве нативного приложения Facebook. Если оно отсутствует, SDK переключает пользователя в его браузер по умолчанию и открывает диалоговое окно.
Если оно установлено, вместо переключения в нативное приложение Facebook для iOS отображается интерфейс iOS Share Sheet.
Этот диалог используется для переключения в нативное приложение Messenger для iOS. После публикации пользователь возвращается в ваше приложение.
MessageDialog(content: content, delegate: delegate).show()
Примечание. Диалог сообщения пока не поддерживается на устройствах iPad.
В iOS имеется нативный интерфейс Share Sheet, с помощью которого на Facebook можно делиться обновлениями статуса, фото, видео и ссылками. Этот интерфейс позволяет настраивать аудиторию публикации и добавлять местоположение. Facebook SDK поддерживает использование нативного элемента управления. Именно этот элемент люди видят в большинстве случаев, когда вы вызываете диалог Facebook "Поделиться".
Использование интерфейса Share Sheet (страницы экспорта) в iOS регулируется правилами для разработчиков, в частности разделом 2.3, который запрещает использовать в приложениях предварительное заполнение полей. Это означает, что в контексте интерфейса Share Sheet приложение не должно предварительно добавлять в поле initialText какой-либо контент, который не вводил пользователь приложения.
Этот API использует тот же блок стилей, что и другие компоненты Facebook SDK. Чтобы показать нативный диалог "Поделиться" в iOS, используйте следующий код:
let dialog = ShareDialog( viewController: self, content: content, delegate: nil ) dialog.mode = .shareSheet dialog.show()
Имейте в виду: аргумент viewController
обязателен, поскольку он требуется для интерфейса Share Sheet.
Для фото, ссылки или видео, которыми вы делитесь, можно указать один хэштег. Он также будет отображаться в диалоге "Поделиться". При желании люди могут удалить его перед публикацией.
Ниже показано, как добавить хэштег к ссылке.
let content = ShareLinkContent() guard let url = URL(string: "https://developers.facebook.com") else { return } content.contentURL = url content.hashtag = Hashtag("#MadeWithHackbook")
С помощью App Links можно создавать обратные ссылки на ваше приложение из публикаций на Facebook, которыми поделились из него.
Когда человек нажимает такую публикацию, открывается ваше приложение. Можно также создать ссылку на определенный контент в приложении.
Если вы тестируете приложение с помощью эмулятора, при попытке поделиться видео или будут возникать ошибки. Это связано с тем, что для показа диалога "Поделиться" на устройстве должно быть установлено приложение Facebook для iOS. В эмуляторе такая возможность не поддерживается.
В случае с публикуемыми ссылками приложение Facebook для iOS не требуется, поэтому приложение можно тестировать в эмуляторе. Для тестирования других сценариев публикации используйте реальное устройство, на котором установлено приложение Facebook для iOS.