firebase unity sdk에서는 저장소의 listall같은 기능(하위경로 확인)이 존재하지 않는다.
그래서 goolge cloude function을 이용하여 구현하여야 한다.
## 공식 문서링크
https://cloud.google.com/functions/docs?hl=ko
요금은 대략
월 200만건 무료이고
100만건당 0.4달러
라고 보면된다 (CPU환경이나 메모리에따라 요금 상이함)
# 하는 방법
기존 firebase와 연결해 놓은 googlecloud 를 이용한다.
대시보드 |
---
함수 만들기 눌러서
인증되지 않은 호출 허용 체크
리전 선택
ADD 트리거 클릭
인증되지 않은 호출 허용 체크
리전 선택
ADD 트리거 클릭
---
트리거 Storage 선택 |
---
각종 설정 알잘딱 하시고 |
---
대략 이런식으로 사용하시면 됩니다
```
using Firebase.Storage;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Networking;
public class FirebaseStorageAllBucketList : MonoBehaviour
{
public List<string> stringList;
public int deleteCnt;
public string folderPath;
[System.Serializable]
public static class JsonHelper
{
public static List<T> FromJson<T>(string json)
{
string newJson = "{ \"array\": " + json + "}";
Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>>(json);
return wrapper.Items;
}
private class Wrapper<T>
{
public List<T> Items;
}
}
public void CallGetallBucket(string folderPath)
{
StartCoroutine(GetBucketList(folderPath));
}
IEnumerator GetBucketList(string folderPath )
{
string url = $"(함수 url 입력)?bucket=(사용자 버킷)&folder={folderPath}";
using (UnityWebRequest www = UnityWebRequest.Get(url))
{
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success)
{
Debug.Log(www.error);
}
else
{
Debug.Log(www.downloadHandler.text);
string[] splitArray = www.downloadHandler.text.TrimStart('[').TrimEnd(']').Split(',');
stringList = new List<string>();
foreach (string item in splitArray)
{
stringList.Add(item.Trim().Trim('\"'));
}
deleteCnt = stringList.Count;
}
}
}
}
```
이상입니다!
댓글 없음:
댓글 쓰기