今回からはSNSに投稿する方法について書いていきます。まずはじめにFacebookに画像をシェアする方法について書きます。
パッケージをインポートする
まずはじめにUnityのFacebook SDKをインポートします。Facebookのページからダウンロードします。この時ページの言語設定が日本語だと最新のSDKをダウンロード出来ないので、英語にする必要があります。
パッケージがダウンロード出来たらすべてインポートしてしまいます。今回使用したSDKバージョンは7.1.0です。
Facebookにアプリを登録する
Facebook SDKを使うためにはFacebookにアプリを登録する必要があります。まず、デベロッパーページに行き、上部メニューのMy Appsを選択します。もし開発者登録がされていなければこのような画面になるので、Register Nowを押して開発者登録をします。
利用規約に同意し、開発者登録が済むとこのような画面になるので、iOSかAndroidを選択します。今回はiOSを選択しました。
OSを選択すると、このような画面になるので、アプリの名称を入力しFacebook App IDを作成します。
また、カテゴリーを聞かれるので作成するアプリに沿ったものを選択します。
これでアプリが登録できました。
UnityのFacebook SDKにApp IDを設定する
作成したアプリのApp IDをUnityに登録していきます。パッケージをインポートすると、メニューにFacebookが増えているので、FacebookのEdit Settingsを選択します。すると、Inspectorに設定画面がでてくるので、そこのApp NameとApp IDに今作ったものをそれぞれ入力します。App IDはMy Appsから作成したアプリを指定すると開くページに記載してあります。
Facebookにシェアするスクリプトを作成する
次は実際にFacebookにシェアするためのスクリプトを作成します。まずは名前空間にFacebookとFacebook.UnityとSystem.Collections.Genericを追加します。シェアを行うのはFBクラスなので、初期化されていなければ初期化します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
sing UnityEngine; using System.Collections; using Facebook; using Facebook.Unity; using System.Collections.Generic; public class test : MonoBehaviour { public void facebookShareAction(){ if(!FB.IsInitialized){ StartCoroutine (initFBApp ()); }else{ OnInitComplete(); } } IEnumerator initFBApp(){ FB.Init (OnInitComplete, OnHideUnity); yield return null; } private void OnHideUnity(bool isGameShown) { } } |
次に、初期化されたあとFacebookにログインするための処理を書いていきます。今回画像のシェアを行うため、ログインはLogInWithPublishPermissionsを使用し、Publish Actionの使用許可を同時に求めます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
private void OnInitComplete() { if (!FB.IsLoggedIn) { FB.LogInWithPublishPermissions(new List<string>() { "publish_actions"}, LoginCallback); } else { StartCoroutine (TakeScreenshot ()); } } void LoginCallback(IResult result) { if (result.Error != null && result.Error.Length != 0) { }else if (!FB.IsLoggedIn) { } else { StartCoroutine(sendShareImage()); } } |
そしてFacebook.APIを使用して画像をPOSTします。画像はAssets/Resourceフォルダに配置してあります。Resourceフォルダに置くことで、Resources.Load()メソッドを使って読み込む事ができるようになります。読み込んだ画像はbyte配列に変換し、WWWFormにバイトデータとして追加しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
private IEnumerator sendShareImage() { yield return new WaitForEndOfFrame(); var tex = Resources.Load("hackist_icon") as Texture2D; byte[] screenshot = tex.EncodeToPNG(); var wwwForm = new WWWForm(); wwwForm.AddBinaryData("image", screenshot, "InteractiveConsole.png"); wwwForm.AddField("message", ""); FB.API("me/photos", HttpMethod.POST, apiCallback, wwwForm); } private void apiCallback(IResult result){ } |
これで任意のタイミングでfacebookShareAction()メソッドを呼び出すことで画像がシェアされるようになります。
終わりに
今回はFacebookに画像をシェアする方法について書きました。今回書いた内容はシェアする方法のうちの一つで、他にはダイアログを出したりする方法もあります。ちなみにこの方法だとアプリがユーザーに変わって投稿しているので、Facebookに審査に出す必要があります。
今回はFacebookだったので、次回はTwitterに投稿する方法について書いていこうと思います。
では、また。