v1에서 v2인 KakaoSDK 2.5.2 로 마이그레이션 작업중입니다.
현재 LinkApi.defaultLink 를 통해 템플릿을 담아 공유를 시도했으나 completion 블럭에 error를 포함 아무런 응답을 받지 못하고 있습니다.
디버그를 통해 아래 KakaoSDKCommon.shared.appKey() 에서 Appdelegate 에서 init해준 kakao app key가 정상적으로 들어가는 것을 확인했습니다. 테스트를위해 사용한 모바일 기기는 카카오가 설치되어 있고 또한 Android 에서는 정상적으로 링크 공유가 되고있습니다.
MessageService.swift
if let feedTemplateJsonData = (try? SdkJSONEncoder.default.encode(feedTemplate)) {
//생성한 메시지 템플릿 객체를 jsonObject로 변환
if let templateJsonObject = SdkUtils.toJsonObject(feedTemplateJsonData) {
LinkApi.shared.defaultLink(templateObject:templateJsonObject) {(linkResult, error) in
if let error = error {
print(error)
} else {
print("defaultLink(templateObject:templateJsonObject) success.")
//do something
guard let linkResult = linkResult else { return }
UIApplication.shared.open(linkResult.url, options: [:], completionHandler: nil)
}
}
}
}
LinkApi.swift
func defaultLink(templateObjectJsonString:String?,
serverCallbackArgs:[String:String]? = nil,
completion:@escaping (LinkResult?, Error?) -> Void ) {
return API.responseData(.post,
Urls.compose(path:Paths.defalutLink),
parameters: ["link_ver":"4.0",
"template_object":templateObjectJsonString].filterNil(),
headers: ["Authorization":"KakaoAK \(try! KakaoSDKCommon.shared.appKey())"],
sessionType: .Api,
apiType: .KApi) { [weak self] (response, data, error) in
let strongSelf = self
strongSelf?.transformResponseToLinkResult(response: response, data: data, serverCallbackArgs: serverCallbackArgs) { (linkResult, error) in
if let error = error {
completion(nil, error)
}
else {
if let linkResult = linkResult {
completion(linkResult, nil)
}
else {
completion(nil, SdkError(reason:.Unknown, message: "linkResult is nil"))
}
}
}
}
}