버전 비교

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

...

코드 블럭
#import <KakaoGame/KakaoGame.h>
// 카카오톡 게임 메시지 수신 여부 설정 뷰 띄우기
[KGKakaoTalkMessage showAllowMessageSettingViewWithCompletionHandler:^(NSError *error, BOOL isAllowedMessage) {
    if (IS_SUCCESS(error) == YES)
    {
        // 카카오톡 게임 메시지 수신 여부 설정 성공
        BOOL _isAllowedMessage = isAllowedMessage; // 설정된 메시지 수신 허용 여부
    }
    else if (error.code == KGErrorNotKakaoTalkUser)
    {
        // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정)
    }
    else
    {
        // 카카오톡 게임 메시지 수신 여부 설정 실패
    }
}];

23.1.2. 카카오톡 게임 친구 목록 조회하기

카카오톡 게임 친구 목록 조회하는 예제입니다.

Unity Windows 동기식 예제

코드 블럭
using Kakaogame.SDK; KGPlayer.LoadFriendPlayers(     (result, players) => {         if (result.isSuccess) {             
#include "KakaoGameLib.h"
 
KakaoGame::Data::KGResult result;
bool isAllowedMessage;
KakaoGame::API::KGKakaoTalkMessage kgKakaoTalkMessage;
 
// 카카오톡 게임 
친구
메시지 
목록
수신 
조회 성공.             foreach(var player in players) {                 var kakaoProfile = (KGKakaoProfile)player.idpProfile
여부 설정 뷰 띄우기
kgKakaoTalkMessage.showAllowMessageSettingView(result, isAllowedMessage);
if (result.isSuccess()) {
    // 카카오톡 게임 메시지 수신 여부 설정 성공
    bool allowMessage = isAllowedMessage; // 
게임
설정된 
메세지
메시지 
전송시
수신 
사용
허용 
            }
여부
        
}
        else if 
else if (
result
error.code == 
KGResultCode.
KakaoGame::Data::KGResultCode::NotKakaoTalkUser)  
        
{
            
    // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 
카카오
(예 : 카카오 스토리만 가입한 유저의 
계정과 같이 카카오톡 유저가 아닌 경우.         }         else {             
계정)
}
else {
    // 카카오톡 게임 메시지 
친구
수신 
목록
여부 
조회
설정 실패
.

        
}
    });

...

Windows 비동기식 예제

코드 블럭
#include "KakaoGameLib.h"
  
KakaoGame::API::KGKakaoTalkMessage kgKakaoTalkMessage;
 
// 카카오톡 게임 
친구
메시지 
목록
수신 
조회하기 KGPlayer.loadFriendPlayers(new KGResultCallback<List<KGPlayer>>() {     @Override     public void onResult(KGResult<List<KGPlayer>> result
여부 설정 뷰 띄우기
kgKakaoTalkMessage.showAllowMessageSettingView([this](KakaoGame::Data::KGResult result, bool isAllowedMessage) {
        if 
    if (result.isSuccess()) {
            
        // 카카오톡 
요청
게임 
성공
메시지 
            //
수신 
친구
여부 
목록
설정 
            List<KGPlayer>
성공
friendList
        bool allowMessage = 
result.getContent();                for (KGPlayer player : friendList) {                 KGKakaoProfile profile = (KGKakaoProfile) player.getIdpProfile(); // 게임 메세지 전송시 사용             }         } else if (result.getCode() == KGResult.KGResultCode.NOT_KAKAOTALK_USER) {             
isAllowedMessage; // 설정된 메시지 수신 허용 여부
    }
    else if (error.code == KakaoGame::Data::KGResultCode::NotKakaoTalkUser)  {
        // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 
계정과 같이
계정)
    }
    else {
        // 카카오톡 
유저가
게임 
아닌
메시지 
경우.         } else {             // 요청 실패         }
수신 여부 설정 실패
    }
}, reinterpret_cast<HWND>(GEngine->GameViewport->GetWindow()->GetNativeWindow()->GetOSWindowHandle());

iOS Unreal 예제

코드 블럭
#import
#include 
<KakaoGame/
"KakaoGame.
h>
h"
  
// 카카오톡 게임 메시지 
친구
수신 여부 
목록
설정 
조회하기
 
 [KGPlayer loadFriendPlayersWithCompletionHandler:^(NSError *error, NSArray *players) {     if (IS_SUCCESS(error
띄우기
FKGKakaoTalkMessage::ShowAllowMessageSettingView(FKGResultWithMessageAllowedValueDelegate::CreateLambda([=](FKGResult result, bool isAllowedMessage) {
  if (result.IsSuccess())
  {
    // 카카오톡 게임 메시지 수신 여부 설정 성공
  }
  else if (result.GetCode() == 
YES
FKGResultCode::NotKakaoTalkUser)
    
  {
        
      // 
카카오톡
로그인 
게임
 
친구
유저가 
목록
'카카오톡' 
조회
유저가 
성공         for(KGPlayer *player in players)         {             KGKakaoProfile *kakaoProfile = (KGKakaoProfile *)player.idpProfile; // 게임 메시지 전송시 사용.         }     }     else if (error.code == KGErrorNotKakaoTalkUser)     {         // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정)     }     else     {         // 카카오톡 게임 친구 목록 조회 실패     } }];

23.1.3. 카카오톡 게임 메시지 보내기

카카오톡 게임 메시지를 보내는 예제입니다. (가이드 : 20. 카카오톡 메시지 템플릿 V2)

수신된 메시지를 터치하여 게임에 진입할 때 특정 파라미터를 받고 싶으면 메시지 템플릿에 exec parm을 설정하여 사용할 수 있습니다.

카카오톡으로 해당 메시지를 수신해서 앱으로 연결 링크를 터치하면, 앱이 실행되면서 exec param을 넘겨줍니다.

이 값을 이용해서 특정 스테이지를 시작하거나 미리 정의해둔 아이템을 지급해줄 수 있습니다. exec parm은 게임 메시지만 사용할 수 있습니다.

Unity 예제

코드 블럭using Kakaogame.SDK; KGKakaoProfile kakaoProfile; // 카카오 프로필(KGKakaoProfile 객체)    // 메시지 수신 여부 확인 if (kakaoProfile.isAllowedMessage == false) {     // 게임 메시지 수신을 허용하지 않은 사용자 입니다. 메시지 전송을 하지 않습니다.     return; }    string templateId = "4101"; Dictionary<string, object> argumentDic = new Dictionary<string, object>() {     {"nickname", "kakao_nickname"} }; KGKakaoTalkMessage.SendNewGameMessage(     kakaoProfile,     templateId,     argumentDic,     (result) => {         if (result.isSuccess) {             // 카카오톡 채팅 메시지 보내기 성공.         }         else if (result.code == KGResultCode.MessageSettingDisabled
아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
  }
  else
  {
      // 카카오톡 게임 메시지 수신 여부 설정 실패
  }
}));

23.1.2. 카카오톡 게임 친구 목록 조회하기

카카오톡 게임 친구 목록 조회하는 예제입니다.

Unity 예제

코드 블럭
using Kakaogame.SDK;
KGPlayer.LoadFriendPlayers(
    (result, players) => {
        if (result.isSuccess) {
            // 카카오톡 게임 친구 목록 조회 성공.
            foreach(var player in players) {
                var kakaoProfile = (KGKakaoProfile)player.idpProfile; // 게임 메세지 전송시 사용
            }
        }
        else if (result.code == KGResultCode.NotKakaoTalkUser)
        {
            // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
        }
        else {
            // 카카오톡 게임 친구 목록 조회 실패.
        }
    });

Android 예제

코드 블럭
// 카카오톡 게임 친구 목록 조회하기
KGPlayer.loadFriendPlayers(new KGResultCallback<List<KGPlayer>>() {
    @Override
    public void onResult(KGResult<List<KGPlayer>> result) {
        if (result.isSuccess()) {
            // 요청 성공
            // 친구 목록
            List<KGPlayer> friendList = result.getContent();
  
            for (KGPlayer player : friendList) {
                KGKakaoProfile profile = (KGKakaoProfile) player.getIdpProfile(); // 게임 메세지 전송시 사용
            }
        } else if (result.getCode() == KGResult.KGResultCode.NOT_KAKAOTALK_USER) {
            // 
받은이가
로그인 
메시지
 
수신
유저가 
거부를
'카카오톡' 
설정한
유저가 
경우
아닙니다. 
        }         else if (result.code == KGResultCode.ExceedDailyUsage) {             // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생         }         else if (result.code == KGResultCode.ExceedMonthlyUsage) {             // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생         }         else if (result.code == KGResultCode.NotKakaoTalkUser)         {             // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.         }         else {             // 카카오톡 채팅 메시지 보내기 실패.         }     });

Android 예제

...

코드 블럭
// [TODO] 게임 친구 목록에서 친구 프로필 정보를 가져옴
KGKakaoProfile kakaoProfile;
  
// 메시지 수신 여부 확인
if (kakaoProfile.isAllowedMessage() == false) {
    // 게임 메시지 수신을 허용하지 않은 사용자입니다. 메시지 전송을 하지 않습니다.
    return;
}
  
// [TODO] 게임 메시지 템플랫 아이디 설정
String templateId;
// [TODO] 게임 메시지에 필요한 인자를 추가
Map<String, String> args = new LinkedHashMap<String, String>();
String nickname = ((KGKakaoProfile)KGLocalPlayer.getCurrentPlayer().getIdpProfile()).getNickname();
args.put("${sender_name}", nickname);
// 카카오톡 게임 메시지 보내기
KGKakaoTalkMessage.sendNewGameMessage(kakaoProfile, templateId, args, new KGResultCallback<Boolean>() {
    @Override
    public void onResult(KGResult<Boolean> result) {
        if (result.isSuccess()) {
            // 카카오톡 게임 메시지 보내기 성공
        } else {
            // 카카오톡 게임 메시지 보내기 실패
            if (result.getCode() == KGResult.KGResultCode.MESSAGE_SETTING_DISABLE) {
                // 받은이가 메시지 수신 거부를 설정한 경우.
            } else if (result.getCode() == KGResult.KGResultCode.EXCEED_DAILY_USAGE) {
                // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생.
            } else if (result.getCode() == KGResult.KGResultCode.EXCEED_MONTHLY_USAGE) {
                // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생.
            } else {
                // 그 밖의 에러
            }
        }
    }
});

iOS 예제

...

코드 블럭
#import <KakaoGame/KakaoGame.h>
// [TODO] 게임 친구 목록에서 카카오 프로필 객체를 가져옴
KGKakaoProfile *kakaoProfile; // 카카오 프로필(KGKakaoProfile 객체)
  
if (kakaoProfile.isAllowedMessage == NO)
{
    // 게임 메시지 수신을 허용하지 않은 사용자입니다. 메시지 전송을 하지 않습니다.
    return;
}
  
// [TODO] 게임 메시지 템플랫 아이디 설정
NSString *templateId = @"4101";
// [TODO] 게임 메시지에 필요한 인자를 추가
NSDictionary* argumentDic = @{@"msg":@"새로운 연결, 새로운 세상.", @"iphoneMarketParam":@"test", @"iphoneExecParam":@"test", @"sender_name" : @"iOSTester"};
// 카카오톡 게임 메시지 보내기
[KGKakaoTalkMessage sendNewGameMessageWithKakaoProfile:kakaoProfile
                                            templateId:templateId
                                           argumentDic:argumentDic
                                     completionHandler:^(NSError *error) {
    if (IS_SUCCESS(error) == YES)
    {
        // 카카오톡 게임 메시지 보내기 성공
    }
    else
    {
        // 카카오톡 게임 메시지 보내기 실패
        if (error.code == KGErrorMessageSettingDisabled)
        {
            // 받은이가 메시지 수신 거부를 설정한 경우
        }
        else if (error.code == KGErrorExceedDailyUsage)
        {
            // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생
        }
        else if (error.code == KGErrorExceedMonthlyUsage)
        {
            // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생
        }
        else if (error.code == KGErrorNotKakaoTalkUser)
        {
            // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정)
        }
        else
        {
            // 그 밖의 에러
        }
    }
}];

23.1.4. 카카오톡 게임 이미지 메시지 보내기

카카오톡 게임 이미지 메시지를 보내는 예제입니다. (가이드 : 20. 카카오톡 메시지 템플릿 V2)

정보

[Android] Dangerous 퍼미션 사용 기능

 이 기능을 이용하는 경우에 Android Manifest에 READ_EXTERNAL_STORAGE 퍼미션을 추가해야 합니다.

6.0 이상의 게임에서는 개별 권한 고지 및 권한 요청에 대한 가이드를 참고하여 유저에게 해당 권한 허용을 얻어야 이 기능을 사용할 수 있습니다.

Unity 예제

...

코드 블럭
using Kakaogame.SDK;
KGKakaoProfile kakaoProfile; // 카카오 프로필(KGKakaoProfile 객체)
  
// 메시지 수신 여부 확인
if (kakaoProfile.isAllowedMessage == false)
{
    // 게임 메시지 수신을 허용하지 않은 사용자 입니다. 메시지 전송을 하지 않습니다.
    return;
}
  
// 메시지에 추가할 이미지
Texture2D file;
// 이미지를 업로드하여 이미지 url을 받아옵니다.
KGKakaoTalk.UploadGameImage(file, (result, imageUrl) => {
    if (result.isSuccess)
    {
        // 메시지 템플릿에 지정한 키로 전달
        string templateId = "4101";
        string nickname = ((KGKakaoProfile)KGLocalPlayer.currentPlayer.idpProfile).nickname;
        Dictionary<string, object> argumentDic = new Dictionary<string, object>() {
            {"${sender_name}", nickname}
            {"${first_image}", imageUrl}
        };
   
        KGKakaoTalkMessage.SendNewGameMessage(kakaoProfile, templateId, argumentDic, (result) => {
            if (result.isSuccess)
            {
                // 카카오톡 채팅 메시지 보내기 성공.
            }
            else if (result.code == KGResultCode.MessageSettingDisabled)
            {
                // 받은이가 메시지 수신 거부를 설정한 경우
            }
            else if (result.code == KGResultCode.ExceedDailyUsage)
            {
                // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생
            }
            else if (result.code == KGResultCode.ExceedMonthlyUsage)
            {
                // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생
            }
            else if (result.code == KGResultCode.NotKakaoTalkUser)
            {
                // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
            }
            else
            {
                // 카카오톡 채팅 메시지 보내기 실패.
            }
        });
    }
    else
    {
            // 이미지 업로드 실패
    }
});

Android 예제

...

코드 블럭
// [TODO] 게임 친구 목록에서 친구 프로필 정보를 가져옴
KGKakaoProfile kakaoProfile;
  
// 메시지 수신 여부 확인
if (kakaoProfile.isAllowedMessage() == false) {
    // 게임 메시지 수신을 허용하지 않은 사용자입니다. 메시지 전송을 하지 않습니다.
    return;
}
  
// [TODO] 게임 메시지 템플랫 아이디 설정
String templateId;
  
// 메시지에 추가할 이미지
File file;
// 이미지를 업로드하여 이미지 url을 받아옵니다.
KGKakaoTalk.uploadGameImage(file, new KGResultCallback<String>() {
    @Override
    public void onResult(KGResult<String> result) {
        if (result.isSuccess()) {
            // 업로드한 이미지의 url
            imageUrl = result.getContent();
        } else {
            // 이미지 업로드 실패
        }
    }
});
// [TODO] 게임 메시지에 필요한 인자를 추가
Map<String, String> args = new LinkedHashMap<String, String>();
String nickname = ((KGKakaoProfile)KGLocalPlayer.getCurrentPlayer().getIdpProfile()).getNickname();
args.put("${sender_name}", nickname);
args.put("${first_image}", imageUrl); // 메시지 템플릿에 지정한 키로 전달
// 카카오톡 게임 메시지 보내기
KGKakaoTalkMessage.sendNewGameMessage(kakaoProfile, templateId, args, new KGResultCallback<Boolean>() {
    @Override
    public void onResult(KGResult<Boolean> result) {
        if (result.isSuccess()) {
            // 카카오톡 게임 메시지 보내기 성공
        } else {
            // 카카오톡 게임 메시지 보내기 실패
            if (result.getCode() == KGResult.KGResultCode.MESSAGE_SETTING_DISABLE) {
                // 받은이가 메시지 수신 거부를 설정한 경우.
            } else if (result.getCode() == KGResult.KGResultCode.EXCEED_DAILY_USAGE) {
                // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생.
            } else if (result.getCode() == KGResult.KGResultCode.EXCEED_MONTHLY_USAGE) {
                // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생.
            } else {
                // 그 밖의 에러
            }
        }
    }
});

iOS 예제

코드 블럭#import <KakaoGame/KakaoGame.h> // [TODO] 게임 친구 목록에서 카카오 프로필 객체를 가져옴 KGKakaoProfile *kakaoProfile; // 카카오 프로필(KGKakaoProfile 객체)    if (kakaoProfile.isAllowedMessage == NO) {     // 게임 메시지 수신을 허용하지 않은 사용자입니다. 메시지 전송을 하지 않습니다.     return; }    // 메시지에 추가할 이미지 UIImage* file; // 이미지를 업로드하여 이미지 url을 받아옵니다. [KGKakaoTalk uploadGameImage:file completionHandler:^(NSError *error, NSString *imageUrl) {     if (IS_SUCCESS(error) == YES)     {         // 메시지 템플릿에 지정한 키로 전달         NSString* templateId = @"4101";         NString* nickname = kakaoProfile.nickname;         NSDictionary* argumentDic = @{@"${sender_name}":nickname, @"${first_image}":imageUrl};            [KGKakaoTalkMessage sendNewGameMessageWithKakaoProfile:kakaoProfile templateId:templateId argumentDic:argumentDic completionHandler:^(NSError* error) {             if (IS_SUCCESS(error) == YES)             {                 // 카카오톡 게임 메시지 보내기 성공             }             else             {                 // 카카오톡 게임 메시지 보내기 실패                 if (error.code == KGErrorMessageSettingDisabled)                 {                     // 받은이가 메시지 수신 거부를 설정한 경우                 }                 else if (error.code == KGErrorExceedDailyUsage)                 {                     // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생                 }                 else if (error.code == KGErrorExceedMonthlyUsage)                 {                     // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생                 }                 else if (error.code == KGErrorNotKakaoTalkUser)                 {                     // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정)                 }                 else                 {                     // 그 밖의 에러                 }             }         }];     }     else     {             // 이미지 업로드 실패     } }]
카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
        } else {
            // 요청 실패
        }
    }
});

iOS 예제

코드 블럭
#import <KakaoGame/KakaoGame.h>
// 카카오톡 게임 친구 목록 조회하기
 [KGPlayer loadFriendPlayersWithCompletionHandler:^(NSError *error, NSArray *players) {
    if (IS_SUCCESS(error) == YES)
    {
        // 카카오톡 게임 친구 목록 조회 성공
        for(KGPlayer *player in players)
        {
            KGKakaoProfile *kakaoProfile = (KGKakaoProfile *)player.idpProfile; // 게임 메시지 전송시 사용.
        }
    }
    else if (error.code == KGErrorNotKakaoTalkUser)
    {
        // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정)
    }
    else
    {
        // 카카오톡 게임 친구 목록 조회 실패
    }
}];

Windows 동기식 예제

코드 블럭
#include "KakaoGameLib.h"
 
KakaoGame::Data::KGResult result;
std::vector<KakaoGame::Data::KGPlayer> players;
KakaoGame::API::KGPlayer kgPlayer;
 
// 카카오톡 게임 친구 목록 조회하기
kgPlayer.loadFriendPlayers(result, players);
if (result.isSuccess()) {
    // 카카오톡 게임 친구 목록 조회 성공
    for (KakaoGame::Data::KGPlayer player : players) {
        KakaoGame::Data::KGKakaoProfile kakaoProfile = player.kakaoProfile; // 게임 메시지 전송시 사용.
    }
}
else if (error.code == KakaoGame::Data::KGResultCode::NotKakaoTalkUser)  {
    // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정)
}
else {
    // 카카오톡 게임 친구 목록 조회 실패
}

Windows 비동기식 예제

코드 블럭
#include "KakaoGameLib.h"
 
KakaoGame::API::KGPlayer kgPlayer;
 
// 카카오톡 게임 친구 목록 조회하기
kgPlayer.loadFriendPlayers([this](KakaoGame::Data::KGResult result, std::vector<KakaoGame::Data::KGPlayer> players) {
    if (result.isSuccess()) {
        // 카카오톡 게임 친구 목록 조회 성공
        for (KakaoGame::Data::KGPlayer player : players) {
            KakaoGame::Data::KGKakaoProfile kakaoProfile = player.kakaoProfile; // 게임 메시지 전송시 사용.
        }
    }
    else if (error.code == KakaoGame::Data::KGResultCode::NotKakaoTalkUser)  {
        // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정)
    }
    else {
        // 카카오톡 게임 친구 목록 조회 실패
    }
});

Unreal 예제

코드 블럭
#include "KakaoGame.h"
  
// 카카오톡 게임 친구 목록 조회하기
FKGPlayer::LoadFriendPlayers(FKGResultWithPlayersCallback::CreateLambda([=](FKGResult result, TArray<FKGPlayer> players) {
  if (result.IsSuccess())
  {
    // 카카오톡 게임 친구 목록 조회 성공.
    for (FKGPlayer player : players)
    {
      FKGIdpProfile idpProfile = player.GetIdpProfile();
      FKGKakaoProfile *kakaoProfile = (FKGKakaoProfile*)&idpProfile;
    }
  }
  else if (result.GetCode() == FKGResultCode::NotKakaoTalkUser)
  {
    // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
  }
  else
  {
    // 카카오톡 게임 친구 목록 조회 실패.
  }
}));

23.1.3. 카카오톡 게임 메시지 보내기

카카오톡 게임 메시지를 보내는 예제입니다. (가이드 : 20. 카카오톡 메시지 템플릿 V2 )

수신된 메시지를 터치하여 게임에 진입할 때 특정 파라미터를 받고 싶으면 메시지 템플릿에 exec parm을 설정하여 사용할 수 있습니다.

카카오톡으로 해당 메시지를 수신해서 앱으로 연결 링크를 터치하면, 앱이 실행되면서 exec param을 넘겨줍니다.

이 값을 이용해서 특정 스테이지를 시작하거나 미리 정의해둔 아이템을 지급해줄 수 있습니다. exec parm은 게임 메시지만 사용할 수 있습니다.

Unity 예제

코드 블럭
using Kakaogame.SDK;
KGKakaoProfile kakaoProfile; // 카카오 프로필(KGKakaoProfile 객체)
  
// 메시지 수신 여부 확인
if (kakaoProfile.isAllowedMessage == false)
{
    // 게임 메시지 수신을 허용하지 않은 사용자 입니다. 메시지 전송을 하지 않습니다.
    return;
}
  
string templateId = "4101";
Dictionary<string, object> argumentDic = new Dictionary<string, object>() {
    {"nickname", "kakao_nickname"}
};
KGKakaoTalkMessage.SendNewGameMessage(
    kakaoProfile,
    templateId,
    argumentDic,
    (result) => {
        if (result.isSuccess) {
            // 카카오톡 채팅 메시지 보내기 성공.
        }
        else if (result.code == KGResultCode.MessageSettingDisabled) {
            // 받은이가 메시지 수신 거부를 설정한 경우
        }
        else if (result.code == KGResultCode.ExceedDailyUsage) {
            // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생
        }
        else if (result.code == KGResultCode.ExceedMonthlyUsage) {
            // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생
        }
        else if (result.code == KGResultCode.NotKakaoTalkUser)
        {
            // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
        }
        else {
            // 카카오톡 채팅 메시지 보내기 실패.
        }
    });

Android 예제

코드 블럭
// [TODO] 게임 친구 목록에서 친구 프로필 정보를 가져옴
KGKakaoProfile kakaoProfile;
  
// 메시지 수신 여부 확인
if (kakaoProfile.isAllowedMessage() == false) {
    // 게임 메시지 수신을 허용하지 않은 사용자입니다. 메시지 전송을 하지 않습니다.
    return;
}
  
// [TODO] 게임 메시지 템플랫 아이디 설정
String templateId;
// [TODO] 게임 메시지에 필요한 인자를 추가
Map<String, String> args = new LinkedHashMap<String, String>();
String nickname = ((KGKakaoProfile)KGLocalPlayer.getCurrentPlayer().getIdpProfile()).getNickname();
args.put("${sender_name}", nickname);
// 카카오톡 게임 메시지 보내기
KGKakaoTalkMessage.sendNewGameMessage(kakaoProfile, templateId, args, new KGResultCallback<Boolean>() {
    @Override
    public void onResult(KGResult<Boolean> result) {
        if (result.isSuccess()) {
            // 카카오톡 게임 메시지 보내기 성공
        } else {
            // 카카오톡 게임 메시지 보내기 실패
            if (result.getCode() == KGResult.KGResultCode.MESSAGE_SETTING_DISABLE) {
                // 받은이가 메시지 수신 거부를 설정한 경우.
            } else if (result.getCode() == KGResult.KGResultCode.EXCEED_DAILY_USAGE) {
                // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생.
            } else if (result.getCode() == KGResult.KGResultCode.EXCEED_MONTHLY_USAGE) {
                // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생.
            } else {
                // 그 밖의 에러
            }
        }
    }
});

iOS 예제

코드 블럭
#import <KakaoGame/KakaoGame.h>
// [TODO] 게임 친구 목록에서 카카오 프로필 객체를 가져옴
KGKakaoProfile *kakaoProfile; // 카카오 프로필(KGKakaoProfile 객체)
  
if (kakaoProfile.isAllowedMessage == NO)
{
    // 게임 메시지 수신을 허용하지 않은 사용자입니다. 메시지 전송을 하지 않습니다.
    return;
}
  
// [TODO] 게임 메시지 템플랫 아이디 설정
NSString *templateId = @"4101";
// [TODO] 게임 메시지에 필요한 인자를 추가
NSDictionary* argumentDic = @{@"msg":@"새로운 연결, 새로운 세상.", @"iphoneMarketParam":@"test", @"iphoneExecParam":@"test", @"sender_name" : @"iOSTester"};
// 카카오톡 게임 메시지 보내기
[KGKakaoTalkMessage sendNewGameMessageWithKakaoProfile:kakaoProfile
                                            templateId:templateId
                                           argumentDic:argumentDic
                                     completionHandler:^(NSError *error) {
    if (IS_SUCCESS(error) == YES)
    {
        // 카카오톡 게임 메시지 보내기 성공
    }
    else
    {
        // 카카오톡 게임 메시지 보내기 실패
        if (error.code == KGErrorMessageSettingDisabled)
        {
            // 받은이가 메시지 수신 거부를 설정한 경우
        }
        else if (error.code == KGErrorExceedDailyUsage)
        {
            // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생
        }
        else if (error.code == KGErrorExceedMonthlyUsage)
        {
            // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생
        }
        else if (error.code == KGErrorNotKakaoTalkUser)
        {
            // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정)
        }
        else
        {
            // 그 밖의 에러
        }
    }
}];

Windows 동기식 예제

코드 블럭
#include "KakaoGameLib.h"
 
// [TODO] 자신의 프로필 객체를 가져옴
KakaoGame::Data::KGLocalPlayer localPlayer;
 
// [TODO] 게임 친구 목록에서 카카오 프로필 객체를 가져옴
KakaoGame::Data::KGKakaoProfile kakaoProfile;
  
if (false == kakaoProfile.allowedMessage) {
    // 게임 메시지 수신을 허용하지 않은 사용자입니다. 메시지 전송을 하지 않습니다.
    return;
}
  
// [TODO] 게임 메시지 템플랫 아이디 설정
std::wtring templateId;
// [TODO] 게임 메시지에 필요한 인자를 추가
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;
 
// 카카오톡 게임 메시지 보내기
kgKakaoTalkMessage.sendNewGameMessage(kakaoProfile, templateId, arguments, result);
if (result.isSuccess()) {
    // 카카오톡 게임 메시지 보내기 성공
}
else
{
    // 카카오톡 게임 메시지 보내기 실패
    if (result.code == KakaoGame::Data::KGResultCode::MessageSettingDisabled) {
        // 받은이가 메시지 수신 거부를 설정한 경우.
    } else if (result.code == KakaoGame::Data::KGResultCode::ExceedDailyUsage) {
        // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생.
    } else if (result.code == KakaoGame::Data::KGResultCode::ExceedMonthlyUsage) {
        // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생.
    } else if (result.code == KakaoGame::Data::KGResultCode::NotKakaoTalkUser) {
        // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정)
    } else {
        // 그 밖의 에러
    }
}

Windows 비동기식 예제

코드 블럭
#include "KakaoGameLib.h"
 
// [TODO] 자신의 프로필 객체를 가져옴
KakaoGame::Data::KGLocalPlayer localPlayer;
 
// [TODO] 게임 친구 목록에서 카카오 프로필 객체를 가져옴
KakaoGame::Data::KGKakaoProfile kakaoProfile;
  
if (false == kakaoProfile.allowedMessage) {
    // 게임 메시지 수신을 허용하지 않은 사용자입니다. 메시지 전송을 하지 않습니다.
    return;
}
  
// [TODO] 게임 메시지 템플랫 아이디 설정
std::wtring templateId;
// [TODO] 게임 메시지에 필요한 인자를 추가
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;
 
// 카카오톡 게임 메시지 보내기
kgKakaoTalkMessage.sendNewGameMessage(kakaoProfile, templateId, arguments, [this](KakaoGame::Data::KGResult result) {
    if (result.isSuccess()) {
        // 카카오톡 게임 메시지 보내기 성공
    }
    else {
        // 카카오톡 게임 메시지 보내기 실패
        if (result.code == KakaoGame::Data::KGResultCode::MessageSettingDisabled) {
            // 받은이가 메시지 수신 거부를 설정한 경우.
        } else if (result.code == KakaoGame::Data::KGResultCode::ExceedDailyUsage) {
            // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생.
        } else if (result.code == KakaoGame::Data::KGResultCode::ExceedMonthlyUsage) {
            // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생.
        } else if (result.code == KakaoGame::Data::KGResultCode::NotKakaoTalkUser) {
            // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정)
        } else {
            // 그 밖의 에러
        }
    }
});

Unreal 예제

코드 블럭
#include "KakaoGame.h"
  
// [TODO] 게임 친구 목록에서 친구 프로필 정보를 가져옴
FKGKakaoProfile kakaoProfile; // 카카오 프로필(FKGKakaoProfile 객체)
   
// 메시지 수신 여부 확인
if (kakaoProfile.IsAllowedMessage() == false)
{
  // 게임 메시지 수신을 허용하지 않은 사용자 입니다. 메시지 전송을 하지 않습니다.
  return;
}
 
FString templateId = TEXT("4101");
 
TMap<FString, FString> argumentMap;
argumentMap.Add(TEXT("nickname"), TEXT("kakao_nickname"));
 
FKGKakaoTalkMessage::SendNewGameMessage(kakaoProfile, templateId, argumentMap, FKGResultDelegate::CreateLambda([=](FKGResult result) {
  if (result.IsSuccess())
  {
    // 카카오톡 채팅 메시지 보내기 성공.
  }
  else if (result.GetCode() == FKGResultCode::MessageSettingDisabled)
  {
    // 받은이가 메시지 수신 거부를 설정한 경우
  }
  else if (result.GetCode() == FKGResultCode::ExceedDailyUsage)
  {
    // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생
  }
  else if (result.GetCode() == FKGResultCode::ExceedMonthlyUsage)
  {
    // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생
  }
  else if (result.GetCode() == FKGResultCode::NotKakaoTalkUser)
  {
    // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
  }
  else
  {
    // 카카오톡 채팅 메시지 보내기 실패.
  }
}));

23.1.4. 카카오톡 게임 이미지 메시지 보내기

카카오톡 게임 이미지 메시지를 보내는 예제입니다. (가이드 : 20. 카카오톡 메시지 템플릿 V2 )

정보

[Android] Dangerous 퍼미션 사용 기능

 이 기능을 이용하는 경우에 Android Manifest에 READ_EXTERNAL_STORAGE 퍼미션을 추가해야 합니다.

6.0 이상의 게임에서는 개별 권한 고지 및 권한 요청에 대한 가이드를 참고하여 유저에게 해당 권한 허용을 얻어야 이 기능을 사용할 수 있습니다.

Unity 예제

코드 블럭
using Kakaogame.SDK;
KGKakaoProfile kakaoProfile; // 카카오 프로필(KGKakaoProfile 객체)
  
// 메시지 수신 여부 확인
if (kakaoProfile.isAllowedMessage == false)
{
    // 게임 메시지 수신을 허용하지 않은 사용자 입니다. 메시지 전송을 하지 않습니다.
    return;
}
  
// 메시지에 추가할 이미지
Texture2D file;
// 이미지를 업로드하여 이미지 url을 받아옵니다.
KGKakaoTalk.UploadGameImage(file, (result, imageUrl) => {
    if (result.isSuccess)
    {
        // 메시지 템플릿에 지정한 키로 전달
        string templateId = "4101";
        string nickname = ((KGKakaoProfile)KGLocalPlayer.currentPlayer.idpProfile).nickname;
        Dictionary<string, object> argumentDic = new Dictionary<string, object>() {
            {"${sender_name}", nickname}
            {"${first_image}", imageUrl}
        };
   
        KGKakaoTalkMessage.SendNewGameMessage(kakaoProfile, templateId, argumentDic, (result) => {
            if (result.isSuccess)
            {
                // 카카오톡 채팅 메시지 보내기 성공.
            }
            else if (result.code == KGResultCode.MessageSettingDisabled)
            {
                // 받은이가 메시지 수신 거부를 설정한 경우
            }
            else if (result.code == KGResultCode.ExceedDailyUsage)
            {
                // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생
            }
            else if (result.code == KGResultCode.ExceedMonthlyUsage)
            {
                // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생
            }
            else if (result.code == KGResultCode.NotKakaoTalkUser)
            {
                // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
            }
            else
            {
                // 카카오톡 채팅 메시지 보내기 실패.
            }
        });
    }
    else
    {
            // 이미지 업로드 실패
    }
});

Android 예제

코드 블럭
// [TODO] 게임 친구 목록에서 친구 프로필 정보를 가져옴
KGKakaoProfile kakaoProfile;
  
// 메시지 수신 여부 확인
if (kakaoProfile.isAllowedMessage() == false) {
    // 게임 메시지 수신을 허용하지 않은 사용자입니다. 메시지 전송을 하지 않습니다.
    return;
}
  
// [TODO] 게임 메시지 템플랫 아이디 설정
String templateId;
  
// 메시지에 추가할 이미지
File file;
// 이미지를 업로드하여 이미지 url을 받아옵니다.
KGKakaoTalk.uploadGameImage(file, new KGResultCallback<String>() {
    @Override
    public void onResult(KGResult<String> result) {
        if (result.isSuccess()) {
            // 업로드한 이미지의 url
            imageUrl = result.getContent();
        } else {
            // 이미지 업로드 실패
        }
    }
});
// [TODO] 게임 메시지에 필요한 인자를 추가
Map<String, String> args = new LinkedHashMap<String, String>();
String nickname = ((KGKakaoProfile)KGLocalPlayer.getCurrentPlayer().getIdpProfile()).getNickname();
args.put("${sender_name}", nickname);
args.put("${first_image}", imageUrl); // 메시지 템플릿에 지정한 키로 전달
// 카카오톡 게임 메시지 보내기
KGKakaoTalkMessage.sendNewGameMessage(kakaoProfile, templateId, args, new KGResultCallback<Boolean>() {
    @Override
    public void onResult(KGResult<Boolean> result) {
        if (result.isSuccess()) {
            // 카카오톡 게임 메시지 보내기 성공
        } else {
            // 카카오톡 게임 메시지 보내기 실패
            if (result.getCode() == KGResult.KGResultCode.MESSAGE_SETTING_DISABLE) {
                // 받은이가 메시지 수신 거부를 설정한 경우.
            } else if (result.getCode() == KGResult.KGResultCode.EXCEED_DAILY_USAGE) {
                // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생.
            } else if (result.getCode() == KGResult.KGResultCode.EXCEED_MONTHLY_USAGE) {
                // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생.
            } else {
                // 그 밖의 에러
            }
        }
    }
});

iOS 예제

코드 블럭
#import <KakaoGame/KakaoGame.h>
// [TODO] 게임 친구 목록에서 카카오 프로필 객체를 가져옴
KGKakaoProfile *kakaoProfile; // 카카오 프로필(KGKakaoProfile 객체)
  
if (kakaoProfile.isAllowedMessage == NO)
{
    // 게임 메시지 수신을 허용하지 않은 사용자입니다. 메시지 전송을 하지 않습니다.
    return;
}
  
// 메시지에 추가할 이미지
UIImage* file;
// 이미지를 업로드하여 이미지 url을 받아옵니다.
[KGKakaoTalk uploadGameImage:file completionHandler:^(NSError *error, NSString *imageUrl) {
    if (IS_SUCCESS(error) == YES)
    {
        // 메시지 템플릿에 지정한 키로 전달
        NSString* templateId = @"4101";
        NString* nickname = kakaoProfile.nickname;
        NSDictionary* argumentDic = @{@"${sender_name}":nickname, @"${first_image}":imageUrl};
  
        [KGKakaoTalkMessage sendNewGameMessageWithKakaoProfile:kakaoProfile templateId:templateId argumentDic:argumentDic completionHandler:^(NSError* error) {
            if (IS_SUCCESS(error) == YES)
            {
                // 카카오톡 게임 메시지 보내기 성공
            }
            else
            {
                // 카카오톡 게임 메시지 보내기 실패
                if (error.code == KGErrorMessageSettingDisabled)
                {
                    // 받은이가 메시지 수신 거부를 설정한 경우
                }
                else if (error.code == KGErrorExceedDailyUsage)
                {
                    // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생
                }
                else if (error.code == KGErrorExceedMonthlyUsage)
                {
                    // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생
                }
                else if (error.code == KGErrorNotKakaoTalkUser)
                {
                    // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정)
                }
                else
                {
                    // 그 밖의 에러
                }
            }
        }];
    }
    else
    {
            // 이미지 업로드 실패
    }
}];

Windows 동기식 예제

코드 블럭
#include "KakaoGameLib.h"
 
// [TODO] 자신의 프로필 객체를 가져옴
KakaoGame::Data::KGLocalPlayer localPlayer;
 
// [TODO] 게임 친구 목록에서 카카오 프로필 객체를 가져옴
KakaoGame::Data::KGKakaoProfile kakaoProfile;
  
if (false == kakaoProfile.allowedMessage) {
    // 게임 메시지 수신을 허용하지 않은 사용자입니다. 메시지 전송을 하지 않습니다.
    return;
}
  
// [TODO] 보낼 이미지 로컬파일 경로
std::wtring image;
KakaoGame::Data::KGResult result;
std::wstring imageUrl;
KakaoGame::API::KGKakaoTalk kgKakaoTalk;
 
kgKakaoTalk.uploadGameImage(image, result, imageUrl);
  
if (false == result.isSuccess()) {
    // 이미지 업로드 실패
    return;
}
  
// [TODO] 게임 메시지 템플랫 아이디 설정
std::wtring templateId;
// [TODO] 게임 메시지에 필요한 인자를 추가
std::map<std::wstring, std::wstring> arguments;
arguments.insert(std::pair<std::wstring, std::wstring>(TEXT("${sender_name}"), localPlayer.kakaoProfile.nickname));
arguments.insert(std::pair<std::wstring, std::wstring>(TEXT("${first_image}"), imageUrl));
 
KakaoGame::Data::KGResult result;
KakaoGame::API::KGKakaoTalkMessage kgKakaoTalkMessage;
 
// 카카오톡 게임 메시지 보내기
kgKakaoTalkMessage.sendNewGameMessage(kakaoProfile, templateId, arguments, result);
if (result.isSuccess()) {
    // 카카오톡 게임 메시지 보내기 성공
}
else {
    // 카카오톡 게임 메시지 보내기 실패
    if (result.code == KakaoGame::Data::KGResultCode::MessageSettingDisabled) {
        // 받은이가 메시지 수신 거부를 설정한 경우.
    } else if (result.code == KakaoGame::Data::KGResultCode::ExceedDailyUsage) {
        // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생.
    } else if (result.code == KakaoGame::Data::KGResultCode::ExceedMonthlyUsage) {
        // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생.
    } else if (result.code == KakaoGame::Data::KGResultCode::NotKakaoTalkUser) {
        // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정)
    } else {
        // 그 밖의 에러
    }
}

Windows 비동기식 예제

코드 블럭
#include "KakaoGameLib.h"
 
// [TODO] 자신의 프로필 객체를 가져옴
KakaoGame::Data::KGLocalPlayer localPlayer;
 
// [TODO] 게임 친구 목록에서 카카오 프로필 객체를 가져옴
KakaoGame::Data::KGKakaoProfile kakaoProfile;
  
if (false == kakaoProfile.allowedMessage) {
    // 게임 메시지 수신을 허용하지 않은 사용자입니다. 메시지 전송을 하지 않습니다.
    return;
}
  
// [TODO] 보낼 이미지 로컬파일 경로
std::wtring image;
KakaoGame::Data::KGResult result;
std::wstring imageUrl;
KakaoGame::API::KGKakaoTalk kgKakaoTalk;
 
kgKakaoTalk.uploadGameImage(image, result, imageUrl);
  
if (false == result.isSuccess()) {
    // 이미지 업로드 실패
    return;
}
  
// [TODO] 게임 메시지 템플랫 아이디 설정
std::wtring templateId;
// [TODO] 게임 메시지에 필요한 인자를 추가
std::map<std::wstring, std::wstring> arguments;
arguments.insert(std::pair<std::wstring, std::wstring>(TEXT("${sender_name}"), localPlayer.kakaoProfile.nickname));
arguments.insert(std::pair<std::wstring, std::wstring>(TEXT("${first_image}"), imageUrl));
  
KakaoGame::API::KGKakaoTalkMessage kgKakaoTalkMessage;
 
// 카카오톡 게임 메시지 보내기
kgKakaoTalkMessage.sendNewGameMessage(kakaoProfile, templateId, arguments, [this](KakaoGame::Data::KGResult result) {
    if (result.isSuccess()) {
        // 카카오톡 게임 메시지 보내기 성공
    }
    else {
        // 카카오톡 게임 메시지 보내기 실패
        if (result.code == KakaoGame::Data::KGResultCode::MessageSettingDisabled) {
            // 받은이가 메시지 수신 거부를 설정한 경우.
        } else if (result.code == KakaoGame::Data::KGResultCode::ExceedDailyUsage) {
            // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생.
        } else if (result.code == KakaoGame::Data::KGResultCode::ExceedMonthlyUsage) {
            // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생.
        } else if (result.code == KakaoGame::Data::KGResultCode::NotKakaoTalkUser) {
            // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정)
        } else {
            // 그 밖의 에러
        }
    }
});

Unreal 예제

코드 블럭
#include "KakaoGame.h"

// [TODO] 게임 친구 목록에서 친구 프로필 정보를 가져옴
FKGKakaoProfile kakaoProfile; // 카카오 프로필(FKGKakaoProfile 객체)

// [TODO] 보낼 이미지 로컬파일 경로
FString imagePath;
FKGKakaoTalk::UploadGameImage(imagePath, FKGResultWithImageUrlPathDelegate::CreateLambda([=](FKGResult result, FString imageUrl) {
  if (result.IsSuccess())
  {
    // 이미지 업로드 성공
    FString templateId = TEXT("4101");

    // 메시지 전송 
    TMap<FString, FString> argumentMap;
    argumentMap.Add(TEXT("${sender_name}"), TEXT("nickname"));
    argumentMap.Add(TEXT("${first_image}"), TEXT("imageUrl"));

    FKGKakaoTalkMessage::SendNewGameMessage(kakaoProfile, templateId, argumentMap, FKGResultDelegate::CreateLambda([=](FKGResult result) {
      if (result.IsSuccess())
      {
        // 카카오톡 채팅 메시지 보내기 성공.
      }
      else if (result.GetCode() == FKGResultCode::MessageSettingDisabled)
      {
        // 받은이가 메시지 수신 거부를 설정한 경우
      }
      else if (result.GetCode() == FKGResultCode::ExceedDailyUsage)
      {
        // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생
      }
      else if (result.GetCode() == FKGResultCode::ExceedMonthlyUsage)
      {
        // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생
      }
      else if (result.GetCode() == FKGResultCode::NotKakaoTalkUser)
      {
        // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
      }
      else
      {
        // 카카오톡 채팅 메시지 보내기 실패.
      }
    }));
  }
}));