iOSおよびAndroidのMessengerへのシェア

iOS用またはAndroid用Facebook SDKバージョン4.29.0以降を使って開発する場合は、利用者がリンクとメディアの両方をアプリからMessengerにシェアできるよう設定できます。ユーザーがMessengerにシェアすると、アトリビューションリンクを通じてチャット拡張機能をトリガーできます。チャット拡張機能がシェアインターフェイスの[詳細]セクションに表示されます。

詳しくは、次のセクションをご覧ください。

ウェブ用Messengerへのシェアの実装については、ウェブ用Messengerへのシェアをご覧ください。

シェアタイプ

Facebook SDKには、以下のシェアタイプが提供されています。

  • リンクシェア(既存のリンクシェアと同じですが、アトリビューション分析のためのpageIDがあります)
  • 写真(アトリビューション分析なし)

次の表に、Messengerへのシェアでサポートされているすべてのシェアタイプ、およびページIDまたはアプリIDが必須かどうかを示します。

シェアタイプ ページIDが必須かどうか アプリ

リンクシェア

任意

  • アトリビューション分析なしのリンク
  • アトリビューション分析ありのリンク

写真

サポートされない

  • 写真
  • ライブラリからの写真

アプリIDとページIDのリンク

開発者はシェアフローでページIDを指定できます。これにより、利用者がシェアSDKを経由してアプリからMessengerにコンテンツをシェアすると、そのコンテンツがページにアトリビューションされます。ページ管理者は、どのアプリがページのシェアアトリビューションを使うことができるかを制御することによって、アトリビューションミスを防ぐことができます。アプリにシェアアトリビューションを付与する場合、管理者は対象のアプリIDとページIDをリンクさせます。

アプリIDとページIDをリンクするには、次のようにします。

  1. ページの[設定]を開きます。
  2. [Messengerプラットフォーム]セクションをクリックします。
  3. [一般設定][アプリをリンク]セクションを開きます。
  4. アプリIDを入力し、[リンク]ボタンをクリックします。
  5. アプリが[リンクしたアプリ]の表にまだない場合は、「シェアアトリビューション」の役割が付いた状態で表示されます。アプリがすでに表にある場合は、そのアプリに新しい「シェアアトリビューション」の役割が追加されます。

ページ管理者は、アプリからシェアアトリビューションを使う権限を削除することもできます。

指定したアプリの「シェアアトリビューション」の役割を削除するには、次のようにします。

  1. [リンクしたアプリ]の表で、アプリの「役割」列のドロップダウンをクリックします。
  2. [シェアアトリビューション]をクリックして役割の選択を解除します。
  3. アプリの役割が「シェアアトリビューション」のみであった場合は、表からそのアプリの行が削除されます。他の役割がある場合、行は引き続き表に残されますが、「シェアアトリビューション」列の選択は解除された状態になります。

ドメインの登録

シェアSDKで[URL]ボタンを使い、Messengerで開いた際にURLのMessengerエクステンションを有効にする場合は、正しくシェアできるようにURLドメインを登録する必要があります。

ドメインの登録手順は、次のとおりです。

  1. ページを表示します。
  2. [設定] > [高度なメッセージ]に移動します。
  3. ドメインを[ホワイトリストに追加されたドメイン]フィールドに追加します。

詳しくは、MessengerエクステンションSDK - 必須ドメインのホワイトリスト登録をご覧ください。

iOS

前提条件

Messengerへのシェア機能をアプリに追加する前に、以下の手順を実行してください。

  • モバイル開発環境にiOS用Facebook SDKを追加します。
  • Messengerプラットフォームツールを使って、FacebookアプリIDを設定してページIDにリンクします。
  • アプリの.plistファイルに、アプリID、表示名、写真へのアクセス理由(人による判読が可能なもの)を追加します。
  • FBSDKShareKit.frameworkをプロジェクトにリンクします。

詳しくは、iOS用Facebook SDKスタートガイドをご覧ください

また、アプリからMessageDialogインスタンスでcanShowまたはvalidateを呼び出して、互換性のあるバージョンのMessengerが利用者のデバイスにインストールされているかどうかを確認してください。

制限

引用プロパティはサポートされていません。

リンクシェアの例

guard let url = URL(string: "https://newsroom.fb.com/") else {
    preconditionFailure("URL is invalid")
}

let content = ShareLinkContent()
content.contentURL = url

let dialog = MessageDialog(content: content, delegate: self)

do {
    try dialog.validate()
} catch {
    print(error)
}

dialog.show()

写真シェアの例

// Assumes your assets contain an image named "puppy"
guard let image = UIImage(named: "puppy") else {
    return
}

let photo = SharePhoto(image: image, userGenerated: true)
let content = SharePhotoContent()
        content.photos = [photo]

let dialog = MessageDialog(content: content, delegate: self)

// Recommended to validate before trying to display the dialog
do {
    try dialog.validate()
} catch {
    print(error)
}

dialog.show()

動画シェアの例

// Assuming you have a URL for a PHAsset
let video = ShareVideo(videoURL: assetURL)
let content = ShareVideoContent()
content.video = video

let dialog = MessageDialog(content: content, delegate: self)

// Recommended to validate before trying to display the dialog
do {
    try dialog.validate()
} catch {
    print(error)
}

dialog.show()

Androidの場合

前提条件

Androidでのシェアに記載されている指示に従います。以下はその概要です。

また、アプリでMessageDialog.canshow({template})を呼び出して、互換性のあるバージョンのMessengerが利用者のデバイスにインストールされているかどうかを確認してください。