function sendLink_kakao(obj_btn) { // edit_20210720
try {
var key = obj_btn.attr("data_access_key_java");
Kakao.init(key); // init 은 한 번만해야 하므로...
} catch(e) { }
var i, v_desc = "", v_imageUrl = "";
var v_title = obj_btn.attr("data_sns_title");
var v_url = obj_btn.attr("data_our_base_url"); //var v_url = obj_btn.attr("data_short_url");
if ($('body').hasClass('isApp') && $('body').hasClass('isIos')) {
// 여기에 ios 앱으로 전달한다.
var obj_etc = {
action: "kakaoShare"
, key: key
, title: v_title
, description: v_desc
, imageUrl: v_imageUrl
, link: v_url
};
window.webkit.messageHandlers.MyIOSHandler.postMessage(obj_etc);
} else {
Kakao.Link.sendDefault({
objectType: 'feed',
content: {
title: v_title,
description: v_desc,
imageUrl: v_imageUrl,
link: {
mobileWebUrl: v_url,
webUrl: v_url,
},
},
});
}
}
html 의 카카오톡 이미지를 클릭하면 위 메소드가 호출됩니다.
iOS 앱을 제외한 안드로이드 앱, 안드로이드폰의 웹브라우즈, 아이폰의 사파리에서는 위 메소드의 Kakao.Link.sendDefault({ 에 의해 카카오톡 링크가 제대로 됩니다.
구글링해서 찾아 보았지만 명확한 답이 없어 이렇게 도움을 요청합니다.
아래와 같이 해 보았습니다.
pod ‘KakaoSDK’
pod update
설치가 정상적으로 되었습니다.
info.plist 에서
LSApplicationQueriesSchemes 아래에
kakaolink 를 추가
ViewController.swift 에 아래를 추가함
import KakaoSDKCommon // for kakao
import KakaoSDKShare // for kakao
import KakaoSDKTemplate
import KakaoSDKTalk
... ...
extension ViewController: WKScriptMessageHandler { // for web's javascript -> ios app add_2021040301
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "MyIOSHandler" {
if let dictionary: [String: String] = message.body as? Dictionary {
if let action = dictionary["action"] {
if action == "kakaoShare"
, let key = dictionary["key"]
, let title = dictionary["title"]
, let description = dictionary["description"]
, let imageUrl = dictionary["imageUrl"]
, let link = dictionary["link"] {
KakaoSDK.initSDK(appKey: key) // Kakao SDK 초기화
let linkObject = Link(webUrl: URL(string: link), mobileWebUrl: URL(string: link))
let content = Content(title: title,
imageUrl: URL(string: imageUrl)!,
description: description,
link: linkObject)
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)
}
}
}
}
}
}
}
}
}
}
이렇게 했는데 앱 실행시 이상한 에러가 나는데… 제가 작업한 pod 부터 userContentController 메소드까지… 어디가 잘못된 걸까요?
Xcode 는 14.2 입니다. 맥이 2015년이라 맥OS 와 Xcode 업데이트가 안됩니다.
아래는 에러 내용입니다.
Undefined symbol: _swift_FORCE_LOAD$_swiftCompatibility56
고수님들의 조언부탁합니다.