diadia

興味があることをやってみる。自分のメモを残しておきます。

android facebookシェアのメモ

前提

intentやShareCompatを使ったシェア方法を諦め、facebook SDKを使ってシェアを行う。

メモ

とりあえず使うにはコーディングの他に準備がある。

まずFacebookに開発者の登録が必要

facebookにアプリの登録が必要 -> appのidがandroidマニフェストで記述する必要が出てくるから。

facebookのアプリの登録ページにはwebアプリの他にandroidアプリを作成する欄をボタンで設けることができる。

ここでキーハッシュなるものを登録する必要がある。 キーハッシュは2種類登録する。一つは開発者のキーハッシュ。これはアンドロイドスタジオ環境にはユニバーサルな値があるらしくそれを取得する。

またアンドロイドをリリースした際にはリリースしたキーも登録する。

この他にFacebook Activityを追加して、それをAndroidManifest.xmlに含めることもおこなう。

Android - Facebookログイン - ドキュメンテーション - Facebook for Developers

コーディング

facebookのシェアには種類がある。当初シェアしたい画像とともにリンクをシェアしたいと思っていたが、ルールが有るようだ。

  • リンクのシェア
  • 画像のシェア
  • 動画のシェア
  • 画像、動画が混在するマルチメディアのシェア

これらのどれに該当するかでコードが変わってくる?変わってくる.

リンクシェア
ShareLinkContent content = new ShareLinkContent.Builder()
        .setContentUrl(Uri.parse("https://developers.facebook.com"))
        .build();



写真
Bitmap image = ...
SharePhoto photo = new SharePhoto.Builder()
        .setBitmap(image)
        .build();
SharePhotoContent content = new SharePhotoContent.Builder()
        .addPhoto(photo)
        .build();


動画
Uri videoFileUri = ...
ShareVideo = new ShareVideo.Builder()
        .setLocalUrl(videoUrl)
        .build();
ShareVideoContent content = new ShareVideoContent.Builder()
        .setVideo(video)
        .build();


マルチメディア
SharePhoto sharePhoto1 = new SharePhoto.Builder()
    .setBitmap(...)
    .build();
SharePhoto sharePhoto2 = new SharePhoto.Builder()
    .setBitmap(...)
    .build();
ShareVideo shareVideo1 = new ShareVideo.Builder()
    .setLocalUrl(...)
    .build();
ShareVideo shareVideo2 = new ShareVideo.Builder()
    .setLocalUrl(...)
    .build();

ShareContent shareContent = new ShareMediaContent.Builder()
    .addMedium(sharePhoto1)
    .addMedium(sharePhoto2)
    .addMedium(shareVideo1)
    .addMedium(shareVideo2)
    .build();

ShareDialog shareDialog = new ShareDialog(...);
shareDialog.show(shareContent, Mode.AUTOMATIC);

リンクのシェアはちゃんとurlの他に画像も表示される仕組みのようだからリンクシェアで良いと思われる。

とりあえずShareLinkContentに、シェアしたいリンクをsetContentUrlメソッドを実行して格納したオブジェクトを生成する。 これはandroidのクライアント側でpostを実行し、レスポンスとしてurlを返せばこのオブジェクトは使える。retrofitのonResponseメソッド内に挿入すればよいだろう。

ShareLinkContent content = new ShareLinkContent.Builder()
        .setContentUrl(Uri.parse("https://developers.facebook.com"))
        .build();

このオブジェクトをシェアするにはシェアインターフェースの実装が必要になるそうだ。 このインターフェースには種類があり、ボタンとシェアダイアログ、メッセージダイアログが存在する。

現在のsdkはシェアダイアログを開く際にユーザー端末のfacebookアプリが存在するか確認する必要がなくなったそうだ。 昔はシェアする必要があった。

この他にシェアリンクをクリックしたらアプリが自動起動する仕組みも実装することができるようだ。app linkという機能のようだ。

シェアボタンはボタンを押すとシェアダイアログを起動する機能のボタンである。