설치 및 환경 구성
SDK 다운로드
BackndChat-1.2.1 이상을 사용하실 경우에는 Backend SDK 버전이 5.11.9 이상이어야합니다.
채팅 기능만 사용할 경우에는 아래 SDK만 import 해주시기 바랍니다.(뒤끝 베이스는 로그인 기능 외 사용 불가)
BackendChat-1.1.0 이하 버전에서 BackndChat-1.2.1 이상으로 업그레이드를 할 경우, Assets > TheBackend > BackendChat 폴더를 삭제해주시고, 다시 인스펙터에서 채팅 UUID를 설정해주세요.
또한 namespace가 BackendChat에서 BackndChat으로 변경되었으므로, using BackndChat; 으로 변경해주시기 바랍니다.
- BackndChat-1.3.0.unitypackage [2024-10-29]
- Android, iOS, Windows, Mac(Editor), Linux
채팅 활성화 하기
콘솔에서 채팅을 활성화하는 방법은 다음과 같습니다.
1. 콘솔에 접속합니다.
2. 채팅 아래의 채널 또는 신고 및 제재 또는 설정을 클릭합니다.
3. 채팅 사용하기 버튼을 클릭합니다.
채팅 채널 생성 하기
콘솔에서 채팅 -> 채널에서 채팅 채널을 생성 하실 수 있습니다.
1. 채널을 클릭 합니다.
2. 채널그룹 및 채널 생성하기
- 채널 그룹 옆 + 버튼을 클릭 합니다.
- 채널 그룹 이름 과 채널당 최대 인원을 입력 후 Fallback 채널을 선택 하고 다음 버튼을 클릭 합니다.
- 첫 번째 채널 이름을 입력 후 생성하기 버튼을 클릭 합니다.
설치 및 환경 구성
채팅 SDK를 다운로드하고 Unity에서 프로젝트를 구성하는 방법은 다음과 같습니다.
- Unity에서 Assets > Import Package > Custom Package... 메뉴를 차례대로 클릭해 주세요.
- 다운로드한 'BackndChat-x.x.x.unitypackage' 파일을 불러와 주세요.
- 패키지에 있는 모든 파일을 선택한 후 Import 버튼을 클릭해 주십시오.
- 프로젝트를 저장해 주십시오.
유니티 인증값 설정
유니티에서 채팅을 사용하기 위해서는 공통 서버 키와 채팅 서버 키를 설정해야합니다.
- 뒤끝 콘솔에서 채팅 > 설정 탭으로 이동합니다. 공통 서버 키를 복사합니다.
- 유니티 상단에 The Backend > Edit Settings를 클릭합니다. 생성된 인스펙터에서 Client App ID와 Signature Key를 입력합니다.
- 뒤끝 콘솔에서 채팅 > 설정 탭에 있는 채팅 서버 키(Chat UUID)를 복사합니다.
- 유니티 상단에 The Backend > Edit Chat Settings를 클릭합니다. 생성된 인스펙터에서 Chat UUID를 입력합니다.
인스펙터에 존재하는 Send Log Report란 서버로 요청을 보낼 때 서버에 추가로 로그를 저장할지 결정하는 값입니다.
해당 로그를 통해 문제 발생 시, 뒤끝 측에서 원인 추적 및 분석이 가능합니다.
로그인 외 다른 뒤끝 함수 사용
채팅 SDK에 포함되어 있는 베이스 SDK(Backend.dll)는 회원가입/로그인 기능만 포함되어 있습니다.
- 이미 베이스 SDK를 사용하고 있는 경우에는 SDK import 시, Backend.dll을 제외해 주세요.
단, SDK 5.11.1 미만 버전을 사용하고 있다면 5.11.1 이상 버전으로 업데이트해 주세요. - 로그인 기능 외 베이스 기능을 사용하고자 할 경우, BackendChat SDK를 import 한 이후에, 5.11.1 이상 버전의 베이스 SDK를 import 하여 Backend.dll을 덮어씌워주세요.
뒤끝 베이스 로그인
설명
채팅의 유저 관리 기능을 사용하기 위해서는 아래의 방법으로 회원 가입/로그인을 구현 하셔야 합니다.
Example
using BackEnd;
using UnityEngine;
public class LoginManager : MonoBehaviour
{
public InputField Username = null;
public InputField Password = null;
void Start()
{
Backend.Initialize(true);
}
void Login()
{
var returnObject = Backend.BMember.CustomLogin(Username.text, Password.text);
if (false == returnObject.IsSuccess())
{
Debug.Log("CustomLogin Fail");
returnObject = Backend.BMember.CustomSignUp(Username.text, Password.text);
if (false == returnObject.IsSuccess())
{
Debug.Log("CustomSignUp Fail");
return;
}
returnObject = Backend.BMember.CustomLogin(Username.text, Password.text);
if (false == returnObject.IsSuccess())
{
Debug.Log("CustomLogin Fail");
return;
}
// 닉네임 업데이트 - 닉네임이 없을 경우 채팅 접속이 불가능 합니다.
Backend.BMember.UpdateNickname(Username.text);
}
}
}
Chat Client
설명
변경사항과 메시지를 받기 위해서 어플리케이션에 콜백으로 사용되고 있는 일부 메소드를 구현해야 합니다. IChatClientListener 인터페이스로 정의되어 있습니다.
특징
저희 채팅 SDK의 특징 중 자동 재 연결 프로세스가 있습니다. 유저의 네트워크가 변경 되거나 리스가 발생 할 경우 자동으로 재 연결 프로세스가 실행 됩니다. 자동 재 연결 프로세스가 존재 하여 ChatClient 를 할당 후 클라이언트 종료 처리 시 Dispose 처리만 해 주신다면 따로 관리 하실 필요가 없습니다.
Example
public class UIChatManager : MonoBehaviour, BackEndChat.IChatClientListener
{
private BackndChat.ChatClient ChatClient = null;
void Start()
{
ChatClient = new ChatClient(this, new ChatClientArguments
{
Avatar = "default",
Metadata = new Dictionary<string, string>()
{
{ "Rank", "1" },
{ "Level", "1000" },
{ "Server", "Server 1" },
},
});
// 인스펙터를 설정하지 않았을 경우, 아래와 같이 Chat UUID (xxxx-xxxx-xxxxxx-xxxxxxx)를 등록할 수 있습니다.
/*
ChatClient = new ChatClient(this, new ChatClientArguments
{
UUID = "xxxx-xxxx-xxxxxx-xxxxxxx",
Avatar = "default",
Metadata = new Dictionary<string, string>()
{
{ "Rank", "1" },
{ "Level", "1000" },
{ "Server", "Server 1" },
},
});
*/
// 커스텀 인증 서버를 사용 하실 경우, 아래와 같이 토큰을 등록할 수 있습니다.
/*
ChatClient = new ChatClient(this, new ChatClientArguments
{
UUID = "xxxx-xxxx-xxxxxx-xxxxxxx",
Avatar = "default",
Metadata = new Dictionary<string, string>()
{
{ "Rank", "1" },
{ "Level", "1000" },
{ "Server", "Server 1" },
},
CustomAccessToken = USER_TOKEN,
});
*/
}
void Update()
{
ChatClient?.Update();
}
public void OnJoinChannel(ChannelInfo channelInfo) { }
public void OnLeaveChannel(ChannelInfo channelInfo) { }
public void OnJoinChannelPlayer(string channelGroup, string channelName, UInt64 channelNumber, PlayerInfo player) { }
public void OnLeaveChannelPlayer(string channelGroup, string channelName, UInt64 channelNumber, PlayerInfo player) { }
public void OnUpdatePlayerInfo(string channelGroup, string channelName, ulong channelNumber, PlayerInfo player) { }
public void OnChangeGamerName(string oldGamerName, string newGamerName) { }
public void OnChatMessage(MessageInfo messageInfo) { }
public void OnWhisperMessage(WhisperMessageInfo messageInfo) { }
public void OnTranslateMessage(List<MessageInfo> messages) { }
public void OnHideMessage(MessageInfo messageInfo) { }
public void OnDeleteMessage(MessageInfo messageInfo) { }
public void OnSuccess(SUCCESS_MESSAGE success, object param)
{
switch(success)
{
default:
break;
}
}
public void OnError(ERROR_MESSAGE error, object param)
{
switch(error)
{
default:
break;
}
}
private void OnApplicationQuit()
{
ChatClient?.Dispose();
}
}