23.1 카카오톡 게임 메시지 예제

23.1. 카카오톡 게임 메시지 SDK 예제

 


23.1.1. 카카오톡 게임 메시지 수신 여부 설정하기

자신의 카카오톡 게임 메시지 수신 여부를 설정하는 예제입니다.

Unity 예제

using KakaoGame.SDK; using KakaoGame.SDK.Kakao; // 카카오톡 게임 메시지 수신 여부 설정 뷰 띄우기 KGKakaoTalkMessage.ShowAllowMessageSettingView(     (result, isAllowed) => {         if (result.isSucces) {             // 카카오톡 게임 메시지 수신 여부 설정 성공         }         else if (result.code == KGResultCode.NotKakaoTalkUser)         {             // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.         }         else {             // 카카오톡 게임 메시지 수신 여부 설정 실패         }     });

Android 예제

// 카카오톡 게임 메시지 수신 여부 설정 뷰 띄우기 KGKakaoTalkMessage.showAllowMessageSettingView(activity, new KGResultCallback<Boolean>() {     @Override     public void onResult(KGResult<Boolean> result) {         if (result.isSuccess()) {             // 카카오톡 게임 메시지 수신 여부 설정 성공             boolean allowMessage = result.getContent(); // 설정된 메시지 수신 허용 여부         } else if (result.getCode() == KGResult.KGResultCode.NOT_KAKAOTALK_USER) {             // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.         } else {             // 카카오톡 게임 메시지 수신 여부 설정 실패         }     } });

iOS 예제

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

Windows 동기식 예제

#include "KakaoGameLib.h"   KakaoGame::Data::KGResult result; bool isAllowedMessage; KakaoGame::API::KGKakaoTalkMessage kgKakaoTalkMessage;   // 카카오톡 게임 메시지 수신 여부 설정 뷰 띄우기 kgKakaoTalkMessage.showAllowMessageSettingView(result, isAllowedMessage); if (result.isSuccess()) {     // 카카오톡 게임 메시지 수신 여부 설정 성공     bool allowMessage = isAllowedMessage; // 설정된 메시지 수신 허용 여부 } else if (error.code == KakaoGame::Data::KGResultCode::NotKakaoTalkUser)  {     // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정) } else {     // 카카오톡 게임 메시지 수신 여부 설정 실패 }

Windows 비동기식 예제

#include "KakaoGameLib.h"    KakaoGame::API::KGKakaoTalkMessage kgKakaoTalkMessage;   // 카카오톡 게임 메시지 수신 여부 설정 뷰 띄우기 kgKakaoTalkMessage.showAllowMessageSettingView([this](KakaoGame::Data::KGResult result, bool isAllowedMessage) {     if (result.isSuccess()) {         // 카카오톡 게임 메시지 수신 여부 설정 성공         bool allowMessage = isAllowedMessage; // 설정된 메시지 수신 허용 여부     }     else if (error.code == KakaoGame::Data::KGResultCode::NotKakaoTalkUser)  {         // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정)     }     else {         // 카카오톡 게임 메시지 수신 여부 설정 실패     } }, reinterpret_cast<HWND>(GEngine->GameViewport->GetWindow()->GetNativeWindow()->GetOSWindowHandle());

Unreal 예제

#include "KakaoGame.h"    // 카카오톡 게임 메시지 수신 여부 설정 뷰 띄우기 FKGKakaoTalkMessage::ShowAllowMessageSettingView(FKGResultWithMessageAllowedValueDelegate::CreateLambda([=](FKGResult result, bool isAllowedMessage) {   if (result.IsSuccess())   {     // 카카오톡 게임 메시지 수신 여부 설정 성공   }   else if (result.GetCode() == FKGResultCode::NotKakaoTalkUser)   {       // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.   }   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 {             // 요청 실패         }     } });

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 { // 카카오톡 채팅 메시지 보내기 실패. } })); } }));