개발 환경
---------------------------------
OS : Mac
개발 툴 : xcode
개발 언어 : Swift
xcode version : 14.2
min iOS version : 13.0
---------------------------------
안녕하세요 전진시 입니다
이번 포스팅 주제는 iOS에서 카카오톡 링크 공유를 해볼겠습니다.
일단 카카오 개발자 사이트에 프로젝트 생성하여 앱 package name 및 hash 값 등록했다는 전제하에 내용 작성하겠습니다.
Native Key까지 가져온 상태로요 :D
제가 구현한 Kakao Link 공유는 webView에서 카카오톡 링크 버튼을 클릭하면
javaScript 통신으로 앱 함수를 호출하여 필요한 값들을 앱에 전달하여 작업하였습니다.
1. 프로젝트에 kakao link를 사용할 수 있도록 패키지를 추가해 주겠습니다.
file -> add package 에 들어가서 kakao를 검색하고
아래 이미지처럼 Kakao-ios-sdk가 뜬다면 플젝에 추가해줍시다.
2. Appdelegate 파일에 Kakao Develop 사이트에서 발급받은 native key를 등록하는 작업을 해줍니다.
"전진시" 부분에 복사한 NativeKey를 넣어줍니다.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
KakaoSDK.initSDK(appKey: "전진시")
return true
}
3. 카카오 링크 공유하기 소스를 구현할 파일에 라이브러리를 import 해줍니다.
맨 위에 있는 KakaoSDKTemplate 는 카카오 링크 공유시 template을 사용해서 보낼건데 그때 사용할겁니다
import KakaoSDKTemplate
import KakaoSDKCommon
import KakaoSDKShare
4. 소스 구현
if ShareApi.isKakaoTalkSharingAvailable() {
let link = Link(webUrl: URL(string:url),
mobileWebUrl: URL(string:url))
var imageUrlString = ""
if imageUrl == "" {
imageUrlString = "default url"
} else {
imageUrlString = imageUrl
}
imageUrlString = imageUrlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
let content = Content(title: title,
imageUrl: URL(string: imageUrlString)!,
description: description,
link: link)
let template = FeedTemplate(content: content, buttons: nil)
//메시지 템플릿 encode
if let templateJsonData = (try? SdkJSONEncoder.custom.encode(template)) {
//생성한 메시지 템플릿 객체를 jsonObject로 변환
if let templateJsonObject = SdkUtils.toJsonObject(templateJsonData) {
ShareApi.shared.shareDefault(templateObject:templateJsonObject) {(linkResult, error) in
if let error = error {
print("error : \(error)")
}
else {
print("defaultLink(templateObject:templateJsonObject) success.")
guard let linkResult = linkResult else { return }
UIApplication.shared.open(linkResult.url, options: [:], completionHandler: nil)
}
}
}
}
}
[소스 설명]
ShareApi.isKakaoTalkSharingAvailable()
위 코드는 카카오톡 공유가 가능한지 bool 값으로 return 해줍니다.
let content = Content(title: title,
imageUrl: URL(string: imageUrlString)!,
description: description,
link: link)
let template = FeedTemplate(content: content, buttons: nil)
이 부분은 카카오 링크 템플릿을 생성합니다.
if let templateJsonData = (try? SdkJSONEncoder.custom.encode(template)) {
//생성한 메시지 템플릿 객체를 jsonObject로 변환
if let templateJsonObject = SdkUtils.toJsonObject(templateJsonData) {
ShareApi.shared.shareDefault(templateObject:templateJsonObject) {(linkResult, error) in
if let error = error {
print("error : \(error)")
}
else {
print("defaultLink(templateObject:templateJsonObject) success.")
guard let linkResult = linkResult else { return }
UIApplication.shared.open(linkResult.url, options: [:], completionHandler: nil)
}
}
}
}
이 부분은 위에서 만든 template을 encode하고 json 객체로 변환시켜 준 후 카카오톡을 열어줍니다.
이상 !
'개발노트 > iOS' 카테고리의 다른 글
[Xcode] some files could not be transferred .... 에러 해결기 (0) | 2023.05.03 |
---|---|
[Swift] WkWebview Custom UserAgent 설정하기 (0) | 2023.03.26 |
[iOS] UILabel에 padding 주기 (0) | 2023.02.22 |
SWIFT : 특정 뷰 화면 전환하기 - 세로모드 예제(orientation : portrait) (0) | 2023.02.20 |
[Swift] javascript Alert & Confirm 띄우기 (0) | 2023.02.20 |
댓글