Tweet機能をつけるために調べたことをメモ。
なんか便利なプラグインがあるみたいですけど
つぶやくときに認証が必要(OAuthっていうの?)だったりするんですよね。
あれ嫌いなんです…いちユーザーとして使うのがめんどくさい。
前のアプリでIntentを使ってつぶやけるようにしたので
それをUnityでもできるようにしました。
iOSとかはこんなことする必要なくてメソッド1つ呼ぶだけでいいみたいなんですけどね・・・
Androidメンドクサス
やりたいこと
前作ったアプリ(Eclipse+Java)では下記のような書き方をしていました。//Activityクラス内に記述
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT,"つぶやく内容");
intent.setType("text/plain");
this.startActivity(intent);
Tweetボタンを押すと、アプリ選択が出て、つぶやける。
こんな感じ。
これと同じことをUnityでやりたかった。
方法
Tweet用クラスの用意
・Create->C#Script・Twitterとか適当に名前つける。
![]() |
| スクリプト追加 |
using UnityEngine;
public static class Twitter
{
#if UNITY_ANDROID
private static AndroidJavaObject unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
private static AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
private static void tweet(string text)
{
AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent", "android.intent.action.SEND");
intent.Call<AndroidJavaObject>("putExtra", new object[] { "android.intent.extra.TEXT", text });
intent.Call<AndroidJavaObject>("setType", "text/plain");
currentActivity.Call("startActivity", intent);
intent.Dispose();
}
#else
static void tweet(string text) {
throw new System.NotImplementedException();
}
#endif
public static void Tweet(string text)
{
tweet(text);
}
}
- どこからでも呼び出せるTweetメソッドを用意。
- ANDROIDの場合のみIntentを使った処理。
- JavaクラスはAndroidJavaObjectっていうのを使うと利用できるみたいです。
- 文字列定数はここみて書き換えました。
- このScriptはGameObjectに紐づけないのでMonoBehaviourの継承は外しました。
※C#の例外なげるとUnityどうなるかは知りません。
呼び出し用スクリプト
適当なボタン置いて押されたらTweetできるようにしてみた。・空のGameObject追加
・C#スクリプト追加
・GameObjectにスクリプト適用
![]() |
| ボタン用スクリプト追加 |
using UnityEngine;
public class TweetButton : MonoBehaviour
{
void OnGUI()
{
if (GUI.Button(new Rect(10, 10, 200, 200), "Tweet"))
{
Twitter.Tweet("つぶやきシロー元気かな");
}
}
}
実行
でけたー。参考サイト
→Unity系記事まとめ







