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