[Unity6対応] SNSアプリへシェアする方法 Twitter、Threads :Social Connector編

Unity解説

UnityでThreadsやTwitter(現:X)などSNSへシェア投稿したい!

Unityで作ったAndroidアプリからSNSに連携する方法を解説するよ!
Android Studioは出てこないよ!

本記事では、UnityでAndroidからSNSアプリへシェア連携する方法として、SocialConnectorをUnity6に導入する方法を解説します。
★Android Archive(aar)ビルドはしませんのでAndroid Studioは登場しません。
この方法ではTwitter(現:X)や他のSNSにも同時に対応できますが、各アプリで少しずつ制約がありますのでご注意ください。

2025/10更新 Unity6への手順に更新しました。

※今回の開発環境(2025/10試行)
Unity: 6000.2.7f2 (Unity6.2)
Android: 9~15(API 28~36, SDK36使用)

Social Connector を使ったテキストのSNSシェア

冒頭でも触れましたが、Social Connectorは文字や画像などをAndroidやiOSの連携機能に渡すための仕組みです。少し古いアセットですがUnity6でも導入はできます。

SocialConnectorでの連携はOSのインテントという仕組みを使っていて、直接アプリを開くのではなく、どのアプリでシェアするかをユーザに選ばせるタイプです。
普段シェアボタンを押したときに、いろんなアプリが並んでる選択画面を見たことがあると思います。余談ですがアレは「チューザ」と言います。

チューザ

アセットのインポート

Social Connectorはanchan828氏のGitHubにありますのでDLしてインポートましょう。

GitHub - anchan828/social-connector: Social Connector
Social Connector. Contribute to anchan828/social-connector development by creating an account on GitHub.

初見だと戸惑うGitHubですね。
CodeのとこをクリックしたらDownload ZIPが出てくるので、まとめてダウンロードできます。

GitHubのZIPダウンロードは右上のCodeとかいたボタン

ダウンロードしたら、どこかに解凍しておきましょう。

解凍できたら、中に入っているunitypackageをUnityエディタのAssetsのとこに放り込みます。

SocialConnector.unitypackageをインポート
inport unity package

必要なのは3つです。ほかのファイルは要りません。

  • AndroidManifext
  • filepath.xml
  • SocialConnector.cs

iOSはごめんなさい開発環境がないので分からないです。

[Unity6] Android ライブラリプロジェクトの作成

従来のやり方ではUnity6でAndroidビルドができません。ここでは、Unity6に対応した新しい方法を紹介します。

従来からの変更点

Android機で画像をシェアするにはFileProvider対応をする必要があります。
FileProviderとはAndroidのセキュリティ機能を介して他アプリにコンテンツを共有するためのAndroid側コンポーネントです。
ファイルの共有  |  Android デベロッパー  |  Android Developers

Social ConnectorではFileProviderを利用したシェアをしているので、そのためのセッティングをする必要があります。ただ、Social Connectorの最終更新が古く作者anchan282氏の解説では現代のAndroid SDKとUnityバージョンに対応できない部分が2つあります。

対処として、
①Unity6でAndroid ライブラリプロジェクトを作成
AndroidXライブラリを使う
をします。

Android ライブラリプロジェクト(英語ではAndroid Library plug-ins)は簡単にいうと、Unity上でAndroid Libraryが作れる仕組みです。
従来のresフォルダが無くなりSocialConnector同梱のfilepath.xml が置けないため、対策としてこの手法を使います。

たとえばUnity上でHoge.androidlib というフォルダを作るとAndroid ライブラリプロジェクトHogeとして認識されます。

androidlib の中にはビルドするためのbuild.gradle、ライブラリを宣言するManifestを配置します。
下記のような階層にします。このMyFeature.androidlibが1つのGradleのビルド単位になります。

📁 Assets
  📁 Plugins
    📁 Android
      📁 MyFeature.androidlib
        📄 build.gradle
        📁 src
          📁 main/
            📄 AndroidManifest.xml
            📁 res
              📁 xml
                📄 filepaths.xml

各ファイルは後述します。今回Javaファイルは必要ありませんがsrc/mainフォルダが必要です。

AndroidManifest.xml

AndroidManifestはSocialConnectorにあるファイルを使います。
MyFeature.androidlib/src/main/AndroidManifest.xml に配置します。

一部、中身を修正します。赤字のところを変更し、要らないところを消してください。
当時は画像のアクセスにサポートライブラリという仕組みを使っていましたが、現代ではAndroidXに変わっているためです。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <application
        android:theme="@style/UnityThemeSelector"
        android:icon="@drawable/app_icon"
        android:label="@string/app_name">
        <activity
            android:label="@string/app_name"
            android:name="com.unity3d.player.UnityPlayerActivity">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="unityplayer.UnityActivity"
                android:value="true" />
        </activity>
        <provider
            android:name="android.support.v4.content.FileProvider"
            android:name="androidx.core.content.FileProvider"

            android:authorities="com.kyusyukeigo.socialconnector.fileprovider"
            android:authorities="${applicationId}.fileprovider"

            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/filepaths"></meta-data>
        </provider>
    </application>
</manifest>

authorities 属性を${applicationId}で自動にしていますが、
もし固定する場合は自分のパッケージ名を入れてください。
Player Settings→ Other SettingsのIdentification にあります。

パッケージ名はPlayer Settingsから

※Play ストアに公開するのであれば、適切に設定しておいてください。ストアに登録したら変更できません。

filepaths.xml

SocialConnectorに入っているfilepaths.xml をMyFeeature.androidlib/res/xml/filepaths.xml に移動します。

中身は編集しなくてよいです。

build.gradle

build.gradleはSocialConnectorに同梱しません。
Unityの公式マニュアルからbuild.gradle の内容をコピーしてきてnamespace だけ書き換えます。ここもパッケージ名をそのまま書きましょう。
https://docs.unity3d.com/6000.2/Documentation/Manual/android-library-plugin-create.html

apply plugin: 'com.android.library'

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}

android {
    namespace "net.coacoa.socialTrial1"
    compileSdk getProperty("unity.compileSdkVersion") as int
    buildToolsVersion = getProperty("unity.buildToolsVersion")

    compileOptions {
        sourceCompatibility JavaVersion.valueOf(getProperty("unity.javaCompatabilityVersion"))
        targetCompatibility JavaVersion.valueOf(getProperty("unity.javaCompatabilityVersion"))
    }

    defaultConfig {
        minSdk getProperty("unity.minSdkVersion") as int
        targetSdk getProperty("unity.targetSdkVersion") as int
        ndk {
            abiFilters.addAll(getProperty("unity.abiFilters").tokenize(','))
            debugSymbolLevel getProperty("unity.debugSymbolLevel")
        }
        versionCode getProperty("unity.versionCode") as int
        versionName getProperty("unity.versionName")
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile    ('proguard-android-optimize.txt'), 'proguard-rules. pro'
        }
    }
}

作成したbuild.xmlは MyFeature.androidlibの中に入れます。

Androidライブラリプロジェクトをビルド

ここまででビルドの準備が整いました。プラットフォームをAndroidに変えてビルドしてください。

ビルドが通ればAndroidネイティブのインテント機能が使えるようになりますので、SocialConnectorを通じてあなたのゲームのスクリプトに組み込めます。

補足ですが、Unity6の環境ではFileProviderが既に使えたのでMavenからサポートライブラリ(AndroidX)をDLしてくる必要はなさそうです。SocialConnector同梱のサポートライブラリも削除しておかないとビルドエラーになるので注意です。

Social Connectorスクリプトの修正

Social Connectorのスクリプトを1行変更します。前述のFileProviderのパッケージ名を変更します。

Assets/SocialConnector/SocialConnector.cs

//var fileProvider = new AndroidJavaClass("android.support.v4.content.FileProvider");
var fileProvider = new AndroidJavaClass("androidx.core.content.FileProvider");

テキストをSNSシェアするボタンを作る

ここまでで、SocialConnectorを使う準備が整いました。

単純にボタンを押したら固定文字をシェアする例です。ボタンのスクリプトを作って、Buttonコンポーネントに取り付けましょう。

SocialConnectorを使うスクリプト

ButtonThreads .cs

using UnityEngine;

public class ButtonThreads : MonoBehaviour
{
    public void Post()
    {
        SocialConnector.SocialConnector.Share("TEST POST BY Unity");
    }
}

SocialConnector.SocialConnectorは、1つがnamespaceでもう1つがクラス名です。

作ったスクリプトはシェアボタンにAttachします。

Androidビルドしてテスト

SocialConnectorを使ったインテントはUnityエディタでは動作しません。実機で試しましょう。

AndroidビルドにSwtch PlatformしてからBuildし、実機をつないでBuild And Runです。
実機のほうの開発者設定は公式マニュアルをご覧くださいませ。

実機でボタンを押すと、アプリを選択する欄が出てきますのでThreadsを選択してみます。
(Instagramのアカウントでログインを済ませておく)

Twitterなどの他アプリにもこのままでテキストシェアできます。

画像をSNSシェアする

スクリーンショットや用意したロゴなどをシェアしたいときもSocial Connectorは利用できます。
例としてスクリーンキャプチャのスクリプトを書いていきましょう。

画像シェアのスクリプトを実装

今回はスクリーンショットをそのまま貼り付けるようにしました。

using UnityEngine;

public class ButtonThreads : MonoBehaviour
{

    string imagePath
    {
        get
        {
            return Application.persistentDataPath + "/image.png";
        }
    }

    public void Post()
    {
        ScreenCapture.CaptureScreenshot("image.png");
        SocialConnector.SocialConnector.Share("TEST", "https://coacoa.net", imagePath);
    }
}

SocialConnector.Share()の引数は、文章、Webサイトのリンク、画像の場所です。

実装すると下記動画のようにスクショをシェアできます。
(めっちゃ個人情報が見えてるので一部隠しています)

※SNSアプリによっては画像が貼れない場合もあるそうです

(参考)Write Permission

解説記事によっては外部ストレージの権限をOnにするような指示があります。
古いAndroidでは権限が必要だったためだと思いますが現代ではほぼ不要だと思います。
これがついているとアプリ初回起動時に権限確認が出てしまうので、どうしても無理だったときのみ試してみてください。

Androidの開発公式でも「If your app is on a device that runs API level 19 or higher, you don’t need to declare this permission」と言われていますね。API 19はAndroid 4.4です。

まとめ

UnityでAndroidアプリからThreadsやTwitterのSNSアプリへシェア連携する方法を解説しました。

SNSアプリへの連携にはSocial Connectorを使います。
Android特有の設定がけっこう面倒ですが、シェアの効果は絶大(らしい)のでぜひ試してみてください。

2023/7
手持ちのXperia1ではThreadsに画像シェアできませんでした。
Galaxy S21ではできたので、Threads側の問題と思います。
解消されることを祈っております。
(とはいうもののAndroid 9はもう誰も使っていないのでは・・・?)

かわいい我が子にオリジナルアプリを!

コメント

タイトルとURLをコピーしました