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 { // 카카오톡 게임 메시지 수신 여부 설정 실패 } }]; |
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 { // 카카오톡 게임 친구 목록 조회 실패 } }]; |
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 { // 그 밖의 에러 } } }]; |
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 { // 이미지 업로드 실패 } }]; |