1.3 iOS SDK 설치

1.3. iOS SDK 설치

 


1.3.1. 실행 환경

사용하는 SDK 버전 별 Xcode 최소 버전이 달라집니다.

Privacy Manifest는 3.19.0 버전부터 추가되었습니다.

  • IDE : Xcode 14.3 이상.

    • SDK 3.17.10 이상 버전 사용 시 Xcode 14.3 이상 사용

    • SDK 3.19.0 이상 버전 사용 시 Xcode 15.0 이상 사용

  • iOS : iOS 13.0 이상.

    • SDK 3.17.10 이상 버전 사용 시 iOS 13.0~

1.3.2. SDK 파일 구성

 

image-20240430-002941.png

 

  • KakaoGameFramework 폴더

    • 카카오게임 SDK 프레임워크와 리소스 번들로 구성되어 있습니다.

  • IDPFramework 폴더

    • 카카오, 페이스북, 구글 관련 IDP 프레임워크들이 포함되어 있습니다.

  • KakaoGameSample

    • 카카오게임 SDK를 적용한 샘플 프로젝트입니다.

  • APIReference

    • 카카오게임 SDK의 API 레퍼런스 문서입니다.

1.3.3. SDK 설치

이 장에서는 XCode프로젝트에 SDK를 설치하는 과정을 예제 중심으로 설명하고 있습니다.

1.3.3.1. 카카오게임 SDK 추가(cocoapods)

  1. 새 터미널 창을 열고 Xcode 프로젝트 위치로 이동합니다.

  2. Podfile을 열고 아래에 기술된 내용을 참고해서 작성합니다. 아래는 추가해야 할 내용을 케이스별로 사용하시면 됩니다.

    1. full package 설치시(Firebase 포함)

      iOS cocoapods

      # 모든 카카오게임 프레임워크 설치 pod 'KakaoGameSDK', '3.19.0'
    2. Kakao 모듈만 사용할 경우

      iOS cocoapods

      # 카카오 모듈만 설치 pod 'KakaoGameSDK/KakaoGameKakao', '3.19.0'
    3. Facebook / Google 모듈을 사용할 경우

      iOS cocoapods

      # Facebook 모듈 설치 pod 'KakaoGameSDK/KakaoGameFacebook', '3.19.0' # KakaoGameFacebook dependency가 기본적으로 FacebookSDK 17.0~ 최신 버전으로 설정    # Google 모듈 설치 pod 'KakaoGameSDK/KakaoGameGoogle', '3.19.0' # KakaoGameGoogle dependency가 기본적으로 GoogleSignIn 7.1~ 최신 버전으로 설정 # GoogleSignIn를 원하는 버전으로 설정 가능 # pod 'GoogleSignIn', '7.1.0' 형태로 설정 가능
  3. 터미널로 이동하여 다음의 명령어를 통해서 카카오게임 프레임워크를 설치합니다.

1.3.3.2. 카카오게임 SDK 추가


  1. 다운받은 파일의 압축을 풀고, "KakaoGameFramework" 폴더와 "IDPFramework" 폴더를 Xcode프로젝트에 추가합니다.

     

  2. 프레임워크를 필요에 따라 복사될 수 있도록 "Copy items if needed"를 반드시 체크합니다.

     

     

  3. Framework가 잘 추가되었는지 아래와 같이 확인합니다.

     

     

1.3.3.3. 필수 프레임워크 및 라이브러리 추가하기

  1. 카카오게임 SDK 및 각 SDK가 사용하는 외부 라이브러리를 프로젝트의 "Build Phases" 탭의 "Link Binary With Libraries"에 추가합니다.

카카오게임 SDK에서 사용하는 프레임워크 및 라이브러리

Foundation.framework

SystemConfiguration.framework

CoreTelephony.framework

Security.framework

UIKit.framework

libc++.tbd

libz.tbd

구글 SDK에서 사용하는 프레임워크

AddressBook.framework

AssetsLibrary.framework

CoreLocation.framework

CoreMotion.framework

CoreGraphics.framework

CoreText.framework

MediaPlayer.framework

페이스북 SDK에서 사용하는 프레임워크

AdSupport.framework

StoreKit.framework

AVFoundation.framework

CoreMedia.framework

CoreMotion.framework

  1.  

     

  2. 아래와 같이 +버튼을 클릭하여, 위에 명시된 프레임워크와 라이브러리를 모두 추가합니다.

     

     

  3. 잘 추가되었는지 아래와 같이 확인합니다.

     



 

1.3.3.4. Other Linker Flags 설정

  1. 프로젝트의 "Build Settings" 탭의 "Other Linker Flags"에 "-ObjC"를 추가합니다.

     

1.3.3.5. Keychain 설정

  1. 프로젝트의 "Capabilities" 탭의 "Keychain Sharing" 옵션을 ON으로 바꾸고 속성에 KakaoGameAccessGroup을 추가합니다. 

     

     

1.3.3.6. 카카오게임 SDK 속성 설정

  1. 프로젝트의 "Info" 탭의 "Custom iOS Target Properties"에 카카오게임 SDK관련 속성을 추가해야 합니다.

     카카오게임 SDK관련 속성

자식 키

타입

필수

설명

예시

자식 키

타입

필수

설명

예시

KakaoGameConfiguration

 

Dictionary

O

 

 

 

AppId

String

O

카카오 파트너센터 > 게임 관리 > 앱 선택 > 게임 세부정보에서 확인할 수 있습니다.

103815

 

AppSecret

String

O

카카오 파트너센터 > 게임 관리 > 앱 선택 > 게임 세부정보 에서 확인할 수 있는 Native App Key 와 동일합니다.

951b75bf17fe0885ab5106ba2a9f9bc9

 

AppVersion

String

O

앱 버전을 설정합니다. 이 버전을 기반으로 앱의 업데이트 필요 여부를 자동으로 안내합니다. 카카오게임3.0 어드민 -> 게임빌드 -> 클라이언트 버전 관리에서 마켓 정보를 설정하고, 설정된 버전에 따라 업데이트 여부를 노출해줍니다. (연동 가이드의 초기화 및 상태변화 이벤트 참고)

1.0.0

 

ServerType

String

X

SDK 와 연결될 플랫폼의 서버 타입을 설정합니다. 채널링은 real만 사용해야 합니다.

real

 

DebugLevel

String

X

로그 출력 레벨을 설정합니다. 설정하지 않으면 "NONE"으로 설정됩니다. "VERBOSE", "DEBUG", "ERROR", "NONE" 중 하나를 설정할 수 있습니다.

NONE

FacebookAppID

 

String

O

페이스북 앱 아이디.

374087929645848

FacebookDisplayName

 

String

X

페이스북 로그인을 진행할 경우 사용될 로그인 창의 타이틀 바.

Facebook Login

FacebookReadPermissions

 

Array

X

페이스북 로그인 시 사용자에게 획득할 추가 권한.

https://developers.facebook.com/docs/facebook-login/permissions

user_photos

FacebookClientToken

KakaoGameSDK 3.15.0 이상 버전 사용시 필수 입력

 

String

O

페이스북 클라이언트 토큰

(페이스북 개발자 센터 → 내 앱 → 설정 → 고급 설정 → 보안 탭에서 확인 가능)

dc9733ad123q6251273d181a0549qq56

GOOGLE_CLIENT_ID

 

String

O

구글 클라이언트 아이디.

1002041625464-69jc7iu6p8ugae62qg14rclcqoe8oubm.apps.googleusercontent.com

GOOGLE_SCOPES

 

Array

X

구글 로그인 시 사용자에게 획득할 추가 권한.
https://developers.google.com/identity/protocols/googlescopes

https://www.googleapis.com/auth/drive.readonly

APPLE_SERVICE_CLIENT_ID

 

String

O

Signin with apple 웹 인증 사용시에 필요한 클라이언트 아이디.

com.kakaogames.sdk.unity-service

 

페이스북에서 제공하는 SDK 에서는 인증 시 Read 퍼미션과 Publish 퍼미션을 동시에 요청할 수 없기 때문에 카카오 SDK를 통한 페이스북 인증 시에는 Read 퍼미션만 추가하 실 수 있습니다.

(Publish 퍼미션: "publish" 나 "manage" 로 시작하는 퍼미션 이나 "ads_management", "create_event", "rsvp_event" 등)

때문에 Publish 관련 기능이 필요한 경우에는 Publish 퍼미션으로 추가 인증을 받거나 ShareDialog 같은 페이스북 SDK에서 제공하는 Publish API 를 사용하셔야 합니다.

  1.  

  2. 아래와 같이 카카오게임 설정을 합니다.

     

  3. 아래와 같이 페이스북 설정을 합니다.

     

  4. 아래와 같이 구글 설정을 합니다.

     

  5. Signin With Apple 설정을 위해 capablities 항목도 추가 설정합니다.(Sign In with Apple 기능을 사용하기 위해서는 반드시 Xcode 11 버전 이상을 사용하여야 합니다.)

    1. 프로젝트 설정 > Signing & Capabilities > + Capability 항목을 선택합니다.

       

    2. Capabilities 선택 항목에서 Sign In with Apple 항목을 추가하여야 합니다.

       


     

1.3.3.7. URLScheme 추가

  • 카카오

    • "kakaogame"과 앱 아이디(KakaoGameConfiguration-AppId)를 합한 문자열을 추가합니다. ex)kakaogame103815

    • "kakao"와 6번 항목에서 입력한 앱 시크릿(KakaoGameConfiguration-AppSecret)를 합한 문자열을 추가합니다. ex)kakao951b75bf17fe0885ab5106ba2a9f9bc9

    • 3.11.0 버전부터 멀티앱 카카오 로그인을 지원함에 따라 멀티앱 로그인 스펙을 적용하고 싶은 게임의 경우 다음과 같이 지정합니다.(카카오 개발자 센터 설정 필요하므로 기술PM 문의)

      • 적용하고 싶은 게임의 멀티앱의 번들아이디 com.kakaogame.appOne / com.kakaogame.appTwo 각각의 앱 프로젝트 Info.plist에서 설정 필요

      • URL Scheme 추가하는 부분에 Identifier에 "KakaoAppLogin"이라고 추가 후에 URL Scheme 항목은 kakao{appSecret}-{bundleId} 형태로 등록

        • kakao951b75bf17fe0885ab5106ba2a9f9bc9-com.kakaogame.appOne

        • kakao951b75bf17fe0885ab5106ba2a9f9bc9-com.kakaogame.appTwo

        • 스크린샷 참고

           

           

      • 위와 같이 추가후에 각 앱에서 빌드 하면 각각의 앱에서 카카오 로그인이 가능합니다.

  • 페이스북

    • "fb"와 FacebookAppID를 합한 문자열을 추가합니다. ex)fb374087929645848

  • 구글

    • 현재 앱의 번들 아이디를 추가합니다. ex)com.kakaogames.sdk

    • GOOGLE_CLIENT_ID의 값을 거꾸로 배열한 값을 추가합니다. 

1.3.3.8. LSApplicationQueriesSchemes 설정

Info.plist파일에 "LSApplicationQueriesSchemes" 항목을 추가해야 합니다. 

iOS9 Privacy

iOS9부터 App간의 전환을 위해, Open되는 다른 앱들의 Scheme정보들을 info파일에 정의해야 합니다.
https://developer.apple.com/videos/play/wwdc2015-703/

 

  1. 아래는 추가해야 할 내용입니다. (주의 : 아래 queriesSchemes는 페북 인증을 사용하지 않아도 sns초대공유에서 페북 앱을 이용할 경우가 있어서 추가하도록 한다.)

  2. 아래 그림과 같이 info.plist를 오른쪽 클릭하여, [Open As] - [Source Code]로 클릭합니다. 위 xml을 복사하여, 붙여 넣습니다.
    반드시 kakao[앱 시크릿으로 대체]부분만 앱 시크릿으로 변경하여 입력하도록 합니다.

     

     

1.3.3.9. 접근 권한 설정
 

Privacy - Description

iOS10부터 시스템앱에 접근을 할 때 안내문구를 반드시 입력해야합니다. 입력되지 않았을 경우는 스토어에 빌드 업로드시 거부 될 수 있습니다.

  1. 카카오게임 SDK에서는 카메라와 포토라이브러리에 접근 권한이 필요합니다. 따라서 해당 부분의 접근 권한 설명을 아래와 같이 입력하도록 합니다.

접근 권한

안내 문구

접근 권한

안내 문구

NSCameraUsageDescription

카메라 접근 권한 : 스크린 샷 촬영(고객센터 첨부) 기능을 위해서 카메라 사용을 허용해주세요.

NSPhotoLibraryUsageDescription

사진첩 접근 권한 : 프로필 사진 설정과 스크린 샷 촬영(고객센터 첨부) 기능을 위한 사진첩 접근을 허용해주세요.

  1.  

     

  2. 개발사에서 더 필요한 접근 권한이 있다면, 필요에 따라 추가 입력하시면 됩니다.

 

1.3.3.10. 게임센터 사용 설정

  1. 게임센터 인증을 사용할 경우, Capabilities에서 "Game Center"의 기능을 ON으로 설정합니다.

     


     

1.3.3.11. 게임 내 지원 언어 리소스

라이브러리에서 게임 내 지원 언어 외 추가적인 언어 팩이 있을 때, 해당 언어를 제거하고 싶다면 아래 위치의 폴더를 제거 해주시면 됩니다.

  1. KakaoGameSDK에서 제공하는 언어를 사용자의 기기 언어 설정에 맞게끔 로드하기 위해서 info.plist 설정 필요.

타입

설명

예시

타입

설명

예시

Localized resources can be mixed

Boolean

KakaoGameSDK에서 제공하는 언어를 사용자의 기기 언어 설정에 맞게끔 로드하기 위해서 설정 필요.

YES

  1.  

  2. KakaoGameFramwork폴더 > KakaoGameResources.bundle 파일을 찾아서 '패키지 내용보기' 를 클릭한다.

     



  3. 제거 하고 싶은 언어의 폴더를 삭제한다.

     



 

1.3.3.12. (참고) 다중 Bundle ID 지원에 대한 안내

  • 한 앱(app id)에 대하여 bundle ID를 여러 개 사용할 수 있습니다.

    • 테스트 빌드 등 복수의 번들 아이디가 필요한 경우를 지원 해드립니다.

    • 단, 게임센터에 등록된 bundle ID는 라이브 버전 (마켓에 올라가는 빌드 버전)과 일치해야 합니다.

  • 아래의 규칙에 해당하는 bundle ID는 카카오게임 API를 호출할 수 있습니다.
    단, 일부 기능에 대해 다소 제약이 있을 수 있습니다.

 

 1.3.3.13. SceneDelegate 안내

  • KakaoGameSDK는 iOS 11 이상을 지원하므로 SceneDelegate를 지원하지 않습니다.

  • 따라서 프로젝트가 SceneDelegate를 사용하도록 만들어졌을 경우 삭제가 필요합니다.

  1. SceneDelegate.h, .m 파일을 삭제합니다

     

  2. Info.plist에 있는 'Application Scene Manifest'를 삭제합니다.

     

  3. AppDelegate에 구현되어 있는 UISceneSession 관련 메서드를 삭제합니다.

     

  4. AppDelegate에 UIWindow 프로퍼티를 추가합니다.