【Unity】Oculus Goでゲーム内からTwitter投稿フォームを出すまで

動機

ゲームにSNS投稿機能を付けると、みんなが遊んでくれてるのが分かって開発者としては嬉しいですよね。投稿内容もゲームの面白そうな感じが出せれば新しいユーザの呼び込みにも役立ちます。
Twitter投稿は通常のAndroidスマホ向けUnityゲームであれば既に手法が色々と確立されているのですが、Oculus Go/Gear VRではどうやればいいか分からなかったのでちょっと試してみました。

いきなり結論

Application.OpenURLを使えばOculus Goブラウザを起動できます。
以下は経緯が書いてあるだけで大したことは書いてありません。


Twitterへ投稿する手段

ゲームに限らず、アプリからTwitterへ投稿する手段は主に次の2通りのようです。
 1. WebAPIであるTwitter APIを叩く
 2. Twitter Web Intentsをブラウザで表示しユーザに投稿させる
1はAPIを使ってアプリからTwitterの色々な機能にアクセスできる反面、開発者登録、アプリ登録、Oauth認証が必要など実装工数もユーザの投稿の敷居も高くなります。対して2はブラウザで特定のURLを開くだけ、ユーザも投稿ボタンを押すだけと簡単ですが、できることは限られます。例えば画像を添付したりすることはできません。
俺は実装が簡単なWeb Intentsで行く!

Oculus Goブラウザを起動するには?

じゃあゲームからブラウザをどうすれば起動できるのん?ってことになりますが、Androidで自分のアプリから他のアプリを起動するときの常套手段はIntentを投げることです。というわけでまずOculus GoブラウザのIntent filterを調査してみたんですが…アプリから呼び出すのに良さそうなfilterが見つからない。Androidスマホのブラウザ(Chrome)とはfilter定義はだいぶ異なっています。

と、ここでふとUnityのとあるメソッドの存在を思い出しました。

そういえばAndroidスマホだとこいつでもChrome開けたな…Goが対応してるとは思えないけど試してみるか…

起動した!?

ブラウザ起動が可能ならあとはラクラクです。
Web IntentsのURLをネット上の記事を参考に組み立てます。

例えばこんな感じ。

string text = Uri.EscapeDataString("C#側で生成した文字列です。");
string url = "https://twitter.com/intent/tweet?&text=" + text;
Application.OpenURL(url);

できた。

いや画像投稿したいんだけど

Web Intentsでは画像は投稿できません。いくつか方法は考えられます。
 1. Twitter APIを使う これがおそらく正攻法
 2. あらかじめImgurなどの画像共有サービスに画像をアップロードしておき、画像URLをWeb Intentsでツイートする
……誰かお願いします。

この記事が気に入ったらサポートをしてみませんか?