v1에서 v2로 마이그레이션
이 문서는 Kakao SDK for iOS(이하 iOS SDK) v1(2.0.0 미만 버전)에서 v2(2.0.0 이상 버전)로 업그레이드하는 사용자를 위한 참고 정보를 제공합니다.
초기화
iOS SDK v1 사용 시, 프로젝트 설정 및 임포트(import) 후 API를 필요한 시점에 호출할 수 있습니다. 이와 달리 iOS SDK v2는 명시적인 초기화를 필요로 합니다. 앱 실행 후 초기화 이후에 각 API를 호출하도록 구현해야 합니다.
카카오 로그인이 필요한 API 사용 시 주의사항
iOS SDK v1 사용 시, 카카오 로그인을 통해 발급 받은 액세스 토큰을 전달해야 하는 API를 KOSessionTask
를 통해 호출해야 합니다. iOS SDK v1의 세션은 사용자의 카카오 로그인 상태에 따라 변경되며, 세션이 열려 있는 상태에서만 호출할 수 있는 API들이 있습니다.
iOS SDK v2의 API는 모듈 단위로 분리되어 있고, 필요한 모듈을 선택하여 효율적으로 사용할 수 있습니다. 카카오 로그인을 통해 발급 받은 액세스 토큰을 전달해야 하는 API를 사용하려면 카카오 로그인 모듈을 함께 설치하고 기능을 구현해야 합니다.
이러한 구조적 차이로 인해 iOS SDK v2 사용 시에는 사용하려는 모듈의 카카오 로그인에 대한 의존도를 먼저 파악해야 합니다. 카카오 로그인 모듈 및 기능 구현이 필요한 API의 경우, 개발 가이드마다 설치해야 하는 모듈과 카카오 로그인 구현이 필요한지 안내합니다.
버전별 API 비교
공통
- 최신 버전:
KakaoSDKCommon
을 통해 초기화 API 호출
이름 |
iOS SDK v1 |
iOS SDK v2 |
Kakao SDK 초기화 |
- |
initSDK() |
카카오 로그인
- iOS SDK v1
- 카카오 로그인 API는
KOSession
을 통해 호출
- 카카오 로그인 이후 호출하는 API는
KOSessionTask
를 통해 호출
- 최신 버전
- 카카오 로그인 API는
KakaoSDKUser
모듈의 UserApi
를 통해 호출
- 토큰 존재 여부 확인하기 API는
KakaoSDKAuth
모듈의 AuthApi
를 통해 호출
이름 |
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
를 통해 호출
- 카카오톡 미설치 시 내부적으로 웹뷰를 통해 메시지 전달됨
- 최신 버전
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:
KOSessionTask
를 통해 API 호출
- 최신 버전:
KakaoSDKStory
모듈의 StoryApi
를 통해 API 호출
이름 |
iOS SDK v1 |
iOS SDK v2 |
사용자 확인하기 |
storyIsStoryUserTaskWithCompletionHandler |
isStoryUser() |
프로필 가져오기 |
storyProfileTaskWithCompletionHandler |
profile() |
스토리 쓰기 |
storyPostNoteTaskWithContent:content: |
postNote(content:) |
사진 스토리 쓰기 |
storyPostPhotoTaskWithImageUrls:content:images: |
postPhoto(content:images:) |
링크 스토리 쓰기 |
storyPostLinkTaskWithLinkInfo:link: |
postLink(content:linkInfo:) |
내 스토리 가져오기 > 하나의 스토리 가져오기 |
storyGetMyStoryTaskWithMyStoryId:myStoryId: |
story(id:) |
내 스토리 가져오기 > 여러 개의 스토리 가져오기 |
storyGetMyStoriesTaskWithLastMyStoryId:lastMyStoryId: |
stories() |
내 스토리 삭제하기 |
storyDeleteMyStoryTaskWithMyStoryId:myStoryId: |
delete(id:) |
이미지 업로드 |
storyMultiImagesUploadTaskWithImages:chosenImages: |
upload(images:) |
웹 페이지 스크랩하기 |
storyGetLinkInfoTaskWithUrl:url: |
linkInfo(url:) |
카카오톡 채널
- 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() |
* webNavigateUrl(destination:): Deprecated, 웹 길 안내 서비스 종료, 공지 참고
푸시 알림
- iOS SDK v1:
KOSessionTask
를 통해 API 호출
- 최신 버전: 푸시 알림 API 미지원, REST API 사용 가능
이름 |
iOS SDK v1 |
iOS SDK v2 |
푸시 토큰 등록하기 |
pushRegisterDeviceWithToken:deviceToken: |
- |
푸시 토큰 보기 |
pushGetTokensTaskWithCompletionHandler |
- |
푸시 토큰 삭제하기 |
pushDeregisterDeviceWithToken:deviceToken: |
- |