GameTalk SDK for Unity 환경 및 사용 방법을 설명합니다.
[주의]
2019년 8월 1일부터 Google Play에 게시되는 신규 앱에서는 64비트 아키텍처를 지원해야 합니다. Google Play 정책 및 64비트 지원 Unity 버전 확인
선택한 플랫폼에서 지원하지 않는 GameTalk API를 호출하면 아래와 같은 오류가 콜백으로 반환되며 콜백이 없는 경우에는 Warning 로그가 출력됩니다.
API별 지원하는 플랫폼은 아래와 같은 아이콘으로 구분합니다.
■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
[주의]
- GameTalk 문의 지원이 필요한 경우에는 반드시 디버그 모드를 활성화한 후, 로그를 함께 전달해야 합니다.
- 게임을 릴리스할 때는 반드시 소스 코드에서 SetDebugMode 호출을 제거하거나 파라미터를 false로 바꿔서 빌드하십시오.
API
Supported Platforms ■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
static void SetDebugMode(bool isDebugMode)
Parameter
Example
public void SetDebugModeSample(bool isDebugMode)
{
Gamebase.SetDebugMode(isDebugMode);
}
GameTalkError를 사용하여 API 성공 여부를 확인합니다.
API
Supported Platforms ■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
static bool IsSucceeded(GameTalkError error)
Parameter
Example
public void IsSucceeded(GameTalkError error)
{
if (GameTalk.IsSucceeded(error) == true)
{
Debug.Log("succeeded.");
}
else
{
Debug.Log("failed.");
}
}
GameTalk SDK를 초기화합니다.
API
Supported Platforms ■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
static void Initialize(
GameTalkParams.Config config,
GameTalkCallback.GameTalkDelegate<GameTalkData.ServiceInfo> callback)
Parameter
Example
public void Initialize()
{
var config = new GameTalkParams.Config
{
appKey = "appKey",
languageCode = LanguageCode.Korean
};
GameTalk.Initialize(config, (data, error) =>
{
if (GameTalk.IsSucceeded(error) == true)
{
Debug.Log(string.Format("Initialize succeeded. maxMessageLength:{0}, gameTalkState:{1}", data.maxMessageLength, data.gameTalkState));
}
else
{
Debug.Log(string.Format("Initialize failed. error:{0}", error));
}
});
}
GameTalk SDK의 초기화 여부를 확인합니다.
API
Supported Platforms ■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
static bool IsInitialized()
Example
public void IsInitialized()
{
if (GameTalk.IsInitialized() == true)
{
Debug.Log("Initialized.");
}
else
{
Debug.Log("Not initialized.");
}
}
서버 이벤트를 수신할 핸들러를 등록합니다.
API
Supported Platforms ■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
static void AddEvent(GameTalkCallback.GameTalkDelegate<GameTalkData.AddEvent> eventHandler)
Parameter
Example
public void AddEvent()
{
GameTalk.AddEvent((eventData, error) =>
{
if (GameTalk.IsSucceeded(error) is true)
{
switch (eventData.type)
{
case EventType.PUSH_MESSAGE:
{
var pushMessageData = EventDataParser.GetPushMessageData(eventData.data);
var sb = new StringBuilder();
foreach (var messageInfo in pushMessageData.messageInfoList)
{
sb.AppendFormat("messageType:{0}, ", messageInfo.messageType);
sb.AppendFormat("messageId:{0}, ", messageInfo.messageId);
sb.AppendFormat("channelId:{0}, ", messageInfo.channelId);
sb.AppendFormat("senderType:{0}, ", messageInfo.senderType);
sb.AppendFormat("senderId:{0}, ", messageInfo.senderId);
sb.AppendFormat("receiverId:{0}, ", messageInfo.receiverId);
sb.AppendFormat("regDate:{0}, ", messageInfo.regDate);
sb.AppendFormat("contentType:{0}, ", messageInfo.contentType);
foreach (var message in messageInfo.messageList)
{
sb.AppendFormat("content:{0}, ", message.content);
sb.AppendFormat("languageCode:{0}, ", message.languageCode);
sb.AppendFormat("state:{0}, ", message.state);
}
sb.AppendLine("==========");
}
Debug.Log(string.Format("AddEvent succeeded. message:{0}", sb));
}
}
}
else
{
Debug.Log(string.Format("AddEvent failed. error:{0}", error));
}
});
}
등록된 핸들러를 제거합니다.
API
Supported Platforms ■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
static void RemoveEvent()
Example
public void RemoveEvent()
{
GameTalk.RemoveEvent();
}
GameTalk 로그인을 실행합니다.
API
Supported Platforms ■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
static void Login(
GameTalkParams.Auth.Login param,
GameTalkCallback.GameTalkDelegate<GameTalkData.Auth.Login> callback)
Parameter
Example
public void Login()
{
var loginParams = new GameTalkParams.Auth.Login
{
idPType = IdPType.XX,
token = "token",
userId = "userId"
};
GameTalk.Auth.Login(loginParams, (data, error) =>
{
if (GameTalk.IsSucceeded(error) == true)
{
Debug.Log(string.Format("Login succeeded. userId:{0}", data.user.userId));
}
else
{
Debug.Log(string.Format("Login failed. error:{0}", error));
}
});
}
GameTalk 로그아웃을 실행합니다.
API
Supported Platforms ■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
static void Logout(GameTalkCallback.ErrorDelegate callback)
Parameter
Example
public void Logout()
{
GameTalk.Auth.Logout((error) =>
{
if (GameTalk.IsSucceeded(error) == true)
{
Debug.Log("Logout succeeded.");
}
else
{
Debug.Log(string.Format("Logout failed. error:{0}", error));
}
});
}
유저 정보를 갱신합니다.
API
Supported Platforms ■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
static void UpdateUserInfo(
GameTalkParams.Auth.UpdateUserInfo param,
GameTalkCallback.ErrorDelegate callback)
Parameter
Example
public void UpdateUserInfo()
{
var updateUserInfoParams = new GameTalkParams.Auth.UpdateUserInfo
{
languageCode = LanguageCode.English
};
GameTalk.Auth.UpdateUserInfo(updateUserInfoParams, (error) =>
{
if (GameTalk.IsSucceeded(error) == true)
{
Debug.Log("UpdateUserInfo succeeded.");
}
else
{
Debug.Log(string.Format("UpdateUserInfo failed. error:{0}", error));
}
});
}
유저 정보를 삭제합니다.
API
Supported Platforms ■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
static void Withdraw(GameTalkCallback.ErrorDelegate callback)
Parameter
Example
public void Withdraw()
{
GameTalk.Auth.Withdraw((error) =>
{
if (GameTalk.IsSucceeded(error) == true)
{
Debug.Log("Withdraw succeeded.");
}
else
{
Debug.Log(string.Format("Withdraw failed. error:{0}", error));
}
});
}
채널 정보를 조회합니다.
API
Supported Platforms ■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
static void GetChannelList(
GameTalkParams.Channel.GetChannelList param,
GameTalkCallback.GameTalkDelegate<GameTalkData.Channel.GetChannelList> callback)
Parameter
Example
public void GetChannelList()
{
var getChannelListParams = new GameTalkParams.Channel.GetChannelList
{
page = 0,
size = 10,
tagType = TagType.OR,
tagList = new List<int> { 0, 1 }
};
GameTalk.Channel.GetChannelList(getChannelListParams, (data, error) =>
{
if (GameTalk.IsSucceeded(error) == true)
{
Debug.Log(string.Format("GetChannelList succeeded. channelList:{0}", data));
}
else
{
Debug.Log(string.Format("GetChannelList failed. error:{0}", error));
}
});
}
채널을 구독합니다.
API
Supported Platforms ■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
static void SubscribeChannel(
GameTalkParams.Channel.SubscribeChannel param,
GameTalkCallback.ErrorDelegate callback)
Parameter
Example
public void SubscribeChannel()
{
var subscribeChannelParams = new GameTalkParams.Channel.SubscribeChannel
{
channelId = "channelId"
};
GameTalk.Channel.SubscribeChannel(subscribeChannelParams, (error) =>
{
if (GameTalk.IsSucceeded(error) == true)
{
Debug.Log("SubscribeChannel succeeded.");
}
else
{
Debug.Log(string.Format("SubscribeChannel failed. error:{0}", error));
}
});
}
구독 중인 채널을 해제합니다.
API
Supported Platforms ■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
static void UnsubscribeChannel(
GameTalkParams.Channel.UnsubscribeChannel param,
GameTalkCallback.ErrorDelegate callback)
Parameter
Example
public void UnsubscribeChannel()
{
var subscribeChannelParams = new GameTalkParams.Channel.UnsubscribeChannel
{
channelId = "channelId"
};
GameTalk.Channel.UnsubscribeChannel(subscribeChannelParams, (error) =>
{
if (GameTalk.IsSucceeded(error) == true)
{
Debug.Log("UnsubscribeChannel succeeded.");
}
else
{
Debug.Log(string.Format("UnsubscribeChannel failed. error:{0}", error));
}
});
}
구독 중인 유저를 조회합니다.
API
Supported Platforms ■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
static void GetSubscriber(
GameTalkParams.Channel.GetSubscriber param,
GameTalkCallback.GameTalkDelegate<GameTalkData.Channel.GetSubscriber> callback)
Parameter
Example
public void GetSubscriber()
{
var getSubscriberParams = new GameTalkParams.Channel.GetSubscriber
{
channelId = "channelId",
page = 0,
size = 10
};
GameTalk.Channel.GetSubscriber(getSubscriberParams, (data, error) =>
{
if (GameTalk.IsSucceeded(error) == true)
{
Debug.Log(string.Format("GetSubscriber succeeded. data:{0}", data));
}
else
{
Debug.Log(string.Format("GetSubscriber failed. error:{0}", error));
}
});
}
채널의 태그 리스트를 조회합니다.
API
Supported Platforms ■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
static void GetChannelTagList(
GameTalkParams.Channel.GetChannelTagList param,
GameTalkCallback.GameTalkDelegate<GameTalkData.Channel.GetChannelTagList> callback)
Parameter
Example
public void GetChannelTagList()
{
var getChannelTagListParams = new GameTalkParams.Channel.GetChannelTagList
{
page = 0,
size = 10
};
GameTalk.Channel.GetChannelTagList(getChannelTagListParams, (data, error) =>
{
if (GameTalk.IsSucceeded(error) == true)
{
Debug.Log(string.Format("GetChannelTagList succeeded. data:{0}", data));
}
else
{
Debug.Log(string.Format("GetChannelTagList failed. error:{0}", error));
}
});
}
구독 중인 채널을 조회합니다.
API
Supported Platforms ■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
static void GetSubscribedChannelList(
GameTalkParams.Channel.GetSubscribedChannelList param,
GameTalkCallback.GameTalkDelegate<GameTalkData.Channel.GetSubscribedChannelList> callback)
Parameter
Example
public void GetSubscribedChannelList()
{
var getSubscribedChannelListParams = new GameTalkParams.Channel.GetSubscribedChannelList
{
page = 0,
size = 10
};
GameTalk.Channel.GetSubscribedChannelList(getSubscribedChannelListParams, (data, error) =>
{
if (GameTalk.IsSucceeded(error) == true)
{
Debug.Log(string.Format("GetSubscribedChannelList succeeded. channelList:{0}", data));
}
else
{
Debug.Log(string.Format("GetSubscribedChannelList failed. error:{0}", error));
}
});
}
메시지를 전송합니다.
API
Supported Platforms ■ UNITY_EDITOR ■ UNITY_ANDROID ■ UNITY_IOS
static void SendMessage(
GameTalkParams.Message.SendMessage param,
GameTalkCallback.ErrorDelegate callback)
Parameter
Example
public void SendPublicMessageToChannel()
{
var sendMessageParams = new GameTalkParams.Message.SendMessage
{
channelId = "channelId",
contentType = text,
content = "message",
languageCode = LanguageCode.Korean
};
GameTalk.Message.SendMessage(sendMessageParams, (error) =>
{
if (GameTalk.IsSucceeded(error) == true)
{
Debug.Log(string.Format("SendPublicMessageToChannel succeeded."));
}
else
{
Debug.Log(string.Format("SendPublicMessageToChannel failed. error:{0}", error));
}
});
}