Kakao.API.request API 문의드립니다

안녕하세요.

카카오링크를 통해 고객에 메시지를 발송하는 기능을 구현 중입니다.
개발환경은 하이브리드앱내의 네이티브앱의 웹뷰에서
websquare + cordova 라는 개발 프레임웍을 통해 자바스크립트로 구현하고 있습니다.

일반적으로 많이 사용하는 Kakao.Link.sendDefault API로 호출시에는
네이티브앱 내의 shouldOverrideUrlLoading 오버라이딩 이슈 때문에
정상 호출이 안되는 것으로 알고 있습니다.

네이티브앱 개발 파트에서는 “com.kakao.talk” 팩키지를 이용하여
"kakaolink://send? + 파라메터" 방식으로 직접 카카오톡 앱을 실행할 것을
권고하여 이러한 방식으로 개발 중입니다.

이를 위해
아래와 같이 카카오톡 API 키로 init 후 [Kakao.init(‘카카오톡 API 키’); ]
Kakao.API.request 를 통해 “/v2/api/kakaolink/talk/template/default” 를 호출하여
그 결과를 “kakaolink://send? + 파라메터” 로 전달하여 카카오톡을 실행하려 합니다.

이 때 Kakao.API.request 호출시 정상적인 결과를 받지 못하고
아래와 같이 Promise 에 대한 정보만 출력됩니다.
Promise {}
[[PromistStatus]] : “pending”
[[PromiseResult]] : undefined

문의 드릴 내용은 다음과 같습니다.

  1. Kakao.API.request 사용시 shouldOverrideUrlLoading 오버라이딩 필수인지 여부
    • 웹뷰상에서 자바스크립트로 Kakao.API.request 실행시에도
      Kakao.Link.sendDefault 와 동일하게 shouldOverrideUrlLoading 오버라이딩되어야 하는지?
  2. 아래 소스코드로 동일하게 PC웹에서 실행하면 Kakao.API.request 정상 호출되면서 결과값을 받아옵니다.
    웹뷰상에서 실행시와 웹에서의 실행시 차이점이 있는지? 있다면 어떤 차이인지?

긴급하게 개발중인 사항이라 가능하면 답변 부탁드립니다.
감사합니다.

연락처 황남수 010-9095-3048 namsuhwang@naver.com

/* 소스코드 */
WebSquare.util.js (
"/cm/js/kakao.min.js"
,function () {
com.log("> AAAA 카카오 isInitialized1 : " + Kakao.isInitialized());
if (false == Kakao.isInitialized()) {
Kakao.init(‘카카오톡 API 키’); // 카카오톡 API 키
}
com.log("> (WebSquare.util.js 펑션안)카카오 isInitialized : " + Kakao.isInitialized());
}
);

var paramKakao = {
object_type: ‘feed’,
content: {
title: ‘받기’,
image_width: 400,
image_height: 200,
image_url: ‘’,
link: {
mobile_web_url: ‘http://www.naver.com’,
web_url: ‘http://www.naver.com
},
},
install_talk: true,
buttons: [
{
title: ‘받기’,
link: {
mobile_web_url: ‘http://www.naver.com’,
web_url: ‘http://www.naver.com
},
},
],
button_title : ‘’,
};

    var apiData = {
	    url: "/v2/api/kakaolink/talk/template/default",
	    data: {
	    			link_ver: '4.0',
	    			template_object: paramKakao,
	    		}
	   };
	   
	var validatedResp = Kakao.API.request(apiData); 
	console.log("aaa===" + JSON.stringify(validatedResp));
    // validatedResp 에 아무것도 찍히지 않음
    /* 더이상 아래 로직을 타지 못하고 아래와 같이 Promise 에 대한 정보가 찍힘
       아마도 카카오 API 에서 출력하는 로그로 보임
    Promise {<pending>}
       [[PromistStatus]] : "pending"
       [[PromiseResult]] : undefined
    */
	validatedResp.then(function(data){
        console.lof("aaaaaaaaaaa");  // 여기가지 오지 못함
		var settings = {
			appkey: '카카오톡 API 키',
		    appver: '1.0',
		    linkver: '4.0',
		    extras: '',
		    template_json: data.template_msgs,
		    template_args: data.template_args,
		    template_id: data.template_id,
		   };
        console.log(JSON.stringify(data));
	    var appParam = scwin.buildQueryString(settings)
		console.log(appParam);
    	startApp.set({
                "uri" : "kakaolink://send?"+appParam
                ,"package" : "com.kakao.talk"
        }).start();
	}, function(error) {
		 var errMsg = '카카오톡 보내기에 실패하였습니다';
           if (typeof error === 'object' && typeof error.msg === 'string') {
               errMsg += '\n' + error.msg;
           }
           
           com.alert(errMsg);
           console.log('실패 콜백:\n' + JSON.stringify(error, undefined, 4));
	});

/v2/api/kakaolink/talk/template/default는 JS SDK 내부에서 사용하는 API이기 때문에
직접 호출하시는 것은 권장드리지 않습니다.

안드로이드 웹뷰에서 shouldOverrideUrlLoading을 오버라이딩 하시고, Kakao.Link.sendDefault를 사용해주세요.
아래 링크를 참고해주세요.
https://developers.kakao.com/docs/latest/ko/getting-started/sdk-js#hybrid-app

안녕하세요.
Kakao.API.request 를 호출 할 때에도 sgouldOverrideUrlLoading 을 오버라이드해야할까요?
네이티브 개발자와 협의를 할때 알고 있어야 할 것 같아서 문의드립니다.

Kakao.API.request만 사용하신다면 shouldOverrideUrlLoading을 오버라이딩 하지 않아도 됩니다.

그러나, 앞서 질문해주신 내용과 같이 API 호출 이후에 kakaolink://send를 하신다면
커스텀 스킴 처리를 위해 shouldOverrideUrlLoading을 오버라이딩을 하셔야 합니다.