알림 #
알림을 통해 플레이어에게 게임 중 이벤트를 알려줄 수 있습니다. 이번 섹션에서는 Nakama 알림 엔진을 사용하여 특정 액션이 발생했을 때 플레이어에게 경고와 메시지를 보내는 방법에 대해서 살펴봅니다.
인앱 알림은 서버에서 전송한 다음, 클라이언트에 의해 수신되고 게임 내에서 표시할 수 있습니다. 영구적인 것으로 표시된 경우, 수신인이 오프라인 상태인 경우에도 서버는 알림을 수락할 수 있습니다.
인앱 알림은 전화기에서 받는 푸쉬 알림과 다릅니다. 플레이어가 게임에 있을 때에만 나타납니다.
알림 전송 #
먼저, 서버 측 코드를 설정하여 알림을 전송합니다.
알림은 특정 이벤트 이전/이후에 발화되는 등록 후크와 연결할 수 있습니다. Nakama는 오류 발생을 감지하는 로직을 처리합니다.
예를 들어, 플레이어가 처음 친구를 추가할 때 보상을 제공하려고 하면 친구가 추가된 뒤에 실행되는 RegisterAfterAddFriends
후크를 사용할 수 있습니다:
quests.ts
|
|
여기서, 함수 notificationSend
은(는) 새로운 친구가 추가될 때 사용자 ctx.userId
에게 알림을 전달합니다. 이 함수에서는 다음을 수행할 수 있습니다:
Content
알림을 통해 전달하려고 하는 데이터가 사용자 지정 키 값 쌍을 포함하는 JSON 개체입니다.code
을(를) 사용하여 사용자 지정 알림 유형을 지정하고0
을(를) 초과하는 값이 표시됩니다. 코드0
및 아래 항목은 시스템에 의해 예약됩니다.- 다른 플레이어에 의해 알림이 전송된 경우,
senderId
은(는) 알림을 전송한 사용자의 ID가 됩니다. 이 경우, 메시지는 서버에 의해 생성되었습니다.null
- 알림에
persistent = true
이(가) 포함되는 경우, 플레이어가 오프라인 상태인 경우에도 알림이 전송됩니다. 플레이어가 다시 게임에 참여할 경우, ListNotificationsAsync를 사용하여 대기 중인 알림 목록을 볼 수 있습니다.
알림 수신하기 #
이제 시스템을 통해서 알림을 전송할 수 있으니 클라이언트 측을 설정하겠습니다.
이 작업을 위해서 후크에 함수를 연결하는데, 알림이 도착하면 ReceivedNotification
후크를 적용합니다. 이 함수를 사용하여 서버에서 전송한 데이터를 처리합니다:
NotificationPopup.cs
|
|
여기서는 서버에서 notificationSend
(으)로 입력한 모든 데이터를 포함하는 IApiNotification
의 형태로 알림을 받습니다.
content
이(가) JSON 개체이기 때문에 C# 개체로 언팩해야 합니다. 원하는 형식은 숫자를 포함하는 단일 키 reward
이(가) 포함되는 개체이기 때문에 이 구조를 사용하여 클래스 Reward
을(를) 생성하고, JsonUtility.FromJson
을(를) 사용하여 Content
(으)로 변환할 수 있습니다.
그런 다음, 원하는 주체와 설명을 지정하기 위해서 텍스트 개체 _titleText
및 _descriptionText
을(를) 설정합니다.