버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

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 
(KGKakaoTalkGroupChat
list 
object)
query 
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.
failed
        }
 
        else if 
        if (
result
error.code == 
KGResultCode.MessageSettingDisabled
KGErrorMessageSettingDisabled)
        {
            // If the receiver has set up message rejection
        }
        else if (
result
error.code == 
KGResultCode.ExceedDailyUsage
KGErrorExceedDailyUsage)
        {
            // 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
error.code == 
KGResultCode.ExceedMonthlyUsage
KGErrorExceedMonthlyUsage)
        {
            // Occurs when the monthly quota of messages that a user can send to another specific user has been exceeded
        }
        else 
        else
        {
            // Other
errors         }     });

Android

코드 블럭
 errors
        }
    }
}];

Windows Sync

코드 블럭
#include "KakaoGameLib.h"
  
// [TODO] Bring your own profile object
KakaoGame::Data::KGLocalPlayer localPlayer;
// [TODO] Get 
Retrieve
my 
chatting
chat room 
data
information from my 
chatting
chat room list
KakaoGame::Data::KGKakaoTalkGroupChat groupChat
 
;
// [TODO] Set 
the
group
chatting
 message template ID
String
std::wstring 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
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::Data::KGResult result;
  
KakaoGame::API::KGKakaoTalkMessage kgKakaoTalkMessage;
// 
Sending
Send 
KakaoTalk
a 
Group
Kakaotalk 
Chatting
group 
Messages
message
KGKakaoTalkMessage
kgKakaoTalkMessage.sendNewGroupChatMessage(groupChat, templateId, args,
 new KGResultCallback<Boolean>() {
 
@Override public void onResult(KGResult<Boolean>
result
) {   writeLog("KGKakaoTalkMessage.sendGroupChatMessage(
)
: " + result)
;
    if 
if (result.isSuccess()) {
   
    // 
Sending
kakaoTalk 
of
group 
KakaoTalk
chat 
group
message 
chatting
sent 
message
successfully.
successful
}
 
else
  } else 
{
   
    // 
Sending
카카오톡 
of
그룹 
KakaoTalk
채팅 
group
메시지 
chatting
보내기 
message failed      if 
실패
    if (result.
getCode()
code == 
KGResult.KGResultCode.MESSAGE_SETTING_DISABLE
KakaoGame::Data::KGResultCode::MessageSettingDisabled) {
    
        // If the recipient 
receiver
has 
has
opted-out 
set
of 
up
the message
rejection
.
   
    } else if (result.
getCode()
code == 
KGResult.KGResultCode.EXCEED_DAILY_USAGE
KakaoGame::Data::KGResultCode::ExceedDailyUsage) {
    
        // Occurs when there is 
the
a 
daily
day's quota (regardless of 
receiver
recipient) 
of
that 
messages from a specific app that
one person can 
be
send 
sent by
for a 
user has been exceeded
particular app.
   
    } else if (result.
getCode()
code == 
KGResult.KGResultCode.EXCEED_MONTHLY_USAGE
KakaoGame::Data::KGResultCode::ExceedMonthlyUsage) {
    
        // Occurs when 
the
one month 
monthly
exceeds 
quota
a 
of
month's 
messages
quota that a 
user
specific person can send to 
another
a 
specific user has been exceeded
particular app.
   
    } else {
    
        // 
Other
etc
errors
    }
   }   } } });

iOS

코드 블럭#import <KakaoGame/KakaoGame.h>  
}

Windows Async

코드 블럭
#include "KakaoGameLib.h"
 
// [TODO] Bring your own profile object
KakaoGame::Data::KGLocalPlayer localPlayer;
// [TODO] Get 
Retrieve
my 
chatting
chat room 
object
information from my 
group chatting
chat room list
KakaoGame::Data::KGKakaoTalkGroupChat 
*groupChat; // Group chatting room (KGKakaoTalkGroupChat object)  
groupChat;
// [TODO] Set
the
 group
chatting
 message template ID
NSString
std::wstring 
*
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
 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
    {
        // 
Sending
카카오톡 
of
그룹 
KakaoTalk
채팅 
group
메시지 
chatting
보내기 
message failed
실패
 
        if (
error
result.code == 
KGErrorMessageSettingDisabled
KakaoGame::Data::KGResultCode::MessageSettingDisabled) 
        
{
            // If the 
receiver
recipient has opted-out 
set
of 
up
the message
rejection
.
        }
        else if 
 else if (
error
result.code == 
KGErrorExceedDailyUsage
KakaoGame::Data::KGResultCode::ExceedDailyUsage) 
        
{
            // Occurs when 
the daily
there is a day's quota (regardless of 
receiver
recipient) 
of
that 
messages from a specific app that
one person can 
be
send 
sent by
for a 
user has been exceeded         }         else if (error
particular app.
        } else if (result.code == 
KGErrorExceedMonthlyUsage
KakaoGame::Data::KGResultCode::ExceedMonthlyUsage) 
        
{
            // Occurs when 
the
one month 
monthly
exceeds 
quota
a 
of
month's 
messages
quota that a 
user
specific person can send to 
another
a 
specific user has been exceeded
particular app.
        }
        else         
 else {
            // 
Other
etc
errors
        }
    }
}
]
);