Публикация в Messenger для iOS и Android

Если при разработке вы используете Facebook SDK для iOS или Android версии 4.29.0 или более новой, вы можете предоставить людям возможность публиковать ссылки и мультимедийные материалы из ваших приложений в Messenger. Эти публикации могут задействовать ваши расширения чата через ссылку атрибуции. Кроме того, ваше расширение чата появится в поле «Дополнительно» у человека, который поделился материалами.

Подробнее читайте в разделах ниже:

О том, как добавить возможность публикации в Messenger для веб-платформы, читайте здесь.

Типы публикаций

Facebook SDK поддерживает четыре типа публикаций с атрибуцией и один тип публикаций без атрибуции:

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

Тип публикации Требуется ли ID Страницы Способы использования

Общий шаблон

Необязательно

  • Общий шаблон с кнопкой
  • Общий шаблон с действием по умолчанию
  • Общий шаблон с кнопкой и действием по умолчанию

Медиа-шаблон

Обязательно

  • URI изображения медиа-шаблона
  • ID вложения медиа-шаблона
  • URL видео медиа-шаблона
  • ID вложенного видео медиа-шаблона

Музыка Open Graph

Обязательно

  • Музыка Open Graph

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

Необязательно

  • Ссылка без атрибуции
  • Ссылка с атрибуцией

Фото

Не поддерживается

  • Фото
  • Фото из библиотеки

Привязка ID Страницы к приложению

Разработчики могут указать в потоке публикации ID Страницы, и тогда при публикации контента из приложения в Messenger через Sharing SDK публикуемый контент будет соотнесен с этой Страницей. В свою очередь администраторы Страниц могут выбирать, какие приложения могут соотносить публикации с их Страницами, и предотвращать ложную атрибуцию. Чтобы разрешить приложению атрибуцию публикаций, администратор может связать ID приложения и Страницы.

Для этого следуйте инструкциям ниже:

  1. Откройте Настройки Страницы.
  2. Нажмите Платформа Messenger.
  3. В Общих настройках перейдите в раздел Привязать приложение.
  4. Введите ID приложения и нажмите кнопку Привязать.
  5. Если приложения еще НЕ БЫЛО в таблице Подписанные приложения, оно там появится с ролью «атрибуция публикаций». Если приложение уже было в этой таблице, ему просто будет присвоена новая роль «атрибуция публикаций».

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

Чтобы удалить разрешение «атрибуция публикаций» для конкретного приложения, следуйте инструкциям ниже:

  1. В таблице Подписанные приложения нажмите раскрывающееся меню в столбце «Роль» для нужного приложения.
  2. Нажмите «Атрибуция публикаций», чтобы отменить эту роль.
  3. Если «атрибуция публикаций» была единственной ролью для этого приложения, строка приложения из таблицы удаляется. В остальных случаях строка приложения остается, а со строки «атрибуция публикаций» снимается выделение.

Добавление доменов в «белый список»

Если вы используете кнопку с URL в Share SDK и хотите включить для URL расширение Messenger, вам нужно добавить домен URL в «белый список», чтобы публикация работала корректно.

Для этого следуйте инструкциям ниже:

  1. Откройте Настройки Страницы.
  2. Нажмите Платформа Messenger.
  3. В Общих настройках перейдите в раздел Привязать приложение.
  4. В поле «Белый список» доменов введите домен URL и нажмите Сохранить.

Подробнее о добавлении доменов в «белый список» читайте в документации по SDK расширений Messenger.

iOS

Предварительные требования

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

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

Подробнее читайте в статье Facebook SDK для iOS: начало работы.

Убедитесь, что ваше приложение выполняет вызов canShow для экземпляра FBSDKMessageDialog, чтобы определить, установлена ли на устройствах совместимая версия Messenger.

Пример публикации для общего шаблона

FBSDKShareMessengerURLActionButton *urlButton = [[FBSDKShareMessengerURLActionButton alloc] init];
urlButton.title = @"Visit Facebook";
urlButton.url = [NSURL URLWithString:@"https://www.facebook.com"];
    
FBSDKShareMessengerGenericTemplateElement *element = [[FBSDKShareMessengerGenericTemplateElement alloc] init];
element.title = @"This is a Cat Picture";
element.subtitle = @"Look at this cat, wow! Amazing.";
element.imageURL = [NSURL URLWithString:@"https://static.pexels.com/photos/126407/pexels-photo-126407.jpeg"];
element.button = urlButton;
    
FBSDKShareMessengerGenericTemplateContent *content = [[FBSDKShareMessengerGenericTemplateContent alloc] init];
content.pageID = // Your page ID, required for attribution
content.element = element;

FBSDKMessageDialog *messageDialog = [[FBSDKMessageDialog alloc] init];
messageDialog.shareContent = content;

if ([messageDialog canShow]) {
    [messageDialog show];
}

Пример публикации для медиа-шаблона

// Share with mediaURL
FBSDKShareMessengerURLActionButton *urlButton = [[FBSDKShareMessengerURLActionButton alloc] init];
urlButton.title = @"Visit Facebook";
urlButton.url = [NSURL URLWithString:@"https://www.facebook.com"];

NSURL *mediaURL = // Must be a Facebook URL, see media template documentation
FBSDKShareMessengerMediaTemplateContent *content = [[FBSDKShareMessengerMediaTemplateContent alloc] initWithMediaURL:mediaURL];
content.pageID = // Your page ID, required
content.mediaType = FBSDKShareMessengerMediaTemplateMediaTypeImage;
content.button = urlButton;

FBSDKMessageDialog *messageDialog = [[FBSDKMessageDialog alloc] init];
messageDialog.shareContent = content;

if ([messageDialog canShow]) {
    [messageDialog show];
}

------------------------------------------------------------------

// Share with attachmentID
FBSDKShareMessengerURLActionButton *urlButton = [[FBSDKShareMessengerURLActionButton alloc] init];
urlButton.title = @"Visit Facebook";
urlButton.url = [NSURL URLWithString:@"https://www.facebook.com"];

NSString *attachmentID = // attachmentID, see media template documentation for how to upload an attachment
FBSDKShareMessengerMediaTemplateContent *content = [[FBSDKShareMessengerMediaTemplateContent alloc] initWithAttachmentID:attachmentID];
content.pageID = // Your page ID, required
content.mediaType = FBSDKShareMessengerMediaTemplateMediaTypeImage;
content.button = urlButton;

FBSDKMessageDialog *messageDialog = [[FBSDKMessageDialog alloc] init];
messageDialog.shareContent = content;

if ([messageDialog canShow]) {
    [messageDialog show];
}

Пример публикации для музыки Open Graph

FBSDKShareMessengerURLActionButton *urlButton = [[FBSDKShareMessengerURLActionButton alloc] init];
urlButton.title = @"Visit Facebook";
urlButton.url = [NSURL URLWithString:@"https://www.facebook.com"];

FBSDKShareMessengerOpenGraphMusicTemplateContent *content = [[FBSDKShareMessengerOpenGraphMusicTemplateContent alloc] init];
content.pageID = // Your page ID, required
content.url = // open graph music url, see open graph music documentation
content.button = urlButton;

FBSDKMessageDialog *messageDialog = [[FBSDKMessageDialog alloc] init];
messageDialog.shareContent = content;

if ([messageDialog canShow]) {
    [messageDialog show];
}

Android

Предварительные требования

Следуйте инструкциям в статье Публикация материалов в Android, которые кратко изложены ниже:

Убедитесь, что ваше приложение выполняет вызов MessageDialog.canshow({template}), чтобы определить, установлена ли на устройствах совместимая версия Messenger.

Пример публикации для общего шаблона

ShareMessengerURLActionButton actionButton =
    new ShareMessengerURLActionButton.Builder()
           .setTitle("Visit Facebook")
           .setUrl(Uri.parse("https://www.facebook.com"))
           .build();
ShareMessengerGenericTemplateElement genericTemplateElement =
    new ShareMessengerGenericTemplateElement.Builder()
           .setTitle("Visit Facebook")
           .setSubtitle("Visit Messenger")
           .setImageUrl(Uri.parse("heeps://Your/Image/Url"))
           .setButton(actionButton)
           .build();
ShareMessengerGenericTemplateContent genericTemplateContent = 
    new ShareMessengerGenericTemplateContent.Builder()
           .setPageId("Your Page Id") // Your page ID, required
           .setGenericTemplateElement(genericTemplateElement)
           .build();  
                 
if (MessageDialog.canShow(genericTemplateContent)) {
    MessageDialog.show(activityOrFragment, genericTemplateContent);
}

Публикация для медиа-шаблона

// Share with mediaURL
ShareMessengerMediaTemplateContent mediaTemplateContent =
    new ShareMessengerMediaTemplateContent.Builder()
            .setPageId("Your page ID") // Your page ID, required
            .setMediaType(MediaType.IMAGE)
            .setMediaUrl(Uri.parse("https://Facebook/Media/URL")) // Must be a Facebook URL, see media template documentation
            .setButton(actionButton)
            .build();
if (MessageDialog.canShow(mediaTemplateContent)) {
    MessageDialog.show(activityOrFragment, mediaTemplateContent);
}

// Share with attachmentID
ShareMessengerMediaTemplateContent mediaTemplateContent =
    new ShareMessengerMediaTemplateContent.Builder()
            .setPageId("Your page ID") // Your page ID, required
            .setMediaType(MediaType.IMAGE)
            .setAttachmentId("Attachment Id") // AttachmentID, see media template documentation for how to upload an attachment
            .setButton(actionButton)
            .build();
if (MessageDialog.canShow(mediaTemplateContent)) {
    MessageDialog.show(activityOrFragment, mediaTemplateContent);
}

Пример публикации для музыки Open Graph

ShareMessengerOpenGraphMusicTemplateContent musicTemplateContent =
    new ShareMessengerOpenGraphMusicTemplateContent.Builder()
                .setPageId("Your page ID") // Your page ID, required
                .setUrl(Uri.parse("https://Open/Graph/Music/URL")) // Open graph music url, see open graph music documentation
                .setButton(actionButton)
                .build();

if (MessageDialog.canShow(musicTemplateContent)) {
    MessageDialog.show(activityOrFragment, musicTemplateContent);
}