Cloud Storage for Unityを使ってFirebase Storageにアプリ内の画像を
送信したいです。
下記は完了しています。
・Android用のgoogle-servicesファイルはAssets内に設定済み
・Cloud Storage用のSDK(UnityPackage)もインポート済み
・Firebaseコンソールのアプリ登録やCloud Storageも作成済み
・Cloud Storageにimagesフォルダ作成済み
Unityのシュミレータでテストすると問題なくimagesフォルダ内に画像が
格納されます。
しかしAndroidデバイステストでAndroidにアプリをインストールして
シュミレータのようにテストをしてもなぜか格納されません。
ちなみにFirebaseのAuth認証ととRealTimeDatabaseへの格納はできます。
Androidデバイステストのみうまくいかないのはなぜでしょうか?
分かる方押してください。
環境)
PC: Windows10
Unity2019.4.0f1
言語:C#
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using Firebase; using Firebase.Database; using Firebase.Unity.Editor; using Firebase.Storage; using System; public class SendDisplay : MonoBehaviour { [SerializeField]Image sendImage = null; [SerializeField]Text nickNameText = null; [SerializeField]InputField inputComment = null; //usrCommentMessage [SerializeField]Dropdown DdLevel = null; //Level [SerializeField]GameObject DialogNoBox = null; [SerializeField]GameObject DialogSended = null; List<PhotoType> photoList; string path; public int indexNo; DatabaseReference _FirebaseDB; //DBへ参照を持ったobjectを保持する。 FirebaseStorage _Storage; StorageReference storage_ref; StorageReference thumbNailFile_ref; Firebase.Auth.FirebaseUser _FirebaseUser; //Firebaseに接続した際の認証情報を保持する。 Firebase.Auth.FirebaseAuth auth; string userId; string nickName; string commentString; void Start() { auth = Firebase.Auth.FirebaseAuth.DefaultInstance; indexNo = PlayerPrefs.GetInt("indexno", 0); nickName = PlayerPrefs.GetString("nickname", ""); nickNameText.text = nickName; photoList = new List<PhotoType>(); photoList = PlayerPrefsUtility.LoadList<PhotoType>("photolist"); path = Application.persistentDataPath + "/" + photoList[indexNo].FileName +".png"; sendImage.sprite = LoadScript(path); AuthLogin(); //FirebaseAuth認証 //FirebaseDatabaseのインスタンスをセット FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("https://hogehoge.firebaseio.com/"); DatabaseReference reference = FirebaseDatabase.DefaultInstance.RootReference; //FirebaseStorageのインスタンスをセット _Storage = FirebaseStorage.DefaultInstance; storage_ref = _Storage.GetReferenceFromUrl("gs://hogehoge.appspot.com"); } //Image表示 Sprite LoadScript(string path) { if(string.IsNullOrEmpty(path)) return null; if(System.IO.File.Exists(path)) { byte[] bytes = System.IO.File.ReadAllBytes(path); Texture2D texture2D = new Texture2D(1, 1); texture2D.LoadImage(bytes); Sprite sprite = Sprite.Create( texture2D, new Rect(0,0, texture2D.width, texture2D.height), new Vector2(0.5f, 0.5f)); return sprite; } return null; } public void OnClickStorageTest() { //サムネイル画像保存先を指定 thumbNailFile_ref = storage_ref.Child("images/" + _FirebaseUser.UserId + photoList[indexNo].FileName + ".png"); //サムネイル画像保存元を指定して送信 thumbNailFile_ref.PutFileAsync(path).ContinueWith((System.Threading.Tasks.Task<StorageMetadata> task) => { if(task.IsFaulted || task.IsCanceled){ //error処理 }else{ StorageMetadata metadata = task.Result; //success処理 } }); } public void OnClickSend() { inputComment = inputComment.GetComponent<InputField>(); commentString = inputComment.text; if(commentString == "") { DialogNoBox.SetActive(true); }else{ _FirebaseDB = FirebaseDatabase.DefaultInstance.GetReference("Lists"); Dictionary<string, object> itemMap = new Dictionary<string, object>(); itemMap.Add("Day", GetDateTime()); itemMap.Add("FileName", _FirebaseUser.UserId + indexNo.ToString("D3")); itemMap.Add("Level", DdLevel.value); itemMap.Add("UsrComment", commentString); itemMap.Add("Sender", nickName); itemMap.Add("Flag", 1); Dictionary<string, object> map = new Dictionary<string, object>(); map.Add(_FirebaseUser.UserId + indexNo.ToString("D3"), itemMap); _FirebaseDB.UpdateChildrenAsync(map); DialogSended.SetActive(true); } } void AuthLogin() { auth.SignInAnonymouslyAsync().ContinueWith(task => { if(task.IsCanceled){ Debug.LogError("SignInAnonymouslyAsync was canceled."); return; } if(task.IsFaulted){ Debug.LogError("SignInAnonymouslyAsync encountered an error:" + task.Exception); return; } _FirebaseUser = task.Result; Debug.LogFormat("User signed in succesfully: {0} ({1})", _FirebaseUser.DisplayName, _FirebaseUser.UserId); userId = _FirebaseUser.UserId; Debug.Log("authid:" + userId); // PlayerPrefs.SetString("authid", userId); }); PlayerPrefs.SetString("authid", "0000"); PlayerPrefs.Save(); } int GetDateTime() { DateTime now = DateTime.Now; return now.Year * 10000 + now.Month * 100 + now.Day; } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。