/
iOS 클라이언트 SDK API
iOS 클라이언트 SDK API
- 1 초기화 및 상태변화 이벤트 처리
- 1.1 앱 이벤트 메서드 초기화 (iOS Only)
- 1.2 SDK 초기화
- 1.3 스타트 (Start) 하기
- 1.4 Pause 하기
- 1.5 Resume 하기
- 2 로그인
- 3 로그아웃
- 4 탈퇴
- 5 계정 연결
- 6 프로필
- 6.1 내 정보 조회하기
- 6.2 내 IDP 정보 조회하기
- 7 시스템 정보
- 7.1 언어 코드 가져오기
- 7.2 국가 코드 가져오기
- 7.3 IP 기반 국가 코드 가져오기
- 7.4 기기 아이디 가져오기
- 7.5 기기 모델 가져오기
- 7.6 OS 이름 가져오기
- 7.7 네트워크 연결 여부 가져오기
- 7.8 연결된 네트워크 타입 가져오기
- 8 카카오 연동 기능
초기화 및 상태변화 이벤트 처리
앱 이벤트 메서드 초기화 (iOS Only)
import KakaoGame
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
override init() {
KGTApplication.setSwizzleAppDelegate(delegate: AppDelegate.description())
}
}
SDK 초기화
import KakaoGame
/**
* 단일 앱으로 사용하는 경우
*/
let config = KGTConfig(appId: "909428",
appSecret: "c3c38bbfa3828b342d946e9770c974d0",
appVersion: "1.0.0",
market: "appStore",
ageRating: "14",
serverType: .QA,
logLevel: .Verbose)
/**
* 앱 그룹을 사용하는 경우
*/
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) 하기
import KakaoGame
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 하기
import KakaoGame
KGTApplication.pause()
Resume 하기
import KakaoGame
KGTApplication.resume { error in
if error.isSuccess {
// [TODO] resume이 성공 한 경우 게임 화면을 재개합니다.
} else {
// [TODO] resume이 실패 한 경우 인증 실패 면 로그인 화면으로, 그외의 경우는 에러 팝업을 띄우고 재시도 여부를 확인합니다.
if error.code == KGTErrorCode.authFailure ||
error.code == KGTErrorCode.idpAuthFailure {
// [TODO] 인증 실패의 경우 시작 화면으로 이동해서 다시 신규 로그인 flow를 수행합니다.
} else {
// [TODO] 나머지 에러가 발생한 경우 경우 에러 안내 후 resume 을 재시도 합니다. - 반복해서 문제가 발생하는 경우 앱을 종료하도록 합니다.
}
}
})
로그인
기본 로그인 UI를 사용하지 않는 로그인하기
import KakaoGame
// 로그인 하고자 하는 IdpCode 셋팅
let idpCode = KGTIdpCode.Kakao
// 특정 idp로 로그인 하기
KGTPlayer.login(with: idpCode) { error in
if error.isSuccess {
// IDP 로그인과 플랫폼 로그인 성공
// 플랫폼에서 발급한 현재 Player의 ID
let playerId = KGTPlayer.currentPlayer?.playerId
// 플랫폼 액세스 토큰
let accessToken = KGTPlayer.accessToken
// 현재 IDP 인증 정보를 가져옴
let idpProfile = KGTPlayer.currentPlayer?.idpProfile
// [TODO] 로그인이 성공하였으므로 게임 화면으로 이동합니다.
} 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를 사용하지 않는 로그아웃하기
import KakaoGame
// 로그아웃 요청
KGTPlayer.logout(showUI: false) { error in
if error.isSuccess {
// 로그아웃 성공
// [TODO] 시작 화면으로 돌아가기
} else {
// 로그아웃 실패
}
})
탈퇴
기본 탈퇴 UI를 사용하지 않는 탈퇴하기
import KakaoGame
// 탈퇴 요청
KGTPlayer.unregister(showUI: false) { error in
if error.isSuccess {
// 탈퇴 성공
// [TODO] 시작 화면으로 돌아가기
} else {
// 탈퇴 실패
}
})
계정 연결
기본 계정 연결 UI를 사용하지 않는 계정 연결하기
import KakaoGame
// 로그인 하고자 하는 IdpCode 셋팅
let idpCode = KGTIdpCode.Kakao
// 특정 idp로 계정 연결 하기
KGTPlayer.connect(idpCode: idpCode) { error in
if error.isSuccess {
// IDP 연결 성공
// Player ID 는 변경되지 않습니다.
} else {
// IDP 연결 실패
if error.code == KGTErrorCode.invalidParameter {
// 잘못된 인자가 전달 된 경우
} else if error.code == KGTErrorCode.notAuthorized {
// 현재 로그인이 안되어 있는 경우
} else if error.code == KGTErrorCode.invalidState {
// 현재 인증 된 IDP 가 계정 연결 가능한 idp가 아닌 경우
} else if error.code == KGTErrorCode.alreadyUsedIdpAccount {
// 이미 연결되어 있는 계정이 있는 경우
} else {
// 기타 에러 발생
}
}
})
프로필
내 정보 조회하기
import KakaoGame
let localPlayer = KGTPlayer.currentPlayer
내 IDP 정보 조회하기
import KakaoGame
let idpProfile = KGTPlayer.currentPlayer?.idpProfile
시스템 정보
언어 코드 가져오기
import KakaoGame
let languageCode = KGTSystem.languageCode
국가 코드 가져오기
import KakaoGame
let countryCode = KGTSystem.countryCode
IP 기반 국가 코드 가져오기
import KakaoGame
let countryCode = KGTSystem.geoCountryCode
기기 아이디 가져오기
import KakaoGame
let deviceId = KGTSystem.deviceId
기기 모델 가져오기
import KakaoGame
let deviceModel = KGTSystem.deviceModel
OS 이름 가져오기
import KakaoGame
let osName = KGTSystem.osName
네트워크 연결 여부 가져오기
import KakaoGame
let isNetworkConnected = KGTSystem.isNetworkConnected
연결된 네트워크 타입 가져오기
import KakaoGame
let networkType = KGTSystem.networkType
카카오 연동 기능
카카오톡 게임 메시지 수신 여부 설정하기
import KakaoGame
import KakaoGameKakao
// 카카오톡 게임 메시지 수신 여부 설정 뷰 띄우기
KGTKakaoTalk.showSetting { error, isAllowedMe in
if error.isSuccess {
// 카카오톡 게임 메시지 수신 여부 설정 성공
let isAllowedMe = isAllowedMe // 설정된 메시지 수신 허용 여부
} else if error.code == KGTErrorCode.notKakaoTalkUser {
// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
} else {
// 카카오톡 게임 메시지 수신 여부 설정 실패
}
})
카카오톡 프로필 조회하기
import KakaoGame
import KakaoGameKakao
// 카카오톡 프로필 조회하기
KGTKakaoTalk.talkProfile { error, profile in
if error.isSuccess {
// 카카오톡 프로필 조회 성공
let talkProfile = profile // 로그인한 유저의 카카오톡 프로필 정보
} else if error.code == KGTErrorCode.notKakaoTalkUser {
// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
} else {
// 카카오톡 프로필 조회 실패
}
})
카카오톡 게임 친구 목록 조회하기
import KakaoGame
import KakaoGameKakao
// 게임 친구 목록 조회하기
KGTKakaoTalk.friends { error, players in
if error.isSuccess {
// 카카오톡 게임 친구 목록 조회 성공.
for player in players {
if let kakaoFriendProfile = player.idpProfile as? KGTKakaoFriendProfile {
}
}
} else if error.code == KGTErrorCode.notKakaoTalkUser {
// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
} else {
// 카카오톡 게임 친구 목록 조회 실패
}
})
카카오톡 게임 메시지 보내기
import KakaoGame
import KakaoGameKakao
// friends API를 통해 가져온 친구 객체
let kakaoProfile: KGTKakaoFriendProfile = // 카카오 프로필 (KGTKakaoFriendProfile 객체)
// [TODO] 템플릿 Id 설정
let templateId = ""
// [TODO] 메시지 템플릿에 설정한 인자 설정
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 {
// 카카오톡 채팅 메시지 보내기 실패
}
}
})
카카오톡 친구 초대 메시지 전송하기
import KakaoGame
import KakaoGameKakao
// [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 {
// 전부 실패한 경우(공통된 원인 리턴해주기 필요)
if error.code == KGTErrorCode.messageSettingDisabled {
// 받은이가 메시지 수신 거부를 설정한 경우
} else if error.code == KGTErrorCode.exceedDailyUsage {
// 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생
} else if error.code == KGTErrorCode.exceedMonthlyUsage {
// 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생
} else {
// 카카오톡 초대 메시지 보내기 실패
}
}
})
카카오톡 채널 추가하기
import KakaoGame
import KakaoGameKakao
// [TODO] 채널 Id 설정
let channelId = 0
KGTKakaoTalk.addChannel(channelId: channelId) { error in
if error.isSuccess {
// 채널 추가 성공
} else if error.code == KGTErrorCode.notKakaoTalkUser {
// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
} else {
// 채널 추가 실패
}
})
내 초대 메시지로 가입한 친구 목록 조회하기
내 초대 메시지로 가입한 친구 목록을 조회하는 예제입니다.
가입한 친구가 없는 경우 빈 객체로 전달됩니다.
import KakaoGame
import KakaoGameKakao
// 이벤트 ID 설정
let eventId = 0
// 내가 초대한 플레이어 목록 조회하기
KGTKakaoInvitation.joiners(eventId: eventId) { error, players in
if error.isSuccess {
// 호출 성공
// 내가 초대한 플레이어 목록 확인
if players.isEmpty {
// 앱에 가입한 유저 없음
} else {
// 앱에 가입한 유저 있음
for player in players {
// 수신자의 플레이어 아이디
let playerId = player.playerId
let kakaoProfile = player.idpProfile as? KGTKakaoFriendProfile
// 수신자의 닉네임
let nickname = kakaoProfile?.nickname
// 수신자의 프로필 썸네일 이미지
let thumbnailImageUrl = kakaoProfile?.thumbnailImageUrl
// 수신지의 탈퇴 이력 조회. UI상에서 탈퇴 여부 정보를 표시할 경우 해당 flag를 사용.
let isUnregistered = kakaoProfile?.isUnregistered
}
}
} else if error.code == KGTErrorCode.notKakaoTalkUser {
// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정)
} else {
// 호출 실패
}
}
내가 초대 메시지를 보낸 친구 숫자 조회하기
내가 초대 메시지를 보낸 친구 숫자를 조회하는 예제입니다.
import KakaoGame
import KakaoGameKakao
// 이벤트 ID 설정
let eventId = 0
// 나를 초대한 플레이어 명 수 조회하기
KGTKakaoInvitation.receiversCount(eventId: eventId) { error, totalReceiversCount, joinersCount in
if error.isSuccess {
// 호출 성공
} else if error.code == KGTErrorCode.notKakaoTalkUser {
// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정)
} else {
// 호출 실패
}
}
, multiple selections available,
Related content
Android 클라이언트 SDK API
Android 클라이언트 SDK API
More like this
Unity 클라이언트 SDK API
Unity 클라이언트 SDK API
Read with this
Unreal 클라이언트 SDK API
Unreal 클라이언트 SDK API
Read with this
1.3 iOS SDK 설치
1.3 iOS SDK 설치
More like this
iOS Client SDK API
iOS Client SDK API
More like this
Windows 클라이언트 SDK API
Windows 클라이언트 SDK API
More like this