Facebookへ、iOSのSocial.frameworkではうまく投稿できなくなった。
現状できてるようなできてないような状態。
画像は渡せるけど、文字列はなんか渡せない。
そんな状況のため、アプリ更新の際に使うのをやめて、FacebookのiOS SDKをいくつかのアプリに入れてみた。
文字列は渡せなくて、リンクか画像のどちらかだけを、渡せた。
ただ注意しないといけないのは、このSDKはiOS 7以降が対象。
Facebook SDKのframeworkをOptionalで追加しても、iOS 6では起動できなかった。
Facebookにアプリ登録
Facebook Developers
https://developers.facebook.com
ログイン後にここから、アプリを登録する。
ここへのリンクは、Facebookのメニューの一番下の方にある。
上部メニューのMy Appsをクリックして「Add a New App」
iOSを選択して、アプリ名を入力。
ここでFacebookSDKのダウンロードボタンが表示される。
ダウンロードされるのはインストーラで、そのままインストールすると~/Documents/FacebookSDK のフォルダにSDKが配置される。
あとは画面上に説明されるまま、info.plistへ以下の項目を追加。
- FacebookAppID
- FacebookDisplayName
- URL typesのURL Schemes
アプリのBundle Identifierを入力。
このあとに表示される「Track App Installs and App Opens」は、入れておくとインストールや起動をロギングできたり、CPI広告にも利用されるのかもしれない。
うちのアプリでは入れなかった。今回はとりあえず投稿がうまく動作すればいいので。
アプリ内課金の項目もNOに。
最後のFinished!まで見たら、メニューのMy Appsから対象アプリを選択する。
Status & ReviewのスイッチをON!
ONにできない場合は、Settings内の
- Contact Email
が必要なはず。
- iPhone Store ID
も入れておいた。
スイッチONができたら、使えるように。
あとは実装。
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の次に簡単な実装と思う。
文字列を渡せず、リンクか画像のどちらかなので、うまく、使う必要はありそう。