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

ReceivePostItem(User)

public BackendReturnObject ReceivePostItem(PostType postType, string postIndate);

파라미터

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

PostType

ValueDescription
Admin콘솔에서 발송하는 관리자 우편
Rank랭킹 결산 후 자동으로 지급되는 랭킹 우편
Coupon쿠폰 전용 웹에서 쿠폰 코드를 입력하여 받는 우편
Webshop웹숍에서 아이템 구매 후 발송되는 우편 (뉴플레이에서는 인증 번호 발송 우편도 포함)
User유저끼리 자신의 데이터를 이용하여 발송한 유저 우편

설명

우편의 indate를 이용하여 우편 한 개를 수령합니다.

  • 리턴값에 기존 우편 기능(Backend.Social.Post) 리턴값에 존재했던 데이터 타입 "S", "L", "M"이 존재하지 않습니다.
  • indate가 존재하더라도 PostType이 다를 경우 수령할 수 없습니다.
  • 수령 후에 우편이 자동으로 삭제되지 않으며, DeleteUserPost 함수를 호출할 경우에만 삭제됩니다.
  • 만료일이 지난 우편은 수령할 수 없습니다.
  • 수령 후 자동으로 유저의 DB에 아이템의 정보가 삽입/수정되지 않으며, 수동으로 클라이언트에서 아이템의 정보를 수령인의 게임 정보에 업데이트하는 과정이 필요합니다.

Example

5.18.6 이전 SDK 버전 안내

5.18.6 이전 버전 SDK에서는 웹숍 우편 처리를 하기 위해서는 아래의 함수를 이용하여 우편 처리를 해야 합니다.

// 우편 타입을 5로 지정해야 웹숍 우편을 불러올 수 있습니다.
var bro = Backend.NewFunctions.Mail.GetMailList((MailType)5);

동기

PostType type = PostType.User;

//우편 리스트 불러오기
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.User;

//우편 리스트 불러오기
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.User;

//우편 리스트 불러오기
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

{
"postItems": [
{
"key1": "아이템1",
"key2": "아이템2",
"key3": "아이템3"
}
]
}

삽입한 데이터

Param param = new Param();
Dictionary<string, string> dic = new Dictionary<string, string>();

dic.Add("key1", "아이템1");
dic.Add("key2", "아이템2");
dic.Add("key3", "아이템3");

param.Add(columnName, dic);

string rowIndate = Backend.GameData.Insert(tableName, param).GetInDate();

PostItem postItem = new PostItem {
Title = "우편 제목",
Content = "우편 내용",
TableName = tableName,
RowInDate = rowIndate,
Column = columnName
};

Backend.UPost.SendUserPost(userIndate, postItem);

Sample Code

void ReceivePostOneInternal(PostType postType, BackendReturnObject bro) {
if(bro.IsSuccess() == false) {
Debug.LogError($"우편 수령하기에 실패했습니다. : " + bro);
return;
}

StringBuilder stringBuilder = new StringBuilder();

try {
foreach(var postItemKey in bro.GetReturnValuetoJSON()["postItems"].Keys) {
stringBuilder.AppendLine($"{postItemKey} : {postJson[postItemKey].ToString()}");
}
}
catch(Exception e) {
Debug.LogError("우편의 아이템 파싱 도중 에러가 발생했습니다. : " + e);
}

Debug.Log(stringBuilder.ToString());
}