トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

SNSシェアと画像ダウンロードアセット【Unity】

NatShare

久しぶりにSNSシェア機能を使おうと、以前使ったNatShareを見たらUnityStoreから消えてた

bibinbaleo.hatenablog.com

Githubはある。manifest.jsonに追記したらインポートはできた

github.com

ただ使用するのにapiキーを発行しないといけなくなってるっぽい・・・アカウント作ったりめんどくさい・・・

docs.videokit.ai

これ入れなくても動くのかな?

Androidビルドエラー

NatShareを入れた状態でAndroidビルドしたらエラーが出た。入れる前はエラー出ずにビルドできてた

FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':launcher:checkReleaseDuplicateClasses'. > 1 exception was raised by workers: java.lang.RuntimeException: Duplicate class android.support.v4.app.INotificationSideChannel found in modules natshare-core-1.3.0-runtime.jar (:natshare-core-1.3.0:) and support-compat-25.1.0-runtime.jar (:support-compat-25.1.0:) Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules natshare-core-1.3.0-runtime.jar (:natshare-core-1.3.0:) and support-compat-25.1.0-runtime.jar (:support-compat-25.1.0:)

ChatGPTと話したらGradleファイルに何か書いて重複を除外できるって

Gradleファイルはなかったら自分で作れみたいなこと言われたけど、本当か?と思ってググったら、BuildSettingsのAndroidのCustom Main Gradle Templateにチェックを入れると作成されるって書いてた

docs.unity3d.com

あった

作れた


既にいろいろ書いてあって、どこに追記したらいいか分からなかったので最後に追記した

configurations {
    all {
        exclude group: 'com.android.support', module: 'support-v4'
    }
}

でもダメだった。同じエラーが出る

 

NatShare諦めようかなと思って設定見たら、Embed AndroidX Libraryという項目があった。これのチェックを外したらビルドできた!

なんかChatGPTとの会話の中でAndroidXの話もあったので引っ掛かった



でもアプリ起動できなかった;;

もういいや

PackageManagerからRemove

Native Share (Native Gallery)for Android & iOS

別のを試す

teammoko.jp

assetstore.unity.com

同じアセット作者のローカル保存版アセット

assetstore.unity.com

使用例

qiita.com

二つとも入れた。

iOSは何も設定しないでいい。AndroidはQiita記事に書いてたように設定した。

「Player Settings」で「Write Permission」を「External (SDCard)」に変更

 

撮影する部分は、アセット関係ない。今回はUIを映したくなかったので上の記事にある方法で撮影した

 

プレビュー用のImageにもセットできる

_Image_preview.sprite = Sprite.Create(_screenshot, new Rect(0, 0, _screenshot.width, _screenshot.height), Vector2.zero);

 

Share

        new NativeShare().AddFile(_screenshot)
    .SetText("XXアプリ使用中!").SetUrl("HPのURLとか")
    .Share();

いろいろオプションがあるので必要なものをつないでいく。ドキュメント↓

github.com

付随するテキスト部分(XXアプリ使用中!)が実機で実際にシェアしたときに文字化けしたので、ChatGPTに聞いたら以下のようにしたらいいって教えてくれて実際解決した。

string textToShare = "シェアするテキスト";
string encodedText = System.Uri.EscapeDataString(textToShare);

 

ダウンロード

NativeGallery.SaveImageToGallery(_screenshot, "GalleryTest", $"{_date}.png");

ファイル名に使う_dateは撮影したときに取得するようにした

_date = DateTime.Now.ToString("yyyyMMdd");

 

シャッター音

otologic.jp

これでビルドしたら無事動いた!ビルドエラーも出ない!

すごい