UnityでiOSのSocial.frameworkを使ってつぶやくネイティブプラグインを作ってみた

今Unityで作りかけているゲームで、TwitterとFacebookで得点をつぶやける機能を追加したかったのでネイティブプラグインを作ってみました。

GitHubに「SocialPost」という名前で公開していて、ソースコード一式を上げています。

unity-SocialPostPlugin

Twitterにつぶやきたい時は

Facebookにつぶやきたい時は

と記載するだけで使用できます。


プラグインを作成する中で引っかかった点2つ。

.cs->.mm間での文字列の受け渡し

Unityからプラグイン経由でObjective-Cに文字列を渡す時、
.csからはchar型で渡して、.mm側で受け取った後、NSString型にキャストしなければいけないのを知らず、ちょっと手間取ってしまいました。

受け取った文字列はキャストする際に合わせてNSUTF8StringEncodingでエンコードしておきます。


Unityからビルドした.xcodeprojにフレームワークを追加する。

Unityからビルドしたxcodeprojには予めSocial.frameworkがリンクされていないので、通常なら手動でBuild Phases->Link Binary With Librariesからフレームワークを追加する必要があるのですが、
調べてみたらPostprocessBuildPlayerという機能を使ってビルド後に追加できるようでしたので、さっそく試してみました。

ビルド プレイヤー パイプライン / Build Player Pipeline

  1. Unityでxcodeprojをビルド
  2. ビルド プレイヤー パイプラインでpythonのスクリプトを実行
  3. PostprocessBuildPlayer_Socialとmod_pbxproj.pycが実行されてxcodeprojにSocial.frameworkが追加される

みたいな流れになっています。

mod_pbxproj.pycは下記のものを使用させていただいてます。

mod_pbxproj.pyc

今回は先に見つかったのでPythonで追加する方法を使用しましたが、調べてみたらRubyでもできるそうです。