WebPlayerでtwitterの投稿ページを開く
twitterの投稿ページを投稿する文字指定して開く
というのを試して盛大にハマッたのでメモ。
結論としては、OpenURL
関数使うのが一番いい。
- jsとcsのURIエンコーディング問題
- OpenURL関数とExternalEval関数
- WebPlayerのデモ
jsとcsのURIエンコーディング問題
コードのファイルの文字コードに気をつけなければならない。
jsではUTF-8LEBOM
csではUTF-16LEBOM
でないと、WWW.EscapeURL("日本語文字列")
でエンコードしても、期待した表示が出来なかった。
jsは勝手に色々と良い感じにしてくれるっぽい感じ。
C#とJS混在してもいいって人はtweetするコードだけJSで書いちゃえば良いと思う。
OpenURL関数とExternalEval関数を比較
まず前提として、
OpenURL()
は引数に指定したURLをpcならデフォルトブラウザで、スマフォならアプリを選択して開く関数。
ExternalEval()
は、WebPlayerで再生中のページで引数で指定したJavaScript関数を呼び出す関数。そのためWebPlayerでしか使えない。
OpenURL()を使用した場合
これは、どのPlatformでも使える汎用的なものだが、WebPlayerでゲームが起動しているページからURLをロードしてしまうので、またゲームのページに戻るとUnityPlayerのロード画面からになってしまう。
Application.OpenURL("http://twitter.com/intent/tweet?text=" + WWW.EscapeURL(text));
ExternalEval()でwindow.location.hrefを実行
この場合は、OpenURLと同じく、WebPlayerのページからURLに飛んでしまう。 あと、何故かdropBoxにupして試してみると、日本語表示がおかしくなる。 デモ見ればそれが分かる
Application.ExternalEval("window.location.href = 'http://twitter.com/intent/tweet?text=" + text + "'");
ExternalEval()でwindow.openを実行
これをwindowサイズ指定で実行すると、ブラウザのポップアップブロックが作動して、手動でそれを許可しなければならない。 これは、例えばゲームをプレイしてる人がスコア情報などをtweetするのを妨害している様な物なので、つらい。 あと、何故かdropBoxにupして試してみると、日本語表示がおかしくなる。
Application.ExternalEval("window.open('http://twitter.com/intent/tweet?text = " + text + "','','width=500,height=400');");
WebPlayerのデモ
一応、英語と日本語で、上記の3種類の方法を試すデモ作ってみた。 何故かJSのメソッド実行してる方法は、日本語表示が全滅している、くそが。
デモ