버전 비교

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

...

Initialization and Status Change Event Processing

...

App Event Method Initialization (iOS Only)

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

코드 블럭
languageswift
import KakaoGameTubeKakaoGame

@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 ExampleEN_
Initialization and Status Change Event Processing SDK Example
nameapplication_init_sdk
nopaneltrue

코드 블럭
languageswift
import KakaoGameTubeKakaoGame

/**
 * When using a single app
 */
let config = KGTConfig(appId: "909428",
                       appSecret: "c3c38bbfa3828b342d946e9770c974d0",
                       appVersion: "1.0.0",
                       market: "appStore",
                       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 ExampleEN_
Initialization and Status Change Event Processing SDK Example
nameapplication_start
nopaneltrue

코드 블럭
languageswift
import KakaoGameTubeKakaoGame

KGTApplication.start { error in
	if error.isSuccess {
		// WhenIf the start is successful
				
		// Check Whetherif auto-login is enabled
		let isLoggedIn = KGTPlayer.isLoggedIn
				
		if isLoggedIn {
			// The current Player's 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 the 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 ofthat the failurestart failed due to a network issue and retry.
		} else {
			// [TODO] If other errors occur, provide an error guidancenotification and request a retry of the start process. - If the issue persists, check the error code and logs to determine the cause.
		}
	}
}

Pause

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

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

Resume

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

코드 블럭
languageswift
import KakaoGameTubeKakaoGame
 
KGTApplication.resume { error in
	if error.isSuccess {
		// [TODO] If resume is successful, resume the game screen.
	} else {
		// [TODO] If resume fails, movenavigate to the login screen if it’s an authentication fails, orfailure; otherwise, show an error popup and check whether if the user wants to retry for other errors.
		if error.code == KGTErrorCode.authFailure ||
			error.code == KGTErrorCode.idpAuthFailure {
			// [TODO] In case Ifof authentication failsfailure, move to the start screen and perform the new login flow again.
		} else {
			// [TODO] ForIf other errors occur, provide an error guidancenotification and retry the resume. - If the issue persists, consider closingclose the app.
		}
	}
})

Login

...

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

Logging In Without Using the Default Login UI

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

코드 블럭
languageswift
import KakaoGameTubeKakaoGame

// 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's 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 prompt them to retry.

        if error.code == KGTErrorCode.networkFailure ||
			error.code == KGTErrorCode.serverTimeout ||
			error.code == KGTErrorCode.serverConnectionFailed {
			// [TODO] If a network error occurs, request a login retry other errors occur, provide an error notification and prompt the user to retry logging in.
		} 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] TheSince the user canceled during the login process, so the login screen should remainbe maintained.
		} else {
			// [TODO] ForIf other errors occur, provide informan theerror usernotification and requestprompt the auser loginto retry logging in. - Check It is necessary to check the error code and logs to identifydetermine the cause.
		}
	}
})

Logout

...

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

Logging Out Without Using the Default Logout UI

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

코드 블럭
languageswift
import KakaoGameTubeKakaoGame

// 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 KakaoGameTubeKakaoGame

// 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 ExampleEN_
Account Linking SDK Example
nameconnect
nopaneltrue

Linking Accounts Without Using the Default Account Linking UI

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

코드 블럭
languagejava
import KakaoGameTubeKakaoGame

// 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.notAuthorized {
            // The user is not currently logged in
        } else if error.code == KGTErrorCode.invalidState {
            // The current authenticated IDP is not eligible for account connection
        } else if error.code == KGTErrorCode.alreadyUsedIdpAccount {
            // The account is already connected
        } else {
            // Other errors occurred
        }
    }
})

Profile

...

Retrieve My Information

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

코드 블럭
languageswift
import KakaoGameTubeKakaoGame

let localPlayer = KGTPlayer.currentPlayer

Retrieve My IDP Information

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

코드 블럭
languageswift
import KakaoGameTubeKakaoGame

let idpProfile = KGTPlayer.currentPlayer?.idpProfile

System Information

...

Retrieve Language Code

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

코드 블럭
languageswift
import KakaoGameTubeKakaoGame

let languageCode = KGTSystem.languageCode

Retrieve Country Code

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

코드 블럭
languageswift
import KakaoGameTubeKakaoGame

let countryCode = KGTSystem.countryCode

Retrieve IP-based Country Code

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

코드 블럭
languageswift
import KakaoGameTubeKakaoGame

let countryCode = KGTSystem.geoCountryCode

Retrieve Device ID

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

코드 블럭
languageswift
import KakaoGameTubeKakaoGame

let deviceId = KGTSystem.deviceId

Retrieve Device Model

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

코드 블럭
languageswift
import KakaoGameTubeKakaoGame

let deviceModel = KGTSystem.deviceModel

Retrieve OS Name

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

코드 블럭
languageswift
import KakaoGameTubeKakaoGame

let osName = KGTSystem.osName

Retrieve Network Connection Status

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

코드 블럭
languageswift
import KakaoGameTubeKakaoGame

let isNetworkConnected = KGTSystem.isNetworkConnected

Retrieve Connected Network Type

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

코드 블럭
languageswift
import KakaoGameTubeKakaoGame

let networkType = KGTSystem.networkType

Kakao Integration Feature

...

Setting Up KakaoTalk Game Message Reception

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

코드 블럭
languageswift
import KakaoGameTubeKakaoGame
import KakaoGameTubeKakaoKakaoGameKakao

// Display the view to set the KakaoTalk game message reception settings
KGTKakaoTalk.showSetting { error, isAllowedMe in
    if error.isSuccess {
        // Successfully set the KakaoTalk game message reception settings
        let isAllowedMe = isAllowedMe // Whether message reception is allowed as per the settings
    } 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
    }
})

Retrieve KakaoTalk Profile

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

코드 블럭
languageswift
import KakaoGameTubeKakaoGame
import KakaoGameTubeKakaoKakaoGameKakao

// DisplayRetrieve theKakaoTalk view to set the KakaoTalk game message reception settings
KGTKakaoTalk.showSettingprofile
KGTKakaoTalk.talkProfile { error, isAllowedMeprofile in
    	if error.isSuccess {
        		// Successfully set theretrieved KakaoTalk game message reception settings
        let isAllowedMeprofile
		let talkProfile = isAllowedMeprofile // Whether message reception is allowed The KakaoTalk profile information of the logged-in user
    } 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 setretrieve the KakaoTalk game message reception settings
    profile
	}
})

Retrieve KakaoTalk Game Friend List

발췌문 삽입
EN_Kakao Integration Feature SDK ExampleEN_
Kakao Integration Feature SDK Example
namekakao_talk_friends
nopaneltrue

코드 블럭
languageswift
import KakaoGameTubeKakaoGame
import KakaoGameTubeKakaoKakaoGameKakao

// 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 ExampleEN_
Kakao Integration Feature SDK Example
namekakao_talk_send_game_message
nopaneltrue

코드 블럭
languageswift
import KakaoGameTubeKakaoGame
import KakaoGameTubeKakaoKakaoGameKakao

// Friend object retrieved via the friends API
let kakaoProfile: KGTKakaoFriendProfile = // Kakao profile (KGTKakaoFriendProfile object)

// [TODO] Set the template IDId
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 message reception to blockbe messagesdisabled.
        } else if error.code == KGTErrorCode.exceedDailyUsage {
            // Occurs Thewhen the daily quota for sending messages into a specific app (regardless of the recipient) hasis been exceeded.
        } else if error.code == KGTErrorCode.exceedMonthlyUsage {
            // Occurs Thewhen the monthly quota for sending messages to a specific person infor a specific app has beenis exceeded.
        } else {
            // Failed to send KakaoTalk chat message
        }
    }
})

Sending KakaoTalk Friend Invitation Messages

발췌문 삽입
EN_Kakao Integration Feature SDK ExampleEN_
Kakao Integration Feature SDK Example
namekakao_talk_send_invite_message
nopaneltrue

코드 블럭
languageswift
import KakaoGameTubeKakaoGame
import KakaoGameTubeKakaoKakaoGameKakao

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

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

// [TODO] Set the template IDId
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.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 message reception to blockbe messagesdisabled.
        } else if error.code == KGTErrorCode.exceedDailyUsage {
            // Occurs when the daily quota for sending messages to a specific app (regardless of the recipient) is exceeded.
        } else if error.code == KGTErrorCode.exceedMonthlyUsage {
            // Occurs when the monthly quota for sending messages to a specific person for a specific app is exceeded.
        } else {
            // Failed to send KakaoTalk invite message
        }
    }
})

Adding a KakaoTalk Channel

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

코드 블럭
languageswift
import KakaoGame
import KakaoGameKakao

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

KGTKakaoTalk.addChannel(channelId: channelId) { error in
    if error.isSuccess {
        // 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
    }
})

Retrieve the list of friends to whom I sent an invite message

발췌문 삽입
Kakao Integration Feature SDK Example
Kakao Integration Feature SDK Example
namekakao_invitation_joiners
nopaneltrue

코드 블럭
languageswift
import KakaoGame
import KakaoGameKakao

// set event ID.
let eventId = 0

// Retrieve the list of friends to whom I sent an invite message.
KGTKakaoInvitation.joiners(eventId: eventId) { error, players in
    if error.isSuccess {
        // Successfully retrieve the list of friends.
        // Retrieve the list of players I have invited.
        if players.isEmpty {
            // No users have joined the app.
        } else {
            // There are users who have joined the app.
            for player in players {
            
				// Recipient’s player ID
				let playerId = player.playerId
				let kakaoProfile = player.idpProfile as? KGTKakaoFriendProfile
				// Recipient’s nickname
				let nickname = kakaoProfile?.nickname
				// Recipient’s profile thumbnail image
				let thumbnailImageUrl = kakaoProfile?.thumbnailImageUrl
                // Recipient’s withdrawal history inquiry. Use the corresponding flag when displaying //the Thewithdrawal dailystatus quotainformation forin sendingthe messages in a specific app (regardless of recipient) has been exceededUI.
				let isUnregistered = kakaoProfile?.isUnregistered
			}
        }
    } else if error.code == KGTErrorCode.exceedMonthlyUsagenotKakaoTalkUser {
   
        // The monthlylogged-in quotauser foris sendingnot messagesa to a specific person in a specific app has been exceeded
   'KakaoTalk' user. This occurs when the user is only registered with KakaoStory and not KakaoTalk.
    } else {
   
        // Failed to sendretrieve KakaoTalkthe invitelist message
        }of friends.
    }
})

...

Retrieve the count of friends to whom I sent an invite message

발췌문 삽입
EN_Kakao Integration Feature SDK ExampleEN_
Kakao Integration Feature SDK Example
namekakao_talkinvitation_addreceivers_plus_friendcount
nopaneltrue

코드 블럭
languageswift
import KakaoGameTubeKakaoGame
import KakaoGameTubeKakaoKakaoGameKakao

// [TODO] Set the channelset event ID.
let channelIdeventId = 0

KGTKakaoTalkKGTKakaoInvitation.addChannelreceiversCount(channelIdeventId: channelIdeventId) { error, totalReceiversCount, joinersCount in
    if error.isSuccess {
        // Successfully addedretrieve the channel count of friends to whom I sent an invite message.
    } else if error.code == KGTErrorCode.notKakaoTalkUser {
        // The logged-in user is not a 'KakaoTalk' user. ForThis example,occurs theywhen mightthe onlyuser beis aonly Kakaoregistered Storywith userKakaoStory and not a KakaoTalk user.
    } else {
        // Failed to addretrieve the channel count of friends.
    }
})