IOS

SwiftUI - kakao Login

뭉기~ 2024. 4. 14. 11:52

워낙 카카오 연동규격서가 잘나와있지만, 저의 내용을 기록 하기위해 작성 했습니다.

초간단 연동 방법입니다. 운영하면서 다른내용이 나온다면 추가 하겠습니다.


1. 플랫폼 추가

카카오 회원가입, 어플리케이션 추가는 완료 했다는 가정하에 진행입니다.

내 애플리케이션 -> 앱설정 -> 플랫폼 에서 추가 가능합니다.

번들 ID : Project (General) -> Bundle Indentifier 값을 추가하고

앱스토어 ID, 마켓 URL 같은경우 실제 앱스토어 등록전이라 제외 했습니다.

 

2. 셋팅

2-1.  Pod

kakaoSDK 같은경우 모든 SDK 를 포함하고 있기에 필요시 아래 모듈중 선택할수 있습니다.

필자는 kakaoSDK 으로 진행했습니다.

pod 'KakaoSDK'
pod 'KakaoSDKCommon' # 필수 요소를 담은 공통 모듈
pod 'KakaoSDKAuth'  # 사용자 인증
pod 'KakaoSDKUser'  # 카카오 로그인, 사용자 관리
pod 'KakaoSDKTalk'  # 친구, 메시지(카카오톡)
pod 'KakaoSDKShare'  # 메시지(카카오톡 공유)
pod 'KakaoSDKFriend' # 카카오톡 소셜 피커, 리소스 번들 파일 포함
pod 'KakaoSDKTemplate'  # 메시지 템플릿 
pod 'KakaoSDKNavi'  # 카카오내비 
pod 'KakaoSDKCert' # 카카오톡 인증 서비스

 

 

2-2. SPM

Project Target -> Package Dependencies -> Packages

https://github.com/kakao/kakao-ios-sdk

 

GitHub - kakao/kakao-ios-sdk

Contribute to kakao/kakao-ios-sdk development by creating an account on GitHub.

github.com

해당 주소를 입력하여 추가 합니다. Add to Project, Add To Target 상의 모듈 및 프로젝트를 지정해서 설치 해줍니다.

 

3.  기타 설정

info.plist 파일에 다음과 같이 스키마를 추가 해줍니다.

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>kakaokompassauth</string>
</array>

 

*iOS 14 부터 LSApplicationQueriesSchemes 키값이 Queried URL Schemes 으로 바뀌었습니다 (상단 이미지 참고)
Source Code 방식으로 수정할경우 LSApplicationQueriesSchemes 키 값으로 추가 합니다. (Property List 방식으로 추가 했습니다)

 

Project -> Info -> URL Types 에 URL Schemes 를 추가 합니다.

형식은 -> kakao${NATIVE_APP_KET}

KEY 값이 asdcasdckjnscd 라는 가정하에 다음과 같이 셋팅 합니다. (ex: kakaoasdcasdckjnscd) 

 

혹은 info.plist 상에 다음처럼 추가 할수도 있습니다.

<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>kakao${NATIVE_APP_KET}</string>
        </array>
    </dict>
</array>

 

키값은 카카오 디벨로퍼 내 애플리케이션(앱키) 에서 확인 가능합니다. (네이티브 키)

 

4.  소스 추가

*모든 방식은 SwiftUI 으로 이용 했습니다. 다른 방법은 연동 규격서 참고 바랍니다.

import SwiftUI
import KakaoSDKCommon
import KakaoSDKAuth

@main
struct TestApp: App {
    
    init() {
        // Kakao SDK 초기화
        KakaoSDK.initSDK(appKey: "{NATIVE_APP_KEY}")
    }
    
    var body: some Scene {
        WindowGroup {
            ContentView().onOpenURL(perform: { url in
                if (AuthApi.isKakaoTalkLoginUrl(url)) {
                    AuthController.handleOpenUrl(url: url)
                }
            })
        }
    }
}

 

호출 영역 (버튼 클릭시) 

import KakaoSDKCommon
import KakaoSDKAuth
import KakaoSDKUser
.onTapGesture {
    // 카카오톡 실행 가능 여부 확인
    if (UserApi.isKakaoTalkLoginAvailable()) {
        UserApi.shared.loginWithKakaoTalk {(oauthToken, error) in
            if let error = error {
                print(error)
            }
            else {
                print("loginWithKakaoTalk() success.")

                //do something
                _ = oauthToken
            }
        }
    }
}

 

 

일단 붙였자나 한잔해

 

참고

https://developers.kakao.com/docs/latest/ko/kakaologin/prerequisite

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

https://developers.kakao.com/docs/latest/ko/ios/getting-started

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com