Game Mailbox

Là tính năng dùng để server gửi các mail cho người chơi ở trong game

Chức năng Game Mailbox giúp làm được các việc sau:

  • Gửi các thông báo update, hoặc các thông tin sự kiện ... về cho người chơi trong game.

  • Gửi các phần thưởng cho người chơi, để người chơi nhận thưởng.

  • Gửi một link cho người chơi qua mail, và người chơi bấm vào link đó để xem thông tin, và có thể nhận một phần thưởng nào đó.

  • Người chơi đến một mốc nào đó trong game, và gửi kích hoạt lên server, để server gửi 1 mail thưởng cho người chơi.

Có thể sử dụng Plugin MailBox thay vì phải thực thi từng API, xem hướng dẫn tại đây

Trong Plugin MailBox không áp dụng cho API: Kích hoạt mail tự động

1. Lấy số lượng mail chưa đọc.

  • Dùng để lấy số lượng các mail chưa đọc và hiển thị cho người chơi biết có bao nhiêu mail chưa đọc.

void GetMailCount(Action<long> onComplete, Action<long, string> errorCallback = null)

Các tham số

  • onComplete: Hàm xử lý với param là số lượng các mail chưa đọc

  • errorCallback: Hàm xử lý khi có lỗi xảy ra

Code mẫu:

GSMMailBox.GetMailCount((count) =>
{
    Debug.Log($"Mail Count: {count}");
});

2. Lấy số lượng mail chưa đọc theo từng loại mail.

  • Dùng để lấy số lượng các mail chưa đọc theo từng loại.

  • Ví dụ khi biết loại mail Reward có 3 mail chưa đọc, thì lúc này sẽ có tutorial bàn tay chỉ vào để khiến user mở ra, đọc mail và nhận thưởng, giúp tăng tương tác vào mailbox của user.

void GetMailNumber(Action<MailNumnberInfo> onComplete, Action<long, string> errorCallback = null)

Các tham số

  • onComplete: Hàm xử lý với param là thông tin số lượng các mail chưa đọc theo từng loại

  • errorCallback: Hàm xử lý khi có lỗi xảy ra

Code mẫu:

GSMMailBox.GetMailNumber((info) =>
{
    int normal=info.Normal; //Số lượng mail chưa đọc loại Normal
    int reward=info.Reward; //Số lượng mail chưa đọc loại Reward
    int openlink = info.OpenLink; //Số lượng mail chưa đọc loại OpenLink
    int input= info.Input; //Số lượng mail chưa đọc loại Input
    int total=info.Total; //Tổng số lượng mail chưa đọc
    Debug.Log($"Mail Reward: {reward}");
});

3. Lấy danh sách mail

  • Lấy danh sách các mail về và xử lý logic tùy theo loại mail

  • Server chỉ trả về tối đa 30 mail, nếu người chơi muốn nhận thêm, thì phải đọc và xóa các mail đã sử dụng.

  • Mỗi mail nếu chưa đọc và chưa nhận thưởng, hoặc chưa sử dụng thì sẽ chỉ tồn tại tối đa trong 30 ngày.

  • Nếu mail đã được sử dụng thì sẽ hiển thị trong vòng 3 ngày, sẽ tự động bị xóa.

 void GetMails(Action<MailBoxItem[]> onComplete, string lang = "en", Action<long, string> errorCallback = null)

Các tham số

  • onComplete: Hàm xử lý với param là danh sách các mail

  • lang : Mã ngôn ngữ tiêu chuẩn theo từng quốc gia, và là mã ngôn ngữ mà người chơi đang sử dụng trong game.

  • errorCallback: Hàm xử lý khi có lỗi xảy ra

Code mẫu:

//Lấy chi tiết danh sách mail
GSMMailBox.GetMails(results =>
{
    foreach (var mail in results)
    {
        Debug.Log(JsonUtility.ToJson(mail));
        //Tiếp tục xử lý mail
    }
}, LanguageCode.vi);

Xử lý logic theo từng loại mail

  • Nếu type == Normal thì hiển thị nội dung mail, và đánh đấu dọc mail đã đọc thì dùng GSMMailBox.ReadMail(mailId);

  • Nếu type == Reward thì hiển thị nội dung mail, và đánh đấu dọc mail đã đọc thì dùng GSMMailBox.ReadMail(mailId);. Sau đó xử lý phần thưởng trả cho user từ trường rewardđánh đấu đã sử dụng mail dùng GSMMailBox.UseMail(mailId);

  • Nếu type == Openlink thì hiển thị nội dung mail, và đánh đấu dọc mail đã đọc thì dùng GSMMailBox.ReadMail(mailId);. Sau đó xử lý redirect sang link từ trường linkđánh đấu đã sử dụng mail dùng GSMMailBox.UseMail(mailId);

  • Nếu type == Input thì sẽ hiển thị 1 ô nhập, và có nút submit, khi nhấn nút submit thì sẽ gửi giá trị nhập lên server theo api ở mục 5. Gửi giá trị ô nhập

4. Đánh dấu đã đọc mail

  • Dùng để khi mở mail ra đọc, thì đánh dấu lại.

void ReadMail(string mailId, Action onSuccess = null, Action<long, string> errorCallback = null)

Các tham số

  • mailId: Id của mail muốn đánh dấu đọc.

  • onSuccess: Hàm xử lý khi đánh dấu đọc mail thành công.

  • errorCallback: Hàm xử lý khi có lỗi xảy ra, và param là lý do, hoặc lỗi

Code mẫu:

 GSMMailBox.ReadMail(mailId, () =>
{
    //xử lý khi thành công
}, (error) =>
{
    //xử lý khi lỗi

});

5. Đánh dấu đã sử dụng mail

  • Dùng để khi mail đã claim phần thưởng, hoặc đã openlink thì đánh dấu mail đã được sử dụng.

  • Mục đích để server sẽ không cho phép claim cho lần sau.

  • Các mail đã sử dụng thì sau 3 ngày sẽ tự động bị xóa.

void UseMail(string mailId, Action onSuccess = null, Action<long, string> errorCallback = null)

Các tham số

  • mailId: Id của mail muốn đánh dấu sử dụng.

  • onSuccess: Hàm xử lý khi đánh dấu sử dụng mail thành công.

  • errorCallback: Hàm xử lý khi có lỗi xảy ra, và param là lý do, hoặc lỗi.

Code mẫu:

 GSMMailBox.UseMail(mailId, () =>
{
    //xử lý khi thành công
}, (error) =>
{
    //xử lý khi lỗi

});

6. Gửi giá trị ô nhập

  • Dùng để khi mail là loại ô nhập, thì gửi giá trị ô nhập lên server xử lý.

  • Mail sẽ được đánh dấu là đã sử dụng khi submit thành công.

  • Các mail đã sử dụng thì sau 3 ngày sẽ tự động bị xóa.

  • Khi gửi thành công thì nếu mail có reward thì trả reward cho user.

void SubmitInput(string mailId, string inputValue, Action onSuccess = null, Action<long, string> errorCallback = null)

Các tham số

  • mailId: Id của mail đang chọn.

  • inputValue: Giá trị của ô nhập

  • onSuccess: Hàm xử lý khi submit giá trị inputValue thành công.

  • errorCallback: Hàm xử lý khi có lỗi xảy ra, và param là lý do, hoặc lỗi.

Code mẫu:

GSMMailBox.SubmitInput(mail.id, "tuyennv@cscmobi.com", () =>
{
    Debug.Log("Submit Email success");
}, (statusCode, error) =>
{
    //Hiển thị popup message lỗi
});

7. Kích hoạt mail tự động

  • Tình huống kịch bản game muốn, khi user đến một level (ví dụ là: level7), hay 1 điểm nào đó thì sẽ nhận được mail có phần thưởng.

void ActivatedTriggerPoint(string triggerPoint, Action onSuccess = null, Action<long, string> errorCallback = null)

Các tham số

  • triggerPoint: Điểm kích hoạt mail.

  • onSuccess: Hàm xử lý khi kích hoạt mail thành công.

  • errorCallback: Hàm xử lý khi có lỗi xảy ra.

Code mẫu:

GSMMailBox.ActivatedTriggerPoint("level7",
    ()=>{Debug.Log("ActivatedTriggerPoint Success")},
    ()=>{Debug.Log("ActivatedTriggerPoint fail")}
);

8. Xóa mail

  • Chỉ nên xóa các mail đã đọc, và đã used

void DeleteMails(string[] mailIds, Action onSuccess = null, Action<long, string> errorCallback = null)

Các tham số

  • mailIds: Danh sách id của các mail muốn xóa.

  • onSuccess: Hàm xử lý khi xóa mail thành công.

  • errorCallback: Hàm xử lý khi có lỗi xảy ra.

Code mẫu:

GSMMailBox.DeleteMails(new string[]{"64cb37d09d59cbc0f9b3d6e5"},
    ()=>{Debug.Log("Delete Mail Success")},
    ()=>{Debug.Log("Delete Mail fail")}
);

Last updated