24.1. KakaoTalk Group Chatting SDK Example
...
This section shows an example of the retrieval of a user’s group chatting room list. It is sorted in order of recent chats.
API permission is required to view the list of group chat rooms. Please contact Kakao Games Business PM.
Unity
코드 블럭 |
---|
using Kakaogame.SDK;
KGKakaoTalkGroupChat.LoadGroupChats(
0, /* offset */
10, /* limit */
(result, totalCount, groupChats) => {
if (result.isSuccess) {
// Query of KakaoTalk group chatting room list successful.
foreach(var groupChat in groupChats) {
long chatId = groupChat.chatId;
string title = groupChat.title;
string thumbnailImageUrl = groupChats.thumbnailImageUrl;
int memberCount = groupChat.memberCount;
var memberThumbnailImageUrls = groupChat.memberThumbnailImageUrls;
var chatType = groupChat.chatType;
}
}
else {
// [TODO] Query of KakaoTalk group chatting room list failed.
}
}); |
|
...
코드 블럭 |
---|
#import <KakaoGame/KakaoGame.h>
// [TODO] Set start value of query
int offset = 0; // Group chatting room list query start value
// [TODO] Set query list size
int limit = 10; // Group chatting room list size
// Querying KakaoTalk Group Chatting Room List
[KGKakaoTalkGroupChat loadGroupChatsWithOffset:offset limit:limit completionHandler:^(NSError *error, int totalCount, NSArray *groupChats) {
if (IS_SUCCESS(error) == YES)
{
// Query of KakaoTalk group chatting room list successful
int _totalCount = totalCount; // Total number of group chatting rooms
for(KGKakaoTalkGroupChat *groupChat in groupChats)
{
long long chatId = groupChat.chatId; // Group chatting room ID
NSString *title = groupChat.title; // Group chatting room title
NSString *thumbnailImageUrl = groupChat.thumbnailImageUrl; // Group chatting room thumbnail image URL
int memberCount = groupChat.memberCount; // Number of members in the group chatting room
NSArray *memberThumbnailImageUrls = groupChat.memberThumbnailImageUrls; // Thumbnail image URL list of group chatting room members. Up to 5
KGKakaoTalkGroupChatType chatType = groupChat.chatType; // Group chatting room type (general/open)
}
}
else
{
// Query of KakaoTalk group chatting room list failed
}
}]; |
|
24.1.2. Sending KakaoTalk Group Chatting Messages
This section shows an example of sending a message to a group chatting room. (Guide : 20. Kakaotalk Message Template V2 )
Unity
...
Windows Sync
코드 블럭 |
---|
#include "KakaoGameLib.h"
// [TODO] Set start value of query
int32_t offset; // Group chatting room |
|
(KGKakaoTalkGroupChatobject)string templateId = "1677";
Dictionary<string, object> argumentDic = new Dictionary<string, object>() {
{"msg", "New Connection, New World"},
{"iphoneMarketParam", "test"},
{"iphoneExecParam", "test"},
{"sender_name", "iOSTester"}
};
KGKakaoTalkMessage.SendNewGroupChatMessage(
groupChat,
templateId,
argumentDic,
(result) => {
if (result.isSuccess) {
start value
// [TODO] Set query list size
int32_t limit; // Group chatting room list size
KakaoGame::Data::KGResult result;
int32_t totalCount;
std::vector<KakaoGame::Data::KGKakaoTalkGroupChat> groupChats;
KakaoGame::API::KGKakaoTalkGroupChat kgKakaoTalkGroupChat;
// Querying KakaoTalk Group Chatting Room List
kgKakaoTalkGroupChat.loadGroupChats(offset, limit, result, totalCount, groupChats);
if (result.isSuccess()) {
// Query of KakaoTalk group chatting room list successful
totalCount; // Total number of group chatting rooms
for(KakaoGame::Data::KGKakaoTalkGroupChat groupChat : groupChats)
{
uint64_t chatId = groupChat.chatId; // Group chatting room ID
std::wstring title = groupChat.title; // Group chatting room title
std::wstring thumbnailImageUrl = groupChat.thumbnailImageUrl; // Group chatting room thumbnail image URL
uint32_t memberCount = groupChat.memberCount; // Number of members in the group chatting room
std::vector<std::wstring> memberThumbnailImageUrls = groupChat.memberThumbnailImageUrls; // Thumbnail image URL list of group chatting room members. Up to 5
KakaoGame::Data::KGKakaoTalkGroupChatType chatType = groupChat.chatType; // Group chatting room type (general/open)
}
} else {
// Query of KakaoTalk group chatting room list failed
}
|
|
Windows Async
코드 블럭 |
---|
#include "KakaoGameLib.h"
// [TODO] Set start value of query
int32_t offset; // Group chatting room list query start value
// [TODO] Set query list size
int32_t limit; // Group chatting room list size
KakaoGame::API::KGKakaoTalkGroupChat kgKakaoTalkGroupChat;
// Querying KakaoTalk Group Chatting Room List
KGKakaoTalkGroupChat.loadGroupChats(offset, limit, [this](KakaoGame::Data::KGResult result, int32_t totalCount, std::vector<KakaoGame::Data::KGKakaoTalkGroupChat> groupChats) {
if (result.isSuccess()) {
// Query of KakaoTalk group chatting room list successful
totalCount; // Total number of group chatting rooms
for(KakaoGame::Data::KGKakaoTalkGroupChat groupChat : groupChats)
{
uint64_t chatId = groupChat.chatId; // Group chatting room ID
std::wstring title = groupChat.title; // Group chatting room title
std::wstring thumbnailImageUrl = groupChat.thumbnailImageUrl; // Group chatting room thumbnail image URL
uint32_t memberCount = groupChat.memberCount; // Number of members in the group chatting room
std::vector<std::wstring> memberThumbnailImageUrls = groupChat.memberThumbnailImageUrls; // Thumbnail image URL list of group chatting room members. Up to 5
KakaoGame::Data::KGKakaoTalkGroupChatType chatType = groupChat.chatType; // Group chatting room type (general/open)
}
} else {
// Query of KakaoTalk group chatting room list failed
}
}); |
|
24.1.2. Sending KakaoTalk Group Chatting Messages
This section shows an example of sending a message to a group chatting room. (Guide : 20. Kakaotalk Message Template V2 )
Unity
코드 블럭 |
---|
using Kakaogame.SDK;
KGKakaoTalkGroupChat groupChat; // Group chatting room (KGKakaoTalkGroupChat object)
string templateId = "1677";
Dictionary<string, object> argumentDic = new Dictionary<string, object>() {
{"msg", "New Connection, New World"},
{"iphoneMarketParam", "test"},
{"iphoneExecParam", "test"},
{"sender_name", "iOSTester"}
};
KGKakaoTalkMessage.SendNewGroupChatMessage(
groupChat,
templateId,
argumentDic,
(result) => {
if (result.isSuccess) {
// Sending of KakaoTalk group chatting message successful.
}
else if (result.code == KGResultCode.MessageSettingDisabled) {
// If the receiver has set up message rejection
}
else if (result.code == KGResultCode.ExceedDailyUsage) {
// Occurs when the daily quota (regardless of receiver) of messages from a specific app that can be sent by a user has been exceeded
}
else if (result.code == KGResultCode.ExceedMonthlyUsage) {
// Occurs when the monthly quota of messages that a user can send to another specific user has been exceeded
}
else {
// Other errors
}
}); |
|
Android
코드 블럭 |
---|
// [TODO] Retrieve chatting room data from my chatting room list
KGKakaoTalkGroupChat groupChat
// [TODO] Set the group chatting message template ID
String templateId;
// [TODO] Set the parameters needed for the group chatting message
Map<String, String> args = new LinkedHashMap<String, String>();
String nickname = ((KGKakaoProfile)KGLocalPlayer.getCurrentPlayer().getIdpProfile()).getNickname();
args.put("${sender_name}", nickname);
// Sending KakaoTalk Group Chatting Messages
KGKakaoTalkMessage.sendNewGroupChatMessage(groupChat, templateId, args, new KGResultCallback<Boolean>() {
@Override
public void onResult(KGResult<Boolean> result) {
writeLog("KGKakaoTalkMessage.sendGroupChatMessage() : " + result);
if (result.isSuccess()) {
// Sending of KakaoTalk group chatting message successful
} else {
// Sending of KakaoTalk group chatting message failed
if (result.getCode() == KGResult.KGResultCode.MESSAGE_SETTING_DISABLE) {
// If the receiver has set up message rejection.
} else if (result.getCode() == KGResult.KGResultCode.EXCEED_DAILY_USAGE) {
// Occurs when the daily quota (regardless of receiver) of messages from a specific app that can be sent by a user has been exceeded.
} else if (result.getCode() == KGResult.KGResultCode.EXCEED_MONTHLY_USAGE) {
// Occurs when the monthly quota of messages that a user can send to another specific user has been exceeded.
} else {
// Other errors
}
}
}
}); |
|
iOS
코드 블럭 |
---|
#import <KakaoGame/KakaoGame.h>
// [TODO] Retrieve chatting room object from my group chatting room list
KGKakaoTalkGroupChat *groupChat; // Group chatting room (KGKakaoTalkGroupChat object)
// [TODO] Set the group chatting message template ID
NSString *templateId = @"1677"; // Issued group chatting message template ID
// [TODO] Set the parameters needed for the group chatting message
NSDictionary *argumentDic = @{@"msg" : @"New Connection, New World.", @"iphoneMarketParam" : @"test", @"iphoneExecParam" : @"test", @"sender_name" : @"iOSTester"};
// Sending KakaoTalk Group Chatting Messages
[KGKakaoTalkMessage sendNewGroupChatMessageWithGroupChat:groupChat
templateId:templateId
argumentDic:argumentDic
completionHandler:^(NSError *error) {
if (IS_SUCCESS(error) == YES)
{
// Sending of KakaoTalk group chatting message successful
}
else
{
// Sending of KakaoTalk group chatting message |
|
successful. } else if resultKGResultCode.MessageSettingDisabledKGErrorMessageSettingDisabled)
{
// If the receiver has set up message rejection
}
else if ( |
|
resultKGResultCode.ExceedDailyUsageKGErrorExceedDailyUsage)
{
// Occurs when the daily quota (regardless of receiver) of messages from a specific app that can be sent by a user has been exceeded
}
else if ( |
|
resultKGResultCode.ExceedMonthlyUsageKGErrorExceedMonthlyUsage)
{
// Occurs when the monthly quota of messages that a user can send to another specific user has been exceeded
}
|
|
else errors
}
});Android
Windows Sync
코드 블럭 |
---|
#include "KakaoGameLib.h"
// [TODO] Bring your own profile object
KakaoGame::Data::KGLocalPlayer localPlayer;
// [TODO] Get |
|
Retrievechattingdatachattingchat room list
KakaoGame::Data::KGKakaoTalkGroupChat groupChat |
|
the chattingString
Set the parameters needed for the group chatting message
Map<String, String> args = new LinkedHashMap<String, String>();
String nickname = ((KGKakaoProfile)KGLocalPlayer.getCurrentPlayer().getIdpProfile()).getNickname();
args.putAdd required arguments to group message
std::map<std::wstring, std::wstring> arguments;
arguments.insert(std::pair<std::wstring, std::wstring>(TEXT("${sender_name}"), localPlayer.kakaoProfile.nickname));
|
|
KakaoGame::Data::KGResult result;
KakaoGame::API::KGKakaoTalkMessage kgKakaoTalkMessage;
// |
|
SendingKakaoTalkGroupChattingMessagesKGKakaoTalkMessagekgKakaoTalkMessage.sendNewGroupChatMessage(groupChat, templateId, args, |
|
new KGResultCallback<Boolean>() {@Override
public void onResult(KGResult<Boolean> ) {
writeLog("KGKakaoTalkMessage.sendGroupChatMessage( : " + result)
if if (result.isSuccess()) {
|
|
SendingofKakaoTalkgroupchattingmessagesuccessful } else SendingofKakaoTalkgroupchattingmessage failed
if getCode()KGResult.KGResultCode.MESSAGE_SETTING_DISABLEKakaoGame::Data::KGResultCode::MessageSettingDisabled) {
|
|
receiverhassetup rejection getCode()KGResult.KGResultCode.EXCEED_DAILY_USAGEKakaoGame::Data::KGResultCode::ExceedDailyUsage) {
|
|
thedailyday's quota (regardless of |
|
receiverofmessages from a specific app thatbesent byuser has been exceeded getCode()KGResult.KGResultCode.EXCEED_MONTHLY_USAGEKakaoGame::Data::KGResultCode::ExceedMonthlyUsage) {
|
|
themonthlyquotaofmessagesuserspecific person can send to |
|
anotherspecific user has been exceeded Othererrors }
}
}
});iOS
코드 블럭 |
#import <KakaoGame/KakaoGame.h>
Windows Async
코드 블럭 |
---|
#include "KakaoGameLib.h"
// [TODO] Bring your own profile object
KakaoGame::Data::KGLocalPlayer localPlayer;
// [TODO] Get |
|
Retrievechattingobjectgroup chattingchat room list
KakaoGame::Data::KGKakaoTalkGroupChat |
|
*groupChat; // Group chatting room (KGKakaoTalkGroupChat object)
the chattingNSString* = @"1677" // Issued groupchatting message template ID
Set the parameters needed for the group chatting message
NSDictionary *argumentDic = @{@"msg" : @"New Connection, New World.", @"iphoneMarketParam" : @"test", @"iphoneExecParam" : @"test", @"sender_name" : @"iOSTester"};
// Sending KakaoTalk Group Chatting Messages
[KGKakaoTalkMessage sendNewGroupChatMessageWithGroupChat:groupChat
templateId:templateId
argumentDic:argumentDic
completionHandler:^(NSError *error) {
if (IS_SUCCESS(error) == YES)
{
// Sending of KakaoTalk group chatting message successful Add required arguments to group message
std::map<std::wstring, std::wstring> arguments;
arguments.insert(std::pair<std::wstring, std::wstring>(TEXT("${sender_name}"), localPlayer.kakaoProfile.nickname));
KakaoGame::API::KGKakaoTalkMessage kgKakaoTalkMessage;
// Send a Kakaotalk group message
kgKakaoTalkMessage.sendNewGroupChatMessage(groupChat, templateId, args, [this](KakaoGame::Data::KGResult result) {
if (result.isSuccess()) {
// kakaoTalk group chat message sent successfully.
}
else
{
// |
|
SendingofKakaoTalkgroupchattingmessage failed
errorKGErrorMessageSettingDisabledKakaoGame::Data::KGResultCode::MessageSettingDisabled) |
|
receiversetup rejection
else if errorKGErrorExceedDailyUsageKakaoGame::Data::KGResultCode::ExceedDailyUsage) |
|
the dailythere is a day's quota (regardless of |
|
receiverofmessages from a specific app thatbesent byuser has been exceeded
}
else if (errorparticular app.
} else if (result.code == |
|
KGErrorExceedMonthlyUsageKakaoGame::Data::KGResultCode::ExceedMonthlyUsage) |
|
themonthlyquotaofmessagesuserspecific person can send to |
|
anotherspecific user has been exceeded
else
Othererrors
]