ReceivePostItem(Admin, Rank, Coupon)
public BackendReturnObject ReceivePostItem(PostType postType, string postIndate);
주의
우편 수령에 필요한 indate는 우편 불러오기 함수(UPost.GetPostList)를 통해 불러와야합니다.
우편 불러오기 없이 우편을 수령할 경우 indate가 올바르더라도 수령이 되지 않을 수 있습니다.
우편 리스트 불러오기를 통해 우편 리스트에 추가된 우편만 수령이 가능합니다.  
파라미터
| Value | Type | Description | 
|---|---|---|
| postType | PostType | 전체 수령할 우편의 종류 | 
| postIndate | string | 아이템을 받은 우편의 inDate | 
PostType
| Value | Description | 
|---|---|
| Admin | 콘솔에서 발송하는 관리자 우편 | 
| Rank | 랭킹 결산 후 자동으로 지급되는 랭킹 우편 | 
| Coupon | 뒤끝 콘솔의 웹 쿠폰 설정에서 생성한 페이지로 쿠폰을 사용 후 발송되는 쿠폰 우편 | 
| User | 유저끼리 자신의 데이터를 이용하여 발송한 유저 우편 | 
설명
우편의 indate를 이용하여 우편 한 개를 수령합니다.
관리자 우편, 쿠폰 우편, 랭킹 우편의 경우 수령 시 리턴값이 동일하므로, 수령 로직을 동일하게 작성해도 무관합니다.
유저 우편은 별도의 리턴값이 제공됩니다.  
- 리턴값에 기존 우편 기능(Backend.Social.Post) 리턴값에 존재했던 데이터 타입 "S", "L", "M"이 존재하지 않습니다.
- indate가 존재하더라도 PostType이 다를 경우 수령할 수 없습니다.
- 수령 후, 우편 수신 목록에서 자동으로 삭제되며, returnValue를 통해 어떤 아이템을 수령하는지 확인할 수 있습니다.
- 해당 우편을 수령한 유저는 콘솔의 - 우편 관리 - 해당 우편 세부정보에서 수령한 날짜와 함께 표시됩니다.(쿠폰, 유저 제외)
- 만료일이 지난 우편은 수령할 수 없습니다.
- 수령 후 자동으로 유저의 DB에 아이템의 정보가 삽입/수정되지 않으며, 수동으로 클라이언트에서 아이템의 정보를 수령인의 게임 정보에 업데이트하는 과정이 필요합니다.
Example
동기
PostType type = PostType.Admin;
//우편 리스트 불러오기
BackendReturnObject bro = Backend.UPost.GetPostList(type, limit);
LitJson.JsonData json = bro.GetReturnValuetoJSON()["postItems"];
//우편 리스트중 0번째 우편의 inDate 가져오기
string recentPostIndate = json[0]["inDate"].ToString();
// 동일한 PostType의 우편 수령하기
Backend.UPost.ReceivePostItem(type, recentPostIndate);
비동기
//우편의 종류
PostType type = PostType.Admin;
//우편 리스트 불러오기
Backend.UPost.GetPostList(type, limit, callback => {
     LitJson.JsonData json = callback.GetReturnValuetoJSON()["postItems"];
     //우편 리스트중 0번째 우편의 inDate 가져오기
     string recentPostIndate = json[0]["inDate"].ToString();
     // 우편 수령하기
     Backend.UPost.ReceivePostItem(type, recentPostIndate, callback2 => {
            if(callback2.IsSuccess()) {
                Debug.Log("우편 수령에 성공했습니다.");
            }
      });
});
SendQueue
//우편의 종류
PostType type = PostType.Admin;
//우편 리스트 불러오기
SendQueue.Enqueue(Backend.UPost.GetPostList, type, limit, callback => {
     LitJson.JsonData json = callback.GetReturnValuetoJSON()["postItems"];
     //우편 리스트중 0번째 우편의 inDate 가져오기
     string recentPostIndate = json[0]["inDate"].ToString();
     // 동일한 PostType의 우편 수령하기
      SendQueue.Enqueue(Backend.UPost.ReceivePostItem, type, recentPostIndate, callback2 => {
            if(callback2.IsSuccess()) {
                Debug.Log("우편 수령에 성공했습니다.");
            }
      });
});
ReturnCase
Success cases
우편 수령에 성공한 경우
statusCode : 200
message : Success
returnValue : GetReturnValuetoJSON 참조
Error cases
존재하지 않는 postIndate를 입력한 경우
statusCode : 404
errorCode : NotFoundException
message : post not found, post을(를) 찾을 수 없습니다
GetReturnValuetoJSON
아이템 종류의 개수가 0개인 우편일 경우
{
    "postItems": []
}
아이템 종류의 개수가 1개인 우편일 경우
랭킹 우편의 경우, 등록 가능한 아이템이 1개이므로 해당 형식만 리턴됩니다.
{
    "postItems": [
        {
            "item": {
                "chartFileName": "chartExample.xlsx",
                "itemID": "i101",
                "itemName": "아이템111",
                "hpPower": "1",
                "aabab": "1"
            },
                    "itemCount": 1,
                    "chartName": "Chart"
        }
    ]
}
아이템 종류의 개수가 2개 이상의 우편일 경우
{
    "postItems": [
        {
            "item": {
                "chartFileName": "chartExample.xlsx",
                "itemID": "i101",
                "itemName": "아이템111",
                "hpPower": "1",
                "aabab": "1"
            },
                    "itemCount": 1,
                    "chartName": "Chart"
        },
        {
            "item": {
                "chartFileName": "Weapon.xlsx",
                "itemID": "sword1",
                "itemName": "롱소드",
                "atk": "17",
                "money": "350"
            },
                    "itemCount": 2
                    "chartName": "Chart"
        }
    ]
}
Sample Code
public class ReceiveItem {
    public string chartFileName;
    public string itemID;
    public string itemName;
    public int hpPower;
    public int itemCount;
    public override string ToString() {
        return $"chartFileName:{chartFileName}\n" +
        $"itemID:{itemID}\n" +
        $"itemName:{itemName}\n" +
        $"hpPower:{hpPower}\n" +
        $"itemCount:{itemCount}\n";
    }
}
public void ReceivePostItemTest() {
    BackendReturnObject bro = Backend.UPost.GetPostList(PostType.Coupon, 100);
    if(bro.IsSuccess()) {
        string postIndate = bro.GetReturnValuetoJSON()["postList"][0]["inDate"].ToString();
        var receiveBro = Backend.UPost.ReceivePostItem(PostType.Coupon, postIndate);
        if(receiveBro.IsSuccess() == false) {
            Debug.LogError("우편 수령중 에러가 발생했습니다. : " + receiveBro);
            return;
        }
        LitJson.JsonData receivePostItemJson = receiveBro.GetReturnValuetoJSON()["postItems"];
        for(int i = 0; i < receivePostItemJson.Count; i++) {
            ReceiveItem item = new ReceiveItem();
            if(receivePostItemJson[i]["item"].ContainsKey("itemName")) {
                item.itemName = receivePostItemJson[i]["item"]["itemName"].ToString();
            }
                        // 랭킹 보상의 경우 chartFileName이 존재하지 않습니다.  
            if(receivePostItemJson[i]["item"].ContainsKey("chartFileName")) {
                item.chartFileName = receivePostItemJson[i]["item"]["chartFileName"].ToString();
            }
            if(receivePostItemJson[i]["item"].ContainsKey("itemID")) {
                item.itemID = receivePostItemJson[i]["item"]["itemID"].ToString();
            }
            if(receivePostItemJson[i]["item"].ContainsKey("hpPower")) {
                item.hpPower = int.Parse(receivePostItemJson[i]["item"]["hpPower"].ToString());
            }
            item.itemCount = int.Parse(receivePostItemJson[i]["itemCount"].ToString());
            Debug.Log(item.ToString());
        }
    }
}