본문으로 건너뛰기
버전: 5.10.2

우편 불러오기

1. 우편 불러오기 함수 로직 작성​

사전 준비에서 작성한 BackendPost.cs의 PostListGet 함수에 내용을 추가합니다.

만약 차트의 이름을'아이템 차트'로 생성하지 않으셨을 경우, PostListGet 함수의 chartName을 콘솔에서 설정한 차트 이름으로 변경해주세요.

BackendPost.cs​

수정 전

    public void PostListGet(PostType postType) {
// Step 3. 우편 불러오기
}

수정 후

    public void PostListGet(PostType postType) {
var bro = Backend.UPost.GetPostList(postType);

// 만약 차트 이름을 '아이템 차트'로 설정하지 않았을 경우,
// 해당 값을 콘솔에서 설정한 차트 이름과 동일하게 설정해주세요
string chartName = "아이템 차트";

if(bro.IsSuccess() == false) {
Debug.LogError("우편 불러오기 중 에러가 발생했습니다.");
return;
}

Debug.Log("우편 리스트 불러오기 요청에 성공했습니다. : " + bro);

if(bro.GetFlattenJSON()["postList"].Count <= 0) {
Debug.LogWarning("받을 우편이 존재하지 않습니다.");
return;
}

foreach(LitJson.JsonData postListJson in bro.GetFlattenJSON()["postList"]) {
Post post = new Post();

post.title = postListJson["title"].ToString();
post.content = postListJson["content"].ToString();
post.inDate = postListJson["inDate"].ToString();

// 우편의 아이템
if(postType == PostType.User) {
if(postListJson["itemLocation"]["tableName"].ToString() == "USER_DATA") {
if(postListJson["itemLocation"]["column"].ToString() == "inventory") {
foreach(string itemKey in postListJson["item"].Keys) post.postReward.Add(itemKey, int.Parse(postListJson["item"][itemKey].ToString()));
} else {
Debug.LogWarning("아직 지원되지 않는 컬럼 정보 입니다. : " + postListJson["itemLocation"]["column"].ToString());
}
} else {
Debug.LogWarning("아직 지원되지 않는 테이블 정보 입니다. : " + postListJson["itemLocation"]["tableName"].ToString());
}
} else {
foreach(LitJson.JsonData itemJson in postListJson["items"]) {
if(itemJson["chartName"].ToString() == chartName) {
string itemName = itemJson["item"]["itemName"].ToString();
int itemCount = int.Parse(itemJson["itemCount"].ToString());

if(post.postReward.ContainsKey(itemName)) {
post.postReward[itemName] += itemCount;
} else {
post.postReward.Add(itemName, itemCount);
}

post.isCanReceive = true;
} else {
Debug.LogWarning("아직 지원되지 않는 차트 정보 입니다. : " + itemJson["chartName"].ToString());
post.isCanReceive = false;
}
}
}
_postList.Add(post);
}

for(int i = 0; i < _postList.Count; i++) {
Debug.Log($"{i}번 째 우편\n" + _postList[i].ToString());
}
}

2. BackendManager.cs에 함수 호출 추가​

해당 함수가 호출되기 위해서는 게임 실행 시 자동으로 호출되는 BackendManager에서 호출해야 합니다.
뒤끝 초기화와 뒤끝 로그인이 이루어진 후에 함수를 호출할 수 있도록 추가합니다.

BackendManager.cs​

수정 전

    async void Test() {
await Task.Run(() => {
BackendLogin.Instance.CustomLogin("user1", "1234"); // 뒤끝 로그인 함수

// 우편 로직 추가

Debug.Log("테스트를 종료합니다.");
});
}

수정 후

    async void Test() {
await Task.Run(() => {
BackendLogin.Instance.CustomLogin("user1", "1234"); // 뒤끝 로그인 함수

BackendPost.Instance.PostListGet(PostType.Admin); // [추가] 우편 리스트 불러오기

Debug.Log("테스트를 종료합니다.");
});
}

3. 유니티에서 테스트​

스크립트를 수정한 후, 유니티 디버깅을 실행시키고 유니티의 Console 로그를 확인합니다.

이때 로그에서 '콘솔에서 발송된 우편들의 목록'이 표시되어야 함수 호출에 성공한 것입니다.
해당 로그 외에 statusCode : 400, 404, 409 에러등이 발생할 경우에는 GetPostList 에러케이스를 통해 어떠한 에러로 문제가 발생하였는지 확인할 수 있습니다.

에러 정보​

'아직 지원되지 않는 차트 정보 입니다'라는 경고 로그가 발생할 경우
해당 코드에서 사용하는 차트 이름은 '아이템 차트'를 기본적으로 사용합니다. 만약 우편 발송 시에 등록한 차트의 제목이 '아이템 차트'가 아니라면 위 코드에서 chartName을 '아이템 차트'가 아닌 설정한 차트 이름으로 변경해주세요.

4. 콘솔에서 우편 조회 여부 확인​

유저가 우편을 조회할 경우, 해당 우편의 발송 대상칸에서는 미수령으로 표기되는 유저를 볼 수 있습니다.
해당 유저가 우편을 수령할 경우에는 수령일에 수령한 날짜가 기입됩니다.

우편 조회 전

우편 조회 후