在 iOS 和 Android 分享至 Messenger

利用 Facebook iOS SDK 或 Android SDK 4.29.0 版或更新版本進行開發時,您可讓用戶將連結和媒體從應用程式分享至 Messenger。透過歸因連結,這些分享可用於觸發聊天擴充功能。更多分享者的抽屜也會出現聊天擴充功能。

詳情請參閱下列章節:

如需在網頁建置分享至 Messenger 功能,請參閱在網頁分享至 Messenger

分享類型

Facebook SDK 提供四種可歸因分享類型,和一種不可歸因分享類型:

下表列出「分享至 Messenger」功能支援的所有分享類型,同時指出是否需要粉絲專頁或應用程式編號,以及範本使用方式。

分享類型 需要粉絲專頁編號? 應用

一般型範本

選用

  • 含按鈕的一般型範本
  • 含預設動作的一般型範本
  • 含按鈕和預設動作的一般型範本

媒體範本

必要

  • 媒體範本圖像 URI
  • 媒體範本圖像附件編號
  • 媒體範本影片 URI
  • 媒體範本影片附件編號

開放社交關係圖音樂

必要

  • 開放社交關係圖音樂

連結分享

選用

  • 不含歸因的連結
  • 含歸因的連結

相片

不支援

  • 相片
  • 相片圖庫的相片

連結應用程式和粉絲專頁編號

開發人員可在分享流程中指定粉絲專頁編號,然後當用戶透過「分享 SDK」將內容從應用程式分享至 Messenger 時,該內容會歸因於指定的粉絲專頁。因此,粉絲專頁管理員能夠藉由控制哪些應用程式可使用粉絲專頁的分享歸因,避免錯誤歸因。若要將分享歸因授予應用程式使用,管理員可連結應用程式編號和粉絲專頁編號。

若要連結應用程式編號和粉絲專頁編號:

  1. 前往粉絲專頁的設定
  2. 點擊 Messenger 平台區塊。
  3. 前往一般設定中的連結應用程式區塊。
  4. 輸入應用程式編號,然後點擊連結按鈕。
  5. 如果這個應用程式尚未在訂閱的應用程式表中,便會顯示在表中,並連結「分享歸因」角色。如果該應用程式已經在表中,則應用程式會新增「分享歸因」角色。

粉絲專頁管理員也可移除應用程式使用分享歸因的權限。

若要移除指定應用程式的「分享歸因」角色:

  1. 訂閱的應用程式表中,點擊應用程式的「角色」欄下拉式功能表。
  2. 點擊「分享歸因」以取消選取該角色。
  3. 如果「分享歸因」為應用程式的唯一角色,該應用程式列會從表中移除。否則,該列會保留下來,但「分享歸因」列會變成取消選取。

網域允許清單

如果您使用「分享 SDK」中的網址按鈕,並想要網址於 Messenger 中開啟時,啟用網址的 Messenger 擴充功能,則必須將網址網域列入允許清單,才能使分享正確作用。

若要將網域列入允許清單:

  1. 前往粉絲專頁的設定
  2. 點擊 Messenger 平台區塊。
  3. 前往一般設定中的連結應用程式區塊。
  4. 已列入允許清單的網域欄位中,輸入網址的網域,然後點擊儲存

如需深入瞭解允許清單,請參閱 Messenger 擴充功能 SDK:將必要網域列入允許清單

iOS

必要條件

在應用程式中加入「分享至 Messenger」功能前,請先完成以下步驟:

如需更多資訊,請參閱 Facebook iOS SDK 新手指南

另請確定應用程式呼叫的是 FBSDKMessageDialog 實例的 canShow,以判斷用戶是否在裝置上安裝相容的 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];
}

開放社交關係圖音樂分享範例

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);
}

開放社交關係圖音樂分享範例

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);
}