前提・実現したいこと
AndroidでUnityのアセット、SocialConnectorを利用して画像ツイートをしようと考えてます。
SocialConnectorのサンプルには画像をスクショしてツイートしていますが(これはできました)、アセットファイル内にあらかじめ画像を置いてそれをツイートをしたいです。
SocialConnectorは画像パスを引数にするようなので、やることはhttps://teratail.com/questions/94495とほぼ同じだと思いAssets/StreamingAssets以下に画像ファイルを置いてそのパスを読み取れば出来ると思いましたが、Androidで読み取りができません。
試したこと
よくわかっていないのですが、AndroidはWWWを使ってロードしろと上の質問の解答に書いてあり、WWWは古いようなので、https://qiita.com/k7a/items/df6dd8ea66cbc5a1e21dなどを参考にしてUnityWebRequest等で試しました。
public void TweetButton() { StartCoroutine("Tweet"); } IEnumerator Tweet() { string path = System.IO.Path.Combine(Application.streamingAssetsPath, "twitter.png"); UnityWebRequest request = UnityWebRequest.Get(path); yield return request.SendWebRequest(); string text = request.downloadHandler.text; SocialConnector.Share("test", "url", text); }
上の方法ではUnity上ではエラーは出ず、Android上ではツイートはできるのですが画像が出力されません。"test"の場所をtextにしてtext内に何が入っているのか確認しましたが、何も表示されませんでした。
他にもWWWや普通にロード(上のstring pathを直接引数にして)など色々やってみましたがだめでした。
補足情報(FW/ツールのバージョンなど)
Unity2019.3.15f1でためしてます
SocialConnector:https://github.com/anchan828/social-connector
Unityのパスの仕組みや読み書きについて全く分かっていないと思います。それについて出来れば分かりやすく書かれた本やブログなどあればそれも教えて下さい。よろしくお願いします。
追記
回答者様のアドバイス等を入れて、上のコルーチンの部分を以下のように直しました。
IEnumerator Tweet(){ string image = "image.png"; string streamingPath = Path.Combine(Application.streamingAssetsPath,image); UnityWebRequest request = UnityWebRequest.Get(streamingPath); yield return request; string persistentPath = Path.Combine(Application.persistentDataPath, image); File.WriteAllBytes(persistentPath, request.downloadHandler.data); SocialConnector.Share("test", "url", persistentPath); }
どうもStreamingAssets内のファイルは読み込み出来ないようなので、persistentDataPathに画像データをコピーしてから読み込むようにしようとしましたが、まだ画像が表示されないです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/09 11:46
2020/06/09 11:58
2020/06/09 13:19