티스토리 뷰
https://developers.kakao.com/docs/latest/ko/message/common
카카오 링크 API와 카카오톡 리스트 API가 다르다. 원하는걸 정확하게 쓰자!
카카오톡 메시지 API는 카카오톡 모듈인 TalkApi가 제공합니다. 따라서 카카오톡 메시지 API를 사용하려면 카카오 로그인 모듈 KakaoSDKUser, 사용자 인증 모듈 KakaoSDKAuth, 카카오톡 모듈 KakaoSDKTalk을 모두 설치해야 합니다. 모듈 설치 방법은 설치하기를 참고합니다.
=> pod으로 설치하면 된다!!
외부 라이브러리 디펜던시(External library dependency)
iOS SDK를 설치하면 SDK에 필요한 외부 라이브러리가 자동으로 설치됩니다.
- iOS SDK: Alamofire, DynamicCodable
- ReactiveX iOS SDK: RxSwift, RxCocoa, RxAlamofire, DynamicCodable
=> 그래서 앱에서 Alamofire을 안쓰려던 내 계획이 실패했다... ㅠ
Info.plist에 추가해준다.
https://developers.kakao.com/docs/latest/ko/message/ios-link#default-template-msg
기본 템플릿으로 보내기
import KakaoSDKLink
메시지: 카카오톡
- Legacy: KOSessionTask를 통해 API 호출
- 최신 버전
- KakaoSDKTalk 모듈의 TalkApi를 통해 API 호출
- 카카오 로그인 구현 필요
NameLegacy APIAPI
나에게 기본 메시지 보내기 | 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:) |
// 코드
var kakaoButtonAction: () -> Void = {
// templatable은 메시지 만들기 항목 참고
let title = "피드 메시지"
let description = "피드 메시지 예제"
let feedTemplateJsonStringData =
"""
{
"object_type": "feed",
"content": {
"title": "딸기 치즈 케익",
"description": "#케익 #딸기 #삼평동 #카페 #분위기 #소개팅",
"image_url": "http://mud-kage.kakao.co.kr/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
"link": {
"mobile_web_url": "https://developers.kakao.com",
"web_url": "https://developers.kakao.com"
}
},
"social": {
"comment_count": 45,
"like_count": 286,
"shared_count": 845
},
"buttons": [
{
"title": "웹으로 보기",
"link": {
"mobile_web_url": "https://developers.kakao.com",
"web_url": "https://developers.kakao.com"
}
},
{
"title": "앱으로 보기",
"link": {
"android_execution_params": "key1=value1&key2=value2",
"ios_execution_params": "key1=value1&key2=value2"
}
}
]
}
""".data(using: .utf8)!
// templatable은 메시지 만들기 항목 참고
if let templatable = try? SdkJSONDecoder.custom.decode(FeedTemplate.self, from: feedTemplateJsonStringData) {
LinkApi.shared.defaultLink(templatable: templatable) { linkResult, error in
if let error = error {
print(error)
}
else {
print("defaultLink() success.")
if let linkResult = linkResult {
UIApplication.shared.open(linkResult.url, options: [:], completionHandler: nil)
}
}
}
}
}
'macOS, iOS' 카테고리의 다른 글
UIViewRepresentable의 변수는 Binding보다는 static을 쓰자 (0) | 2021.05.13 |
---|---|
[iOS] Invalid parameter not satisfying: !stayUp || CLClientIsBackgroundable(internal->fClient) || _CFMZEnabled() (0) | 2021.05.07 |
[iOS] 클립보드에 복사하기 (0) | 2021.05.06 |
[SwiftUI] UserDefaults -> AppStorage (0) | 2021.04.28 |
[iOS] Codable URL이 "" 일 때 dataCorrupted 안나게 하기 (0) | 2021.04.28 |