이 문서는 Kakao SDK for iOS(이하 iOS SDK)를 사용한 카카오톡 소셜 API 구현 방법을 안내합니다.
레퍼런스 | 앱 설정 |
---|---|
[SDK, RxSDK] profile() [SDK] TalkProfile |
설치 모듈 설정 초기화 |
권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
---|---|---|---|
- | 플랫폼 등록 카카오 로그인 활성화 동의항목 |
필요 | 필요: 프로필 정보(닉네임/프로필 사진) 닉네임 프로필 사진 |
현재 로그인한 사용자의 카카오톡 프로필 정보를 받습니다.
profile()
를 호출합니다.
요청이 성공하면 TalkProfile
객체로 카카오톡 프로필 정보를 받습니다. 카카오톡 프로필 정보의 구성에 대해서는 REST API 가이드를 함께 참고합니다
TalkApi.shared.profile {(profile, error) in
if let error = error {
print(error)
}
else {
print("profile() success.")
// 성공 시 동작 구현
_ = profile
}
}
// Class member property
let disposeBag = DisposeBag()
TalkApi.shared.rx.profile()
.retry(when: Auth.shared.rx.incrementalAuthorizationRequired())
.subscribe (onSuccess:{ (profile) in
print("success.")
// 성공 시 동작 구현
_ = profile
}, onFailure: {error in
print(error)
})
.disposed(by: disposeBag)
레퍼런스 | 앱 설정 |
---|---|
[SDK, RxSDK] selectFriend() [SDK, RxSDK] selectFriends() [SDK, RxSDK] selectFriendPopup() [SDK, RxSDK] selectFriendsPopup() [SDK] SelectedUsers |
설치 모듈 설정 초기화 |
권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
---|---|---|---|
필요: 사용 권한 |
플랫폼 등록 카카오 로그인 활성화 동의항목 |
권한 | 필요: 카카오 서비스 내 친구목록(프로필사진, 닉네임, 즐겨찾기 포함) |
사용자가 카카오톡 친구를 선택할 수 있는 피커를 호출합니다.
선택 유형과 화면 표시 형태에 따라 호출해야 할 메서드가 다르므로, 다음 중 서비스의 필요에 맞는 메서드를 선택해 사용합니다.
화면 표시 형태 | 선택 유형 | 메서드 |
---|---|---|
풀 스크린 | 싱글 피커 | selectFriend() |
풀 스크린 | 멀티 피커 | selectFriends() |
팝업 | 싱글 피커 | selectFriendPopup() |
팝업 | 멀티 피커 | selectFriendsPopup() |
피커의 구성 요소는 파라미터를 사용해 선택적으로 지정할 수 있습니다.
사용자가 피커 화면에서 친구 선택을 완료하면 SelectedUsers
객체가 반환됩니다. 해당 객체는 선택된 각 친구의 정보를 SelectedUser
객체의 배열로 포함합니다. 요청에 실패했거나 문제가 발생한 경우 문제 해결에서 원인을 확인합니다.
let openPickerFriendRequestParams = OpenPickerFriendRequestParams(
title: "싱글 피커", // 피커 이름
viewAppearance: .auto, // 피커 화면 모드
orientation: .auto, // 피커 화면 방향
enableSearch: true, // 검색 기능 사용 여부
enableIndex: true, // 인덱스뷰 사용 여부
showFavorite: true // 즐겨찾기 친구 표시 여부
)
PickerApi.shared.selectFriend(params: openPickerFriendRequestParams) { selectedUsers, error in
if let error = error {
print(error)
}
else {
print("selectFriend(params:) success.")
// 성공 시 동작 구현
_ = selectedUsers
}
}
let openPickerFriendRequestParams = OpenPickerFriendRequestParams(
title: "멀티 피커", // 피커 이름
viewAppearance: .auto, // 피커 화면 모드
orientation: .auto, // 피커 화면 방향
enableSearch: true, // 검색 기능 사용 여부
enableIndex: true, // 인덱스뷰 사용 여부
showFavorite: true, // 즐겨찾기 친구 표시 여부
showPickedFriend: true, // 선택한 친구 표시 여부, 멀티 피커에만 사용 가능
maxPickableCount: 5, // 선택 가능한 최대 대상 수
minPickableCount: 1 // 선택 가능한 최소 대상 수
)
PickerApi.shared.selectFriends(params: openPickerFriendRequestParams) { selectedUsers, error in
if let error = error {
print(error)
}
else {
print("selectFriends(params:) success.")
// 성공 시 동작 구현
_ = selectedUsers
}
}
// Class member property
let disposeBag = DisposeBag()
let openPickerFriendRequestParams = OpenPickerFriendRequestParams(
title: "싱글 피커", // 피커 이름
viewAppearance: .auto, // 피커 화면 모드
orientation: .auto, // 피커 화면 방향
enableSearch: true, // 검색 기능 사용 여부
enableIndex: true, // 인덱스뷰 사용 여부
showFavorite: true // 즐겨찾기 친구 표시 여부
)
PickerApi.shared.rx.selectFriend(params: openPickerFriendRequestParams)
.subscribe (onNext:{ (selectedUsers) in
print("selectFriend(params:) success.")
// 성공 시 동작 구현
_ = selectedUsers
}, onError: {error in
print(error)
})
.disposed(by: disposeBag)
// Class member property
let disposeBag = DisposeBag()
let openPickerFriendRequestParams = OpenPickerFriendRequestParams(
title: "멀티 피커", // 피커 이름
viewAppearance: .auto, // 피커 화면 모드
orientation: .auto, // 피커 화면 방향
enableSearch: true, // 검색 기능 사용 여부
enableIndex: true, // 인덱스뷰 사용 여부
showFavorite: true, // 즐겨찾기 친구 표시 여부
showPickedFriend: true, // 선택한 친구 표시 여부, 멀티 피커에만 사용 가능
maxPickableCount: 5, // 선택 가능한 최대 대상 수
minPickableCount: 1 // 선택 가능한 최소 대상 수
)
PickerApi.shared.rx.selectFriends(params: openPickerFriendRequestParams)
.subscribe (onNext:{ (selectedUsers) in
print("selectFriends(params:) success.")
// 성공 시 동작 구현
_ = selectedUsers
}, onError: {error in
print(error)
})
.disposed(by: disposeBag)
let openPickerFriendRequestParams = OpenPickerFriendRequestParams(
title: "싱글 피커", // 피커 이름
viewAppearance: .auto, // 피커 화면 모드
orientation: .auto, // 피커 화면 방향
enableSearch: true, // 검색 기능 사용 여부
enableIndex: true, // 인덱스뷰 사용 여부
showFavorite: true // 즐겨찾기 친구 표시 여부
)
PickerApi.shared.selectFriendPopup(params: openPickerFriendRequestParams) { selectedUsers, error in
if let error = error {
print(error)
}
else {
print("selectFriendPopup(params:) success.")
// 성공 시 동작 구현
_ = selectedUsers
}
}
let openPickerFriendRequestParams = OpenPickerFriendRequestParams(
title: "멀티 피커", // 피커 이름
viewAppearance: .auto, // 피커 화면 모드
orientation: .auto, // 피커 화면 방향
enableSearch: true, // 검색 기능 사용 여부
enableIndex: true, // 인덱스뷰 사용 여부
showFavorite: true, // 즐겨찾기 친구 표시 여부
showPickedFriend: true, // 선택한 친구 표시 여부, 멀티 피커에만 사용 가능
maxPickableCount: 5, // 선택 가능한 최대 대상 수
minPickableCount: 1 // 선택 가능한 최소 대상 수
)
PickerApi.shared.selectFriendsPopup(params: openPickerFriendRequestParams) { selectedUsers, error in
if let error = error {
print(error)
}
else {
print("selectFriendsPopup(params:) success.")
// 성공 시 동작 구현
_ = selectedUsers
}
}
// Class member property
let disposeBag = DisposeBag()
let openPickerFriendRequestParams = OpenPickerFriendRequestParams(
title: "싱글 피커", // 피커 이름
viewAppearance: .auto, // 피커 화면 모드
orientation: .auto, // 피커 화면 방향
enableSearch: true, // 검색 기능 사용 여부
enableIndex: true, // 인덱스뷰 사용 여부
showFavorite: true // 즐겨찾기 친구 표시 여부
)
PickerApi.shared.rx.selectFriendPopup(params: openPickerFriendRequestParams)
.subscribe (onNext:{ (selectedUsers) in
print("selectFriendPopup(params:) success.")
// 성공 시 동작 구현
_ = selectedUsers
}, onError: {error in
print(error)
})
.disposed(by: disposeBag)
// Class member property
let disposeBag = DisposeBag()
let openPickerFriendRequestParams = OpenPickerFriendRequestParams(
title: "멀티 피커", // 피커 이름
viewAppearance: .auto, // 피커 화면 모드
orientation: .auto, // 피커 화면 방향
enableSearch: true, // 검색 기능 사용 여부
enableIndex: true, // 인덱스뷰 사용 여부
showFavorite: true, // 즐겨찾기 친구 표시 여부
showPickedFriend: true, // 선택한 친구 표시 여부, 멀티 피커에만 사용 가능
maxPickableCount: 5, // 선택 가능한 최대 대상 수
minPickableCount: 1 // 선택 가능한 최소 대상 수
)
PickerApi.shared.rx.selectFriendsPopup(params:openPickerFriendRequestParams)
.subscribe (onNext:{ (selectedUsers) in
print("selectFriendsPopup(params:) success.")
// 성공 시 동작 구현
_ = selectedUsers
}, onError: {error in
self.errorHandler(error: error)
})
.disposed(by: disposeBag)
레퍼런스 | 앱 설정 |
---|---|
[SDK, RxSDK] friends() [SDK] Friends |
설치 모듈 설정 초기화 |
권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
---|---|---|---|
필요: 사용 권한 |
플랫폼 등록 카카오 로그인 활성화 동의항목 |
필요 | 필요: 카카오 서비스 내 친구목록(프로필사진, 닉네임, 즐겨찾기 포함) |
현재 로그인한 사용자의 카카오톡 친구 목록을 불러옵니다.
friends()
를 호출합니다. 요청 시 친구 목록의 정렬 순서, 한 페이지당 친구 수를 선택적으로 지정할 수 있습니다. 파라미터 없이 요청 시 기본 설정대로 요청이 전송됩니다.
요청 성공 시 Friends
객체를 응답으로 받습니다. Friends
객체는 전체 친구 수인 totalCount
와 각 친구의 정보를 담은 Friend
객체의 리스트(List)인 elements
, 즐겨찾기한 친구 수인 favoriteCount
로 구성되어 있습니다. 카카오톡 친구 정보 구성에 대해서는 REST API 가이드를 함께 참고합니다.
만약 사용자가 카카오톡 친구 목록 제공에 동의하지 않아 요청이 실패한 경우, 다음 내용을 참고해 사용자 동의를 받은 후 다시 요청합니다.
TalkApi.shared.friends {(friends, error) in
if let error = error {
print(error)
}
else {
// 성공 시 동작 구현
_ = friends
}
}
// Class member property
let disposeBag = DisposeBag()
TalkApi.shared.rx.friends()
.retry(when: Auth.shared.rx.incrementalAuthorizationRequired())
.subscribe (onSuccess:{ (friends) in
// 성공 시 동작 구현
_ = friends
}, onFailure: {error in
print(error)
})
.disposed(by: disposeBag)
FriendsContext
를 전달해 요청하는 방식을 사용할 수 있습니다. FriendsContext
는 기본적인 요청 방법의 파라미터와 동일하게 구성돼 있습니다. 사용자의 카카오톡 친구 수가 요청 시 limit
에 지정된 값 또는 기본 값인 100을 초과할 경우, 친구 목록은 페이지 형태로 구성되어 101번째 친구 정보부터는 FriendsContext
를 사용해 보다 편리하게 요청할 수 있습니다.