くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Unity×Android×SocialConnectorでツイート(シェア)機能をつけてみる

[PR] ★目指せ!絶対RGB感!★ シンプルな色当てゲーム「色博士(いろはかせ)」をリリースしました!

久々に新作をリリースしました!!(色博士(いろはかせ) - Google Play)

f:id:wannabe-jellyfish:20170521203213p:plain

かわいい博士が主役のシンプルな色当てゲーム!
全465色でボリュームたっぷり♪デザイナーだけでなく、色遊びが好きな方はぜひ!

結果画面をツイートしてみる

色博士を作るときに、よくある「結果を共有」というのをしてみたいなぁと思ったので、その時の備忘録。

Social Connectorを使えば簡単にできるよう!すごい!

Social Connectorのダウンロードとデプロイ

使い方は簡単。

  1. GitHubから、SocialConnector.unitypackageをダウンロードして、
  2. Unityでカスタムアセットを取り込むだけ

ただ、僕の環境(Windows10/Unity5.5.2f1 parsonal)では、Assets/SocialConnector/Editor/SocialConnectorPostProcess.cs
using UnityEditor.iOS.Xcode;コンパイルエラーが。。。(-_-;)
SocialConnectorPostProcess.csを削除することで上手くいったので、そのまま。

シェアしてみるコード

使い方はこんな感じ。

using System;
using System.IO;
using UnityEngine;
using SocialConnector;

public class ShareController : MonoBehaviour {

    public void Share() {
        StartCoroutine(ShareScreenShot());
    }

    IEnumerator ShareScreenShot() {
        //スクリーンショット画像の保存先を設定。ファイル名が重複しないように実行時間を付与
        string fileName = String.Format("image_{0:yyyyMMdd_Hmmss}.png", DateTime.Now);
        string imagePath = Application.persistentDataPath + "/" + fileName;

        //スクリーンショットを撮影
        Application.CaptureScreenshot(fileName);
        yield return new WaitForEndOfFrame();

        // Shareするメッセージを設定
        string text ="ツイート内容\n#hashtag ";
        string URL = "url";
        yield return new WaitForSeconds(1);

        //Shareする
        SocialConnector.SocialConnector.Share(text, URL, imagePath);
    }
}

はまったポイントは、以下の3つ

  1. スクリーンショットの保存に時間がかかるのでコルーチンを使う
  2. 保存先のファイル名はその都度、変える
    • ファイル名が重複すると、意図していない前の画像をシェアしてしまうので。
  3. ハッシュタグの後ろには、スペースを含める。
    • ツイートする文字は、textURLをconcatした文字列になる。
    • そのため、スペースが無いとハッシュタグの直後にURLが来てしまい、意図したタグにならない。。。

SocialConnector.csをいじって、Twitterだけにする

Social Connectorは高性能なので、Twitter以外にもLINEなどへのシェアができる。
ただ今回は、Twitterだけにしぼりたいなぁと思っていたので、少しいじってみることに。

ueno-yuheiさんの記事(Gmail・Line・Facebook・Twitter 公式アプリで共有させたい時のIntentの投げ方 - Qiita)を参考に、以下のように変更。

--- a/Assets/SocialConnector/SocialConnector.cs
+++ b/Assets/SocialConnector/SocialConnector.cs
@@ -34,8 +34,7 @@ namespace SocialConnector
         {
             using (var intent = new AndroidJavaObject ("android.content.Intent")) {
                 intent.Call<AndroidJavaObject> ("setAction", "android.intent.action.SEND");
+                intent.Call<AndroidJavaObject>("setPackage", "com.twitter.android");
                 intent.Call<AndroidJavaObject> ("setType", string.IsNullOrEmpty (textureUrl) ? "text/plain" : "image/png");

                 if (!string.IsNullOrEmpty (url))
                     text += "\t" + url;

これだけで、Twitterだけになりましたヽ(=´▽`=)ノ

以上!!

参考にしたサイト様