NatShare
久しぶりにSNSシェア機能を使おうと、以前使ったNatShareを見たらUnityStoreから消えてた
Githubはある。manifest.jsonに追記したらインポートはできた
ただ使用するのにapiキーを発行しないといけなくなってるっぽい・・・アカウント作ったりめんどくさい・・・
これ入れなくても動くのかな?
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にチェックを入れると作成されるって書いてた
あった
作れた
既にいろいろ書いてあって、どこに追記したらいいか分からなかったので最後に追記した
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
別のを試す
同じアセット作者のローカル保存版アセット
使用例
二つとも入れた。
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();
いろいろオプションがあるので必要なものをつないでいく。ドキュメント↓
付随するテキスト部分(XXアプリ使用中!)が実機で実際にシェアしたときに文字化けしたので、ChatGPTに聞いたら以下のようにしたらいいって教えてくれて実際解決した。
string textToShare = "シェアするテキスト";
string encodedText = System.Uri.EscapeDataString(textToShare);
ダウンロード
NativeGallery.SaveImageToGallery(_screenshot, "GalleryTest", $"{_date}.png");
ファイル名に使う_dateは撮影したときに取得するようにした
_date = DateTime.Now.ToString("yyyyMMdd");
シャッター音
これでビルドしたら無事動いた!ビルドエラーも出ない!
すごい