✅이번 시간에는 카카오 메시지에 대해서 알아볼 예정이야.
카카오가 정말 문서가 잘 되어 있어서 문서를 보고 해결하는 것도 좋은데, 공부를 했으니까 정리해 둔다면 두배, 세배로 더욱 좋지 않을까 싶어서 작성!
🟠공식문서
https://developers.kakao.com/docs/latest/ko/message/ios-link
카카오 공식문서 정말 좋아서 쓱 읽으면 쓱 이해.
✅목차
1. Pod 설치하기
2. Kakao 개발자 키 발급받은 후 세팅하기
3. AppDelegate.swift 작성하기
✅1. Pod 설치하기
pod 'KakaoSDK'
Pod 설치에 대한 설명은 터미널에서 쉽게할 수 있으니까 패스-!
✅2. Kakao 개발자 키 발급받은 후 세팅하기
우선 키를 발급 받았다는 가정 하에,
프로젝트 파일의 info.plist(우클릭) - Source As - Source Code를 클릭한 후, 아래의 코드를 붙여 넣기.
<key>LSApplicationQueriesSchemes</key>
<array>
<!-- 카카오톡으로 로그인 -->
<string>kakaokompassauth</string>
<!-- 카카오링크 -->
<string>kakaolink</string>
</array>
초보자라면 코드를 어디에 배치해야하는지 어려울 수 있어서 코드를 첨부합니다.
다음으로는 URL Types를 설정해주어야 하는데, 아래 그림을 참고하자!
빨간색으로 가린 부분을 작성해주면 되는데, 카카오 개발자 사이트에 가서 발급받은 네이티브 키를 넣어주면 된다..
예를 들면, 네이티브 키가 1kegh551absgnt159 라고 한다면
URL Scheme쪽에 넣어야 하는 값은 kakao1kegh551absgnt159 를 넣어주면 됩니다.
여기까지 끝냈으면 기본적인 환경설정은 끝!
✅3. AppDelegate.swift 작성하기
import KakaoSDKCommon
import KakaoSDKAuth
넣은 후에
didFinishLaunchingWithOptions 쪽에
KakaoSDK.initSDK(appKey: "아까 URL Scheme에 넣은 네이티브 키 값을 넣어주세요")
그러니까 1kegh551absgnt159 값을 넣어주면 됩니다.
✅4. SceneDelegate.swift 작성하기
import KakaoSDKAuth
extension SceneDelegate {
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
if let url = URLContexts.first?.url {
if (AuthApi.isKakaoTalkLoginUrl(url)) {
_ = AuthController.handleOpenUrl(url: url)
}
}
}
}
작성해서 넣어주세요!
🟠KakaoMessage의 경우는 카카오 Auth를 통해 발급받은 토큰을 활용한다는 점을 주의해 줍시다.
✅5. 스토리보드 및 ViewController의 코드.
아주 기본적인 메시지 기능만 알아볼 예정임으로 스토리 보드에 버튼 두개를 배치해주세요.
기능 확인이 주요함으로 레이아웃은 크게 중요하지 않으니, 잡고 싶은대로 잡아주세요.
🟠ViewController의 코드
//
// ViewController.swift
// KakaoShare
//
// Created by Hamlit Jason on 2022/01/01.
//
import UIKit
import KakaoSDKCommon
import KakaoSDKTalk
import KakaoSDKAuth
import KakaoSDKUser
import KakaoSDKTemplate
import KakaoSDKLink
import SafariServices
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func firstBtn(_ sender: Any) {
// 카카오톡 설치 여부 확인
if (UserApi.isKakaoTalkLoginAvailable()) {
UserApi.shared.loginWithKakaoTalk {(oauthToken, error) in
if let error = error {
print(error)
}
else {
print("loginWithKakaoTalk() success.")
//do something
_ = oauthToken
print("oauthToken \(oauthToken)")
}
}
}
}
@IBAction func secondBtn(_ sender: Any) {
FeedMessage()
}
}
extension ViewController {
func FeedMessage() {
//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"
}
},
"item_content" : {
"profile_text" :"Kakao",
"profile_image_url" :"http://mud-kage.kakao.co.kr/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
"title_image_url" : "http://mud-kage.kakao.co.kr/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
"title_image_text" :"Cheese cake",
"title_image_category" : "Cake",
"items" : [
{
"item" :"Cake1",
"item_op" : "1000원"
},
{
"item" :"Cake2",
"item_op" : "2000원"
},
{
"item" :"Cake3",
"item_op" : "3000원"
},
{
"item" :"Cake4",
"item_op" : "4000원"
},
{
"item" :"Cake5",
"item_op" : "5000원"
}
],
"sum" :"Total",
"sum_op" : "15000원"
},
"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)!
//in ViewController
var safariViewController : SFSafariViewController? // to keep instance
//...
guard let templatable = try? SdkJSONDecoder.custom.decode(FeedTemplate.self, from: feedTemplateJsonStringData) else {
return
}
// 카카오톡 설치여부 확인
if LinkApi.isKakaoLinkAvailable() {
// 카카오톡으로 카카오링크 공유 가능
// templatable은 메시지 만들기 항목 참고
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)
}
}
}
}
}
}
다음과 같은 뷰 컨트롤러를 작성해주세요.
그런 후에 첫번째 버튼과 두번째 버튼을 순서대로 클릭하면..!
모바일로 확인하면 버튼도 나타나고, 버튼에 알맞는 링크를 넣어 처리할 수도 있습니다:)
그럼 즐거운 개발 되세요
'Archive > 잡동사니' 카테고리의 다른 글
[Swift] kakaoMap API URL Scheme 간단 사용법. (0) | 2022.01.17 |
---|---|
[iOS] TmapAPI Swift 사용법 정리 🚙 (0) | 2022.01.17 |
Swift remove element from array by value (0) | 2021.11.17 |
[Swift5] 딕셔너리 contains 활용법 (0) | 2021.11.16 |
Swift 2차원 배열 정렬하기 문법 tip! (0) | 2021.11.16 |