버전 비교

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

초기화 및 상태변화 이벤트 처리

...

Initialization and Status Change Event Processing

...

App Event Method Initialization (iOS Only)

발췌문 삽입
EN_Initialization and Status Change Event Processing SDK Example
EN_Initialization and Status Change Event Processing SDK Example
nameapplication_ios_appDelegate
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

	var window: UIWindow?
	
	override init() {
		KGTApplication.setSwizzleAppDelegate(delegate: AppDelegate.description())
	}

}

SDK

...

Initialization

발췌문 삽입
EN_Initialization and Status Change Event Processing SDK Example
EN_Initialization and Status Change Event Processing SDK Example
nameapplication_init_sdk
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube

/**
 * 단일When using 앱으로a 사용하는single 경우app
 */
let config = KGTConfig(appId: "909428",
					    appSecret: "c3c38bbfa3828b342d946e9770c974d0", 					   appVersion: "1.0.0", 					   market: "appStore", 					   ageRating: "14", 					   serverTypeappSecret: .QA"c3c38bbfa3828b342d946e9770c974d0",
					   logLevel: .Verbose)  /**  *  그룹을 사용하는 경우  */ let apps: [String : String] = [ "909428" appVersion: "c3c38bbfa3828b342d946e9770c974d01.0.0",
								"921478" : "5891c32124ca35821890a0bc1cec77a5"]
let config = KGTConfig(appGroupId: "tubeAppGroup",
					   apps: apps,
					   appVersion: "1.0.0",
					                       market: "appStore",
					   ageRating: "14", 					   serverType: .QA, 					   logLevel: .Verbose)  KGTApplication.initSDK(config)

스타트 (Start) 하기

...

코드 블럭
languageswift
import KakaoGameTube  KGTApplication.start { error in 	if error.isSuccess {
		// 스타트가 성공 한 경우
				
		// 자동로그인 여부
		let isLoggedIn = KGTPlayer.isLoggedIn
				
		if isLoggedIn {
			// 플랫폼에서 발급한 현재 Player의 ID
			let playerId = KGTPlayer.currentPlayer?.playerId
					
			// 플랫폼 액세스 토큰
			let accessToken = KGTPlayer.accessToken
					
			// 현재 IDP 인증 정보를 가져옴
			let idpProfile = KGTPlayer.currentPlayer?.idpProfile
					
			// [TODO] 게임 화면으로 이동 합니다.
		} else {
			// [TODO] 자동로그인이 안 된 경우 로그인 화면으로 이동 합니다.
		}
				
	} else {
		// 스타트가 실패 한 경우 - 초기화가 실패한 경우 이므로 스타트를 재시도 하거나 앱을 종료 하여야 합니다.
				
		if error.code == KGTErrorCode.networkFailure ||
			error.code == KGTErrorCode.serverTimeout ||
			error.code == KGTErrorCode.serverConnectionFalied {
			// [TODO] 네트워크 에러가 발생한 경우에는 유저에게 네트워크 이슈로 스타트에 실패했음을 알리고 재시도
		} else {
			// [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 스타트 재시도 요청 하여야 합니다. - 문제가 반복해서 발생하는 경우 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
		}
	}
}

Pause 하기

...

ageRating: "14",
                       serverType: .QA,
                       logLevel: .Verbose)

/**
 * When using an app group
 */
let apps: [String : String] = [ "909428" : "c3c38bbfa3828b342d946e9770c974d0",
                                "921478" : "5891c32124ca35821890a0bc1cec77a5"]
let config = KGTConfig(appGroupId: "tubeAppGroup",
                       apps: apps,
                       appVersion: "1.0.0",
                       market: "appStore",
                       ageRating: "14",
                       serverType: .QA,
                       logLevel: .Verbose)

KGTApplication.initSDK(config)

Start

발췌문 삽입
EN_Initialization and Status Change Event Processing SDK Example
EN_Initialization and Status Change Event Processing SDK Example
nameapplication_start
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube
 
KGTApplication.pause()

Resume 하기

...

코드 블럭
languageswift
import KakaoGameTube
 
KGTApplication.resume { error in
	if error.isSuccess {
		// [TODO] resume이 성공 한 경우 게임 화면을 재개합니다.
	} else {
		// [TODO] resume이 실패 한 경우 인증 실패 면 로그인 화면으로, 그외의 경우는 에러 팝업을 띄우고 재시도 여부를 확인합니다.
		if error.code == KGTErrorCode.authFailure ||
			 KakaoGameTube

KGTApplication.start { error in
	if error.isSuccess {
		// When the start is successful
				
		// Whether auto-login is enabled
		let isLoggedIn = KGTPlayer.isLoggedIn
				
		if isLoggedIn {
			// The current Player ID issued by the platform
			let playerId = KGTPlayer.currentPlayer?.playerId
					
			// Platform access token
			let accessToken = KGTPlayer.accessToken
					
			// Retrieve the current IDP authentication information
			let idpProfile = KGTPlayer.currentPlayer?.idpProfile
					
			// [TODO] Move to the game screen.
		} else {
			// [TODO] If auto-login is not enabled, move to the login screen.
		}
				
	} else {
		// If the start fails - since initialization failed, retry start or close the app.
				
		if error.code == KGTErrorCode.networkFailure ||
			error.code == KGTErrorCode.serverTimeout ||
			error.code == KGTErrorCode.serverConnectionFalied {
			// [TODO] If a network error occurs, notify the user of the failure due to a network issue and retry.
		} else {
			// [TODO] If other errors occur, provide error guidance and request a retry. - If the issue persists, check the error code and logs to determine the cause.
		}
	}
}

Pause

발췌문 삽입
EN_Initialization and Status Change Event Processing SDK Example
EN_Initialization and Status Change Event Processing SDK Example
nameapplication_pause
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube
 
KGTApplication.pause()

Resume

발췌문 삽입
EN_Initialization and Status Change Event Processing SDK Example
EN_Initialization and Status Change Event Processing SDK Example
nameapplication_resume
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube
 
KGTApplication.resume { error in
	if error.isSuccess {
		// [TODO] If resume is successful, resume the game screen.
	} else {
		// [TODO] If resume fails, move to the login screen if authentication fails, or show an error popup and check whether to retry for other errors.
		if error.code == KGTErrorCode.authFailure ||
			error.code == KGTErrorCode.idpAuthFailure {
			// [TODO] If authentication fails, move to the start screen and perform the login flow again.
		} else {
			// [TODO] For other errors, provide error guidance and retry resume. If the issue persists, consider closing the app.
		}
	}
})

Login

...

발췌문 삽입
EN_Login SDK Example
EN_Login SDK Example
namelogin
nopaneltrue

Logging In Without Using the Default Login UI

발췌문 삽입
EN_Login SDK Example
EN_Login SDK Example
namelogin_custom
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube

// Set the IdpCode for login
let idpCode = KGTIdpCode.Kakao

// Login with a specific IDP
KGTPlayer.login(with: idpCode) { error in
	if error.isSuccess {
		// IDP login and platform login successful

        // The current Player ID issued by the platform
		let playerId = KGTPlayer.currentPlayer?.playerId
					
		// Platform access token
		let accessToken = KGTPlayer.accessToken
					
		// Retrieve the current IDP authentication information
		let idpProfile = KGTPlayer.currentPlayer?.idpProfile

		// [TODO] Since login was successful, proceed to the game screen.
	} else {
		// IDP login or platform login failed
		// [TODO] If login fails, inform the user and retry.

        if error.code == KGTErrorCode.networkFailure ||
			error.code == KGTErrorCode.serverTimeout ||
			error.code == KGTErrorCode.serverConnectionFailed {
			// [TODO] If a network error occurs, request a login retry.
		} else if error.code == KGTErrorCode.blockedByPolicy {
			// [TODO] Login attempt from a blocked country code or IP range. Handle this accordingly.
        } else if error.code == KGTErrorCode.userCanceled {    
			// [TODO] The user canceled the login process, so the login screen should remain.
		} else {
			// [TODO] For other errors, inform the user and request a login retry. - Check the error code and logs to identify the cause.
		}
	}
})

Logout

...

발췌문 삽입
EN_Logout SDK Example
EN_Logout SDK Example
namelogout
nopaneltrue

Logging Out Without Using the Default Logout UI

발췌문 삽입
EN_Logout SDK Example
EN_Logout SDK Example
namelogout_custom
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube

// Logout request
KGTPlayer.logout(showUI: false) { error in
    if error.isSuccess {
        // Logout successful

        // [TODO] Return to the start screen
    } else {
        // Logout failed
    }
})

Unregistration

...

발췌문 삽입
탈퇴 SDK 예제
탈퇴 SDK 예제
nameunregister
nopaneltrue

Unregistering Without Using the Default Unregistration UI

발췌문 삽입
탈퇴 SDK 예제
탈퇴 SDK 예제
nameunregister_custom
nopaneltrue

코드 블럭
languagejava
import KakaoGameTube

// Unregister request
KGTPlayer.unregister(showUI: false) { error in 
    if error.isSuccess {
        // Unregistration successful

        // [TODO] Return to the start screen
    } else {
        // Unregistration failed 
    }
})

Account Linking

...

발췌문 삽입
EN_Account Linking SDK Example
EN_Account Linking SDK Example
nameconnect
nopaneltrue

Linking Accounts Without Using the Default Account Linking UI

발췌문 삽입
EN_Account Linking SDK Example
EN_Account Linking SDK Example
nameconnect_custom
nopaneltrue

코드 블럭
languagejava
import KakaoGameTube

// Set the IdpCode you want to log in with
let idpCode = KGTIdpCode.Kakao

// Connect to a specific IDP account
KGTPlayer.connect(idpCode: idpCode) { error in 
    if error.isSuccess {
        // IDP connection successful
        // Player ID does not change.
    } else {
        // IDP connection failed

        if error.code == KGTErrorCode.invalidParameter {
            // Invalid parameter was passed
        } else if error.code == KGTErrorCode.idpAuthFailurenotAuthorized {
			// [TODO] 인증 실패의 경우 시작 화면으로 이동해서 다시 신규 로그인 flow를 수행합니다. 		} else { 			// [TODO]The 나머지user 에러가is 발생한not 경우currently 경우logged 에러in
안내  resume  재시도 합니다. - 반복해서 문제가} 발생하는else 경우if 앱을 종료하도록 합니다.
		}
	}
})

로그인

...

기본 로그인 UI를 사용하지 않는 로그인하기

...

코드 블럭
languageswift
import KakaoGameTubeerror.code == KGTErrorCode.invalidState {
            // 로그인The 하고자current 하는authenticated IdpCodeIDP 셋팅is letnot idpCodeeligible =for KGTIdpCode.Kakaoaccount connection
// 특정 idp로 로그인 하기 KGTPlayer.login(with: idpCode) { error} inelse 	if error.isSuccesscode {
		// IDP 로그인과 플랫폼 로그인 성공== KGTErrorCode.alreadyUsedIdpAccount {
            // 플랫폼에서The 발급한account 현재is Player의already IDconnected
		let playerId = KGTPlayer.currentPlayer?.playerId 					 		// 플랫폼 액세스 토큰} 		letelse accessToken{
= KGTPlayer.accessToken 					 		// 현재 IDP 인증 정보를 가져옴
		let idpProfile = KGTPlayer.currentPlayer?.idpProfile    		// [TODO]Other 로그인이errors 성공하였으므로occurred
게임 화면으로 이동합니다. 	} else { 		// IDP 로그인}
혹은 플랫폼 로그인 실패 		// [TODO] 로그인 실패 시 사용자 안내 후 재 시도 하도록 하여야 합니다.

        if error.code == KGTErrorCode.networkFailure ||
			error.code == KGTErrorCode.serverTimeout ||
			error.code == KGTErrorCode.serverConnectionFalied {
			// [TODO] 네트워크 에러가 발생한 경우에는 로그인 재시도 요청 하여야 합니다.
		} else if error.code == KGTErrorCode.blockedByPolicy {
			// [TODO] 차단당한 국가 코드 또는 IP 대역에서 로그인을 시도하였습니다. 이에 대한 처리가 필요합니다.
        } else if error.code == KGTErrorCode.userCanceled {    
			// [TODO] 사용자가 로그인 진행 중 취소한 상황이므로 로그인 화면을 유지 하여야 합니다.
		} else {
			// [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
		}
	}
})

로그아웃

...

기본 로그아웃 UI를 사용하지 않는 로그아웃하기

...

}
})

Profile

...

Retrieve My Information

발췌문 삽입
EN_Profile SDK Example
EN_Profile SDK Example
nameplayer_currentPlayer
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube

let localPlayer = KGTPlayer.currentPlayer

Retrieve My IDP Information

발췌문 삽입
EN_Profile SDK Example
EN_Profile SDK Example
nameplayer_idpProfile
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube

let idpProfile = KGTPlayer.currentPlayer?.idpProfile

System Information

...

Retrieve Language Code

발췌문 삽입
EN_System Information SDK Example
EN_System Information SDK Example
namesystem_language_code
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube

let languageCode = KGTSystem.languageCode

Retrieve Country Code

발췌문 삽입
EN_System Information SDK Example
EN_System Information SDK Example
namesystem_country_code
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube

let countryCode = KGTSystem.countryCode

Retrieve IP-based Country Code

발췌문 삽입
EN_System Information SDK Example
EN_System Information SDK Example
namesystem_geo_country_code
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube

let countryCode = KGTSystem.geoCountryCode

Retrieve Device ID

발췌문 삽입
EN_System Information SDK Example
EN_System Information SDK Example
namesystem_device_id
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube

let deviceId = KGTSystem.deviceId

Retrieve Device Model

발췌문 삽입
EN_System Information SDK Example
EN_System Information SDK Example
namesystem_device_model
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube

let deviceModel = KGTSystem.deviceModel

Retrieve OS Name

발췌문 삽입
EN_System Information SDK Example
EN_System Information SDK Example
namesystem_os_name
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube

let osName = KGTSystem.osName

Retrieve Network Connection Status

발췌문 삽입
EN_System Information SDK Example
EN_System Information SDK Example
namesystem_is_network_connected
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube

let isNetworkConnected = KGTSystem.isNetworkConnected

Retrieve Connected Network Type

발췌문 삽입
EN_System Information SDK Example
EN_System Information SDK Example
namesystem_network_type
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube

let networkType = KGTSystem.networkType

Kakao Integration Feature

...

Setting Up KakaoTalk Game Message Reception

발췌문 삽입
EN_Kakao Integration Feature SDK Example
EN_Kakao Integration Feature SDK Example
namekakao_talk_show_setting
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube
import KakaoGameTubeKakao

// Display the view to set the KakaoTalk game //message 로그아웃reception 요청settings
KGTPlayer.logout(showUI: false) KGTKakaoTalk.showSetting { error, isAllowedMe in
	    if error.isSuccess {
		// 로그아웃 성공

		// [TODO] 시작 화면으로 돌아가기
	} else {
		// 로그아웃 실패
	}
})

탈퇴

...

기본 탈퇴 UI를 사용하지 않는 탈퇴하기

...

코드 블럭
languagejava
import KakaoGameTube

// 탈퇴 요청
KGTPlayer.unregister(showUI: false) { error in 
	if error.isSuccess {
		// 탈퇴 성공

		// [TODO] 시작 화면으로 돌아가기
	} else {
		// 탈퇴 실패 
	}
})

계정 연결

...

기본 계정 연결 UI를 사용하지 않는 계정 연결하기

...


        // Successfully set the KakaoTalk game message reception settings
        let isAllowedMe = isAllowedMe // Whether message reception is allowed
    } else if error.code == KGTErrorCode.notKakaoTalkUser {
        // The logged-in user is not a 'KakaoTalk' user. This occurs when the user is only registered with KakaoStory and not KakaoTalk.
    } else {
        // Failed to set the KakaoTalk game message reception settings
    }
})

KakaoTalk Profile Retrieval

발췌문 삽입
EN_Kakao Integration Feature SDK Example
EN_Kakao Integration Feature SDK Example
namekakao_talk_talk_profile
nopaneltrue

코드 블럭
languagejavaswift
import KakaoGameTube
import KakaoGameTubeKakao

// 로그인Display 하고자the 하는 IdpCode 셋팅
let idpCode = KGTIdpCode.Kakao

// 특정 idp로 계정 연결 하기
KGTPlayer.connect(idpCode: idpCode) { error in 
	view to set the KakaoTalk game message reception settings
KGTKakaoTalk.showSetting { error, isAllowedMe in
    if error.isSuccess {
		// IDP 연결 성공
		// Player ID 는 변경되지 않습니다.
	} else {
		// IDP 연결 실패

		if error.code == KGTErrorCode.invalidParameter {
			// 잘못된 인자가 전달 된 경우
		        // Successfully set the KakaoTalk game message reception settings
        let isAllowedMe = isAllowedMe // Whether message reception is allowed
    } else if error.code == KGTErrorCode.notAuthorizednotKakaoTalkUser {
			// 현재 로그인이 안되어 있는 경우
		} else if error.code == KGTErrorCode.invalidState {
			// 현재 인증 된 IDP 가 계정 연결 가능한 idp가 아닌 경우
		} else if error.code == KGTErrorCode.alreadyUsedIdpAccount {
			// 이미 연결되어 있는 계정이 있는 경우
		} else {
			// 기타 에러 발생
		}
	}
})

프로필

내 정보 조회하기

...

코드 블럭
languageswift
import KakaoGameTube

let localPlayer = KGTPlayer.currentPlayer

...


        // The logged-in user is not a 'KakaoTalk' user. This occurs when the user is only registered with KakaoStory and not KakaoTalk.
    } else {
        // Failed to set the KakaoTalk game message reception settings
    }
})

Retrieving KakaoTalk Game Friend List

발췌문 삽입
EN_Profile Kakao Integration Feature SDK Example
EN_Profile Kakao Integration Feature SDK Example
nameplayerkakao_talk_idpProfilefriends
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube

let idpProfile = KGTPlayer.currentPlayer?.idpProfile

시스템 정보

언어 코드 가져오기

...

코드 블럭
languageswift
import KakaoGameTube

let languageCode = KGTSystem.languageCode

국가 코드 가져오기

...

코드 블럭
languageswift
import KakaoGameTube

let countryCode = KGTSystem.countryCode

IP 기반 국가 코드 가져오기

...

코드 블럭
languageswift
import KakaoGameTube

let countryCode = KGTSystem.geoCountryCode

기기 아이디 가져오기

...

코드 블럭
languageswift
import KakaoGameTube

let deviceId = KGTSystem.deviceId

기기 모델 가져오기

...

코드 블럭
languageswift
import KakaoGameTube

let deviceModel = KGTSystem.deviceModel

OS 이름 가져오기

...

코드 블럭
languageswift
import KakaoGameTube

let osName = KGTSystem.osName

네트워크 연결 여부 가져오기

...

코드 블럭
languageswift
import KakaoGameTube

let isNetworkConnected = KGTSystem.isNetworkConnected

연결된 네트워크 타입 가져오기

...

코드 블럭
languageswift
import KakaoGameTube

let networkType = KGTSystem.networkType

카카오 연동 기능

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

코드 블럭
languageswift
import KakaoGameTube
import KakaoGameTubeKakao

// Retrieve the list of game friends
KGTKakaoTalk.friends { error, players in
    if error.isSuccess {
        // Successfully retrieved KakaoTalk game friends list.
        for player in players {
            if let kakaoFriendProfile = player.idpProfile as? KGTKakaoFriendProfile {
                // You can now access kakaoFriendProfile properties here
            }
        }
    } else if error.code == KGTErrorCode.notKakaoTalkUser {
        // The logged-in user is not a 'KakaoTalk' user. This occurs when the user is only registered with KakaoStory and not KakaoTalk.
    } else {
        // Failed to retrieve KakaoTalk game friends list
    }
})

Sending KakaoTalk Game Messages

발췌문 삽입
EN_Kakao Integration Feature SDK Example
EN_Kakao Integration Feature SDK Example
namekakao_talk_send_showgame_settingmessage
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube
import KakaoGameTubeKakao

// 카카오톡Friend object 게임retrieved 메시지via 수신the 여부friends 설정API
let 띄우기
KGTKakaoTalk.showSetting { error, isAllowedMe in
	if error.isSuccess {
		// 카카오톡 게임 메시지 수신 여부 설정 성공
		let isAllowedMe = isAllowedMe // 설정된 메시지 수신 허용 여부
	} else if error.code == KGTErrorCode.notKakaoTalkUser {
        // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
	} else {
		// 카카오톡 게임 메시지 수신 여부 설정 실패
	}
})

카카오톡 프로필 조회하기

...

코드 블럭
languageswift
import KakaoGameTube
import KakaoGameTubeKakao

// 카카오톡 프로필 조회하기
KGTKakaoTalk.talkProfile { error, profile in
	if error.isSuccess {
		// 카카오톡 프로필 조회 성공
		
		let talkProfile = profile // 로그인한 유저의 카카오톡 프로필 정보kakaoProfile: KGTKakaoFriendProfile = // Kakao profile (KGTKakaoFriendProfile object)

// [TODO] Set the template ID
let templateId = ""

// [TODO] Set the arguments for the message template
var argumentDic: [String: Any]? = [:]
argumentDic?["rog_link"] = "test=100&hello20111"
argumentDic?["bruce2"] = "test=100&hello=20111"

// Send KakaoTalk game message
KGTKakaoTalk.sendGameMessage(kakaoProfile: kakaoProfile, templateId: templateId, argumentDic: argumentDic) { error in
    if error.isSuccess {
        // Successfully sent KakaoTalk chat message
    } else {
        if error.code == KGTErrorCode.messageSettingDisabled {
            // The recipient has set to block messages
        } else if error.code == KGTErrorCode.notKakaoTalkUserexceedDailyUsage {
		
            // 로그인The daily 유저가quota '카카오톡'for 유저가sending 아닙니다.messages 카카오in 스토리만a 가입한specific 유저의app 계정과(regardless 같이of 카카오톡recipient) 유저가has 아닌been 경우.exceeded
	} else { 		// 카카오톡 프로필 조회 실패 	}
})

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

...

코드 블럭
languageswift
import KakaoGameTube
import KakaoGameTubeKakao

// 게임 친구 목록 조회하기
KGTKakaoTalk.friends { error, players in
	if error.isSuccess {
		// 카카오톡 게임 친구 목록 조회 성공.
		for player in players {
			if let kakaoFriendProfile = player.idpProfile as? KGTKakaoFriendProfile {
			
			}
		}} else if error.code == KGTErrorCode.exceedMonthlyUsage {
            // The monthly quota for sending messages to a specific person in a specific app has been exceeded
        } else {
if error.code == KGTErrorCode.notKakaoTalkUser { 		// 로그인  유저가 '카카오톡' 유저가 아닙니다. 카카오// 스토리만Failed 가입한to 유저의send 계정과KakaoTalk 같이chat 카카오톡message
유저가 아닌 경우. 	} else { 		// 카카오톡 게임}
친구 목록 조회 실패 	}
})

...

Sending KakaoTalk Friend Invitation Messages

발췌문 삽입
EN_Kakao Integration Feature SDK Example
EN_Kakao Integration Feature SDK Example
namekakao_talk_send_gameinvite_message
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube
import KakaoGameTubeKakao

// friends API를 통해 가져온 친구 객체
let kakaoProfile: KGTKakaoFriendProfile = // 카카오 프로필 (KGTKakaoFriendProfile 객체) [TODO] Set whether to display as a popup
let isSingle = true

// [TODO] Set whether to display as a popup
let isPopup = true

// [TODO] 템플릿Set the Idtemplate 설정ID
let templateId = ""

// [TODO] Set 메시지the arguments 템플릿에for 설정한the 인자message 설정template
var argumentDic: [String : Any]? = [:]
argumentDic?["rog_link"] = "test=100&hello20111"
argumentDic?["bruce2"] = "test=100&hello=20111"

// 카카오톡 게임 메시지 보내기
KGTKakaoTalk.sendGameMessage(kakaoProfile: kakaoProfile, templateId: templateId, argumentDic: argumentDic) { error in
	if error.isSuccess {
		// 카카오톡 채팅 메시지 보내기 성공
	} else {
		if error.code == KGTErrorCode.messageSettingDisabled {
			// 받은이가 메시지 수신 거부를 설정한 경우
		} else if error.code == KGTErrorCode.exceedDailyUsage {
			// 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생
		} else if error.code == KGTErrorCode.exceedMonthlyUsage {
			// 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생
		} else {
			// 카카오톡 채팅 메시지 보내기 실패
		}
	}
})

카카오톡 친구 초대 메시지 전송하기

...

코드 블럭
languageswift
import KakaoGameTube
import KakaoGameTubeKakao

// [TODO] 팝업창으로 띄울지 여부 설정
let isSingle = true

// [TODO] 팝업창으로 띄울지 여부 설정
let isPopup = true
  
// [TODO] 템플릿 Id 설정
let templateId = ""

// [TODO] 메시지 템플릿에 설정한 인자 설정
var argumentDic: [String : Any]? = [:]
argumentDic["rog_link"] = "test=100&hello20111"
argumentDic["bruce2"] = "test=100&hello=20111"

KGTKakaoTalk.sendInviteMessage(isSingle: isSingle, isPopup: isPopup, templateId: templateId, argumentDic: argumentDic) { error, users in
	if error.isSuccess {
		// 카카오톡 초대 메시지 보내기 성공
		for user in users {
			// 유저가 초대 메시지를 전송한 유저 목록 확인
		}
	} else {
		// 전부 실패한 경우(공통된 원인 리턴해주기 필요)
       test=100&hello=20111"

KGTKakaoTalk.sendInviteMessage(isSingle: isSingle, isPopup: isPopup, templateId: templateId, argumentDic: argumentDic) { error, users in
    if error.isSuccess {
        // Successfully sent KakaoTalk invite message
        for user in users {
            // Check the list of users who received the invite message
        }
    } else {
        // Failed to send to all users (common cause needs to be returned)
        if error.code == KGTErrorCode.messageSettingDisabled {
            // The recipient has set to block messages
        } else if error.code == KGTErrorCode.exceedDailyUsage {
            // The daily quota for sending messages in a specific app (regardless of recipient) has been exceeded
        } else if error.code == KGTErrorCode.messageSettingDisabledexceedMonthlyUsage {
			// 받은이가 메시지 수신 거부를 설정한 경우      // The monthly }quota elsefor ifsending error.code == KGTErrorCode.exceedDailyUsage {
			// 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생messages to a specific person in a specific app has been exceeded
        } else {
 } else if error.code == KGTErrorCode.exceedMonthlyUsage { 			// 한명이 특정 앱에 대해// 특정인에게Failed 보낼to send 있는KakaoTalk 한달invite 쿼터message
초과시 발생 		} else { 			// 카카오톡 초대 메시지}
보내기 실패 		}  	}
})

...

Adding a KakaoTalk Channel

발췌문 삽입
EN_Kakao Integration Feature SDK Example
EN_Kakao Integration Feature SDK Example
namekakao_talk_add_plus_friend
nopaneltrue

코드 블럭
languageswift
import KakaoGameTube
import KakaoGameTubeKakaoimport KakaoGameTube
import KakaoGameTubeKakao

// [TODO] Set the channel ID
let channelId = 0

KGTKakaoTalk.addChannel(channelId: channelId) { error in
    if error.isSuccess {
        // [TODO] 채널 Id 설정
let channelId = 0

KGTKakaoTalk.addChannel(channelId: channelId) { error in
	if error.isSuccess {
		// 채널 추가 성공
    } else if error.code == KGTErrorCode.notKakaoTalkUser {
		// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
	} else {
		// 채널 추가 실패
	 Successfully added the channel
    } else if error.code == KGTErrorCode.notKakaoTalkUser {
        // The logged-in user is not a KakaoTalk user. For example, they might only be a Kakao Story user and not a KakaoTalk user.
    } else {
        // Failed to add the channel
    }
})