사이드 메뉴
시작하기
로그인
커뮤니케이션
광고
iOS
v1에서 v2로 마이그레이션
이 문서는 iOS SDK(Kakao SDK for iOS) v1(2.0.0 미만 버전)에서 v2(2.0.0 이상 버전)로 업그레이드하는 사용자를 위한 참고 정보를 제공합니다.
iOS SDK v1 사용 시, 프로젝트 설정 및 임포트(import) 후 API를 필요한 시점에 호출할 수 있습니다. 이와 달리 iOS SDK v2는 명시적인 초기화를 필요로 합니다. 앱 실행 후 초기화 이후에 각 API를 호출하도록 구현해야 합니다.
iOS SDK v1 사용 시, 카카오 로그인으로 발급받은 액세스 토큰을 전달해야 하는 API를 KOSessionTask로 호출해야 합니다. iOS SDK v1의 세션은 사용자의 카카오 로그인 상태에 따라 변경되며, 세션이 열려 있는 상태에서만 호출할 수 있는 API들이 있습니다.
iOS SDK v2의 API는 모듈 단위로 분리되어 있고, 필요한 모듈을 선택하여 효율적으로 사용할 수 있습니다. 카카오 로그인으로 발급받은 액세스 토큰을 전달해야 하는 API를 사용하려면 카카오 로그인 모듈을 함께 설치하고 기능을 구현해야 합니다.
이러한 구조적 차이로 인해 iOS SDK v2 사용 시에는 사용하려는 모듈의 카카오 로그인에 대한 의존도를 먼저 파악해야 합니다. 카카오 로그인 모듈 및 기능 구현이 필요한 API의 경우, 개발 문서마다 설치해야 하는 모듈과 카카오 로그인 구현이 필요한지 안내합니다.
- 최신 버전:
KakaoSDKCommon으로 초기화 API 호출
| 이름 | iOS SDK v1 | iOS SDK v2 |
|---|---|---|
| Kakao SDK 초기화 | - | initSDK() |
- iOS SDK v1
- 카카오 로그인 API는
KOSession으로 호출 - 카카오 로그인 이후 호출하는 API는
KOSessionTask로 호출
- 카카오 로그인 API는
- 최신 버전
- 카카오 로그인 API는
KakaoSDKUser모듈의UserApi로 호출 - 토큰 존재 여부 조회 API는
KakaoSDKAuth모듈의AuthApi로 호출
- 카카오 로그인 API는
| 이름 | iOS SDK v1 | iOS SDK v2 |
|---|---|---|
| 카카오 로그인 | openWithCompletionHandler | - |
| 카카오톡으로 로그인 | - | loginWithKakaoTalk() |
| 카카오계정으로 로그인 | - | loginWithKakaoAccount() |
| 로그아웃 | logoutAndCloseWithCompletionHandler | logout() |
| 연결 해제 | unlinkTaskWithCompletionHandler | unlink() |
| 사용자 정보 조회 | userMeTaskWithCompletion | me() |
| 사용자 프로퍼티 저장 | profileUpdateTaskWithProperties:properties: | updateProfile(properties:) |
| 동의항목 추가 동의 요청 | updateScopes:needsAgreementScopes: | loginWithKakaoTalk(scopes:) loginWithKakaoAccount(scopes:) |
| 카카오톡 실행 가능 여부 조회 | - | isKakaoTalkLoginAvailable() |
| 액세스 토큰 정보 조회 | accessTokenInfoTaskWithCompletionHandler | accessTokenInfo() |
| 토큰 존재 여부 조회 | isOpen | hasToken() |
| 배송지 조회 | shippingAddressTask | shippingAddresses() |
| 서비스 약관 동의 내역 조회 | serviceTermsTask | serviceTerms() |
| 서비스 약관 선택해 동의 요청 | open | loginWithKakaoTalk(serviceTerms:) loginWithKakaoAccount(serviceTerms:) |
- iOS SDK v1:
KOSessionTask로 API 호출 - 최신 버전:
KakaoSDKTalk모듈의TalkApi로 API 호출
| 이름 | iOS SDK v1 | iOS SDK v2 |
|---|---|---|
| 카카오톡 프로필 조회 | talkProfileTaskWithCompletionHandler | profile() |
| 카카오톡 친구 목록 조회 | appFriendsWithContext:context: | friends() |
- iOS SDK v1
- 메시지 발송 API는
KLKTalkLinkCenter로 호출 - 이미지 API는
KLKImageStorage로 호출 - 카카오톡 미설치 시 내부적으로 웹뷰로 메시지 전달됨
- 메시지 발송 API는
- 최신 버전
KakaoSDKShare모듈의ShareApi로 API 호출- 카카오톡 미설치 시 웹뷰 또는 기본 브라우저로 공유되도록 구현 필요
| 이름 | iOS SDK v1 | iOS SDK v2 |
|---|---|---|
| 카카오톡 앱으로 공유 가능 여부 확인하기 | - | isKakaoTalkSharingAvailable() |
| 기본 메시지 발송 | sendDefaultWithTemplate:template: | shareDefault(templatable:) |
| 사용자 정의 메시지 발송 | sendCustomWithTemplateId:templateId:templateArgs: | shareCustom(templateId:templateArgs:) |
| 스크랩 메시지 발송 | sendScrapWithURL: url:templateId: | shareScrap(requestUrl:templateId:) |
| 이미지 업로드 | uploadWithImage:sourceImage: | imageUpload(image:) |
| 이미지 스크랩 | scrapWithImageURL:imageURL: | imageScrap(imageUrl:) |
| 이미지 삭제 | deleteWithImageURL:imageURL: | - |
- iOS SDK v1:
KOSessionTask로 API 호출 - 최신 버전:
KakaoSDKTalk모듈의TalkApi로 API 호출
| 이름 | iOS SDK v1 | iOS SDK v2 |
|---|---|---|
| 나에게 기본 메시지 발송 | talkMemoSendTaskWithTemplate:template: | sendDefaultMemo(templatable:) |
| 나에게 스크랩 메시지 발송 | talkMemoSendTaskWithURL:url:templateId: | sendScrapMemo(requestUrl:templateId:) |
| 나에게 사용자 정의 메시지 발송 | talkMemoSendTaskWithTemplateId:templateId: | sendCustomMemo(templateId:) |
| 친구에게 기본 메시지 발송 | sendMessageToFriendsWithTemplate:template: | sendDefaultMessage(templatable:receiverUuids:) |
| 친구에게 스크랩 메시지 발송 | sendMessageToFriendsTaskWithURL:url:templateId: | sendScrapMessage(requestUrl:templateId:receiverUuids:) |
| 친구에게 사용자 정의 메시지 발송 | sendMessageToFriendsTaskWithTemplateId:templateId: | sendCustomMessage(templateId:receiverUuids:) |
- iOS SDK v1
- 카카오톡 채널 추가와 카카오톡 채널 채팅은
KPFPlusFriend로 호출 - 카카오톡 채널 관계 조회 API는
KOSessionTask로 호출
- 카카오톡 채널 추가와 카카오톡 채널 채팅은
- 최신 버전
KakaoSDKTalk모듈의TalkApi로 API 호출- 카카오톡 채널 관계 조회 API는 카카오 로그인 구현 필요
| 이름 | iOS SDK v1 | iOS SDK v2 |
|---|---|---|
| 카카오톡 채널 추가 | addFriend:plusFriendId: | makeUrlForAddChannel(channelPublicId:) |
| 카카오톡 채널 채팅 | chat:plusFriendId: | makeUrlForChannelChat(channelPublicId:) |
| 카카오톡 채널 관계 조회 | talkPlusFriendsTask | channels() |
- iOS SDK v1
KNVNaviLauncher로 API 호출- 파라미터 설정은 각 클래스 빌더(Builder) 사용
- 최신 버전
KakaoSDKNavi모듈의NaviApi로 API 호출- 파라미터 설정은 각 클래스 생성자 사용
| 이름 | iOS SDK v1 | iOS SDK v2 |
|---|---|---|
| 길 안내 | navigateWithParams:params: | navigateUrl(destination:) |
| 목적지 공유 | shareDestinationWithParams:params: | shareUrl(destination:) |
| 길 안내 조건 설정 | locationWithName | NaviOption() |
| 목적지 정보 설정 | paramsWithDestination | NaviLocation() |
- iOS SDK v1:
KOSessionTask로 API 호출 - 최신 버전: 푸시 알림 API 미지원, REST API 사용 가능
| 이름 | iOS SDK v1 | iOS SDK v2 |
|---|---|---|
| 푸시 토큰 등록 | pushRegisterDeviceWithToken:deviceToken: | - |
| 푸시 토큰 조회 | pushGetTokensTaskWithCompletionHandler | - |
| 푸시 토큰 삭제 | pushDeregisterDeviceWithToken:deviceToken: | - |