分享到 iOS 和 Android 版 Messenger

使用 iOS 或 Android 4.29.0 或更新版本專用的 Facebook SDK 進行開發時,您可讓用戶同時將連結和媒體從您的應用程式分享到 Messenger。這些分享可透過歸因連結用於觸發您的聊天擴充功能,並且會將您的聊天擴充功能放到分享者的「更多」導覽列上。

詳情請參閱下列各節:

若要在網絡版 Messenger 中導入分享功能,請參閱分享到網絡版 Messenger

分享類型

Facebook SDK 提供了 4 個已歸因的分享類型,以及 1 個未歸因的分享類型:

下表列出了分享到 Messenger 時可使用的所有分享類型,並指明是否需要專頁或應用程式編號,以及如何使用範本。

分享類型 是否需要專頁編號? 應用程式

通用範本

自選

  • 含有按鈕的通用範本
  • 含有預設動作的通用範本
  • 含有按鈕和預設動作的通用範本

媒體範本

必要

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

開放式圖表音樂

必要

  • 開放式圖表音樂

連結分享

自選

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

相片

不支援

  • 相片
  • 圖庫相片

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

開發人員可在分享流程中指定專頁編號,而當用戶透過分享 SDK 的方式將內容從應用程式分享到 Messenger 時,內容便會歸因到專頁。接著,專頁管理員便可控制哪些應用程式能將分享歸因用於專頁,借此防止歸因不實的問題發生。為了將分享歸因權限授予應用程式,管理員會連結應用程式編號與專頁編號。

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

  1. 前往專頁的設定
  2. 點擊 Messenger Platform 部分。
  3. 前往一般設定連結應用程式部分。
  4. 輸入應用程式編號,然後點擊連結按鈕。
  5. 如果這個應用程式不在訂閱的應用程式表格中,則會顯示在列有相關「分享歸因」角色的表格中。如果應用程式已在表格中,則系統會為應用程式新增「分享歸因」角色。

此外,專頁管理員也可以移除應用程式使用分享歸因的權限。

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

  1. 訂閱的應用程式表格中,點擊應用程式「角色」欄內的下拉式清單。
  2. 點擊「分享歸因」以取消選取角色。
  3. 如果「分享歸因」是應用程式的唯一角色,則應用程式所在的列就會從表格中移除。否則,系統會將這一列保留下來,但取消選取「分享歸因」列。

將網域列入允許清單

如果您在分享 SDK 中使用了網址按鈕,且希望為 Messenger 中開啟的網址啟用 Messenger 擴充功能,就必須將網址網域列入允許清單,分享才能正常運作。

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

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

若要進一步瞭解許可清單,請參閱 Messenger 擴充功能 SDK - 必要網域允許清單

iOS

必要條件

在應用程式中加入分享到 Messenger 的功能前,請完成下列步驟:

  • iOS 專用 Facebook SDK 新增至您的流動開發環境
  • 使用 Messenger Platform 工具配置您的 Facebook 應用程式編號,並將其連結到專頁編號。
  • 新增您的應用程式編號、顯示名稱,並提供容易理解的理由陳述,說明為什麼您需要存取應用程式 .plist 檔案的相片。
  • FBSDKShareKit.framework 連結至您的專案。

詳情請參閱開始使用 iOS 專用 Facebook 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);
}