[FacebookSDK] 画像やリンクの投稿

Facebookへ、iOSのSocial.frameworkではうまく投稿できなくなった。

現状できてるようなできてないような状態。
画像は渡せるけど、文字列はなんか渡せない。

そんな状況のため、アプリ更新の際に使うのをやめて、FacebookのiOS SDKをいくつかのアプリに入れてみた。
文字列は渡せなくて、リンクか画像のどちらかだけを、渡せた。

ただ注意しないといけないのは、このSDKはiOS 7以降が対象。
Facebook SDKのframeworkをOptionalで追加しても、iOS 6では起動できなかった。

Facebookにアプリ登録

Facebook Developers
https://developers.facebook.com

ログイン後にここから、アプリを登録する。

ここへのリンクは、Facebookのメニューの一番下の方にある。
fsdk0

上部メニューのMy Appsをクリックして「Add a New App」
iOSを選択して、アプリ名を入力。
fsdk1

ここでFacebookSDKのダウンロードボタンが表示される。
ダウンロードされるのはインストーラで、そのままインストールすると~/Documents/FacebookSDK のフォルダにSDKが配置される。

あとは画面上に説明されるまま、info.plistへ以下の項目を追加。

  • FacebookAppID
  • FacebookDisplayName
  • URL typesのURL Schemes

アプリのBundle Identifierを入力。

このあとに表示される「Track App Installs and App Opens」は、入れておくとインストールや起動をロギングできたり、CPI広告にも利用されるのかもしれない。

うちのアプリでは入れなかった。今回はとりあえず投稿がうまく動作すればいいので。
アプリ内課金の項目もNOに。
fsdk2

最後のFinished!まで見たら、メニューのMy Appsから対象アプリを選択する。
fsdk3

Status & ReviewのスイッチをON!

ONにできない場合は、Settings内の

  • Contact Email

が必要なはず。

  • iPhone Store ID

も入れておいた。

スイッチONができたら、使えるように。
fsdk4

あとは実装。

SDK組み込み!

インストールされたFacebookSDKフォルダから、以下をプロジェクトフォルダにコピー。

  • Bolts.framework
  • FBSDKCoreKit.framework
  • FBSDKLoginKit.framework
  • FBSDKShareKit.framework

マニュアル見る限りframework単体でいけそうだけど、なんかくっついているので全部いる。

Facebook SDK Docs:Sharing on iOS

ヘッダ

#import <FBSDKShareKit/FBSDKShareKit.h>

リンクを共有

    FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
    content.contentURL = [NSURL URLWithString:@"http://アドレス"];

    [FBSDKShareDialog showFromViewController:self
                                 withContent:content
                                    delegate:nil];

FBSDKShareLinkContentは、
contentTitle
contentDescription
imageURL
のプロパティがあって、なんとなく変更ができる。
アプリURLの場合はとくにいらなかった雰囲気。

表示されるリンク情報に関するプロパティなので、Descriptionに何かいれるとメッセージ欄に挿入されたりというわけではない。

画像を共有

    FBSDKSharePhoto *photo = [[FBSDKSharePhoto alloc] init];
    photo.image = ここにUIImage;
    photo.userGenerated = YES;
    FBSDKSharePhotoContent * content = [[FBSDKSharePhotoContent alloc] init];
    content.photos = @[photo];
    
    [FBSDKShareDialog showFromViewController:self
                                 withContent:content
                                    delegate:nil];

画像は配列になっていて複数渡せる。
FBSDKSharePhotoを複数作って、content.photosに複数渡す。

FBSDKShareDialogを使うと、Facebookアプリへ移動し、投稿するとまた戻って来る。
戻ってこれるのは、このアプリに紐付く、最初に設定したURL Schemeが利用されているのだろう。

その場でログイン等が発生しないので、Social.frameworkの次に簡単な実装と思う。

文字列を渡せず、リンクか画像のどちらかなので、うまく、使う必要はありそう。

シェアする

  • このエントリーをはてなブックマークに追加

フォロミー

コメントをどうぞ

メールアドレスが公開されることはありません。