페이지 이동경로
  • 문서>
  • 카카오톡 소셜>
  • iOS

카카오톡 소셜

iOS

이 문서는 Kakao SDK for iOS(이하 iOS SDK)를 사용한 카카오톡 소셜 API 구현 방법을 안내합니다.

프로필 가져오기

기본 정보
레퍼런스 앱 설정
[SDK, RxSDK] profile()
[SDK] TalkProfile
설치
모듈 설정
초기화
권한 사전 설정 카카오 로그인 동의항목
- 플랫폼 등록
카카오 로그인 활성화
동의항목
필요 필요:
프로필 정보(닉네임/프로필 사진)
닉네임
프로필 사진

현재 로그인한 사용자의 카카오톡 프로필 정보를 받습니다.

요청

profile()를 호출합니다.

응답

요청이 성공하면 TalkProfile 객체로 카카오톡 프로필 정보를 받습니다. 카카오톡 프로필 정보의 구성에 대해서는 REST API 가이드를 함께 참고합니다

예제

Swift
RxSwift
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 객체의 배열로 포함합니다. 요청에 실패했거나 문제가 발생한 경우 문제 해결에서 원인을 확인합니다.

예제

풀 스크린
싱글 피커: Swift
멀티 피커: Swift
싱글 피커: RxSwift
멀티 피커: RxSwift
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)
팝업
싱글 피커: Swift
멀티 피커: Swift
싱글 피커: RxSwift
멀티 피커: RxSwift
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 가이드를 함께 참고합니다.

만약 사용자가 카카오톡 친구 목록 제공에 동의하지 않아 요청이 실패한 경우, 다음 내용을 참고해 사용자 동의를 받은 후 다시 요청합니다.

  • 동의항목에 [카카오 서비스 내 친구목록(프로필사진, 닉네임, 즐겨찾기 포함)]을 사용하도록 설정했는지 확인합니다.
  • 추가 항목 동의 받기를 사용해 '카카오 서비스 내 친구목록(프로필사진, 닉네임, 즐겨찾기 포함)'의 사용자 동의를 받습니다.

예제

Swift
RxSwift
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를 사용해 보다 편리하게 요청할 수 있습니다.