메타 데이터의 끝으로 건너뛰기
메타 데이터의 시작으로 이동

이 페이지의 이전 버전을 보고 있습니다. 현재 버전 보기.

현재와 비교 페이지 이력 보기

버전 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
    {
        // 카카오톡 게임 메시지 수신 여부 설정 실패
    }
}];

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
    {
            // 이미지 업로드 실패
    }
}];


  • 레이블 없음