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

ReceivePostItem(Admin, Rank, Coupon)

public BackendReturnObject ReceivePostItem(PostType postType, string postIndate);

주의

우편 수령에 필요한 indate는 우편 불러오기 함수(UPost.GetPostList)를 통해 불러와야합니다.
우편 불러오기 없이 우편을 수령할 경우 indate가 올바르더라도 수령이 되지 않을 수 있습니다.
우편 리스트 불러오기를 통해 우편 리스트에 추가된 우편만 수령이 가능합니다.

파라미터

ValueTypeDescription
postTypePostType전체 수령할 우편의 종류
postIndatestring아이템을 받은 우편의 inDate

PostType

ValueDescription
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());
}
}
}