카카오톡 공유하기 버튼 기능오류

안녕하세요 기존에 정상적으로 동작하던 공유하기 기능에 문제가 생겨서 리포팅 드립니다.

오류 메시지는 다음과 같습니다.
{
message: “Missing required keys: objectType,content,objectType,content,success,fail,always,installTalk,throughTalk at Share.sendDefault”,
name: “KakaoError”
}
이슈 발생 샘플 주소는 아래와 같습니다.
https://rccl.kr/web/reserv/selectProduct?product_id=SC05I908&sail_date=03/04/2023&sunsa_no=1#step3

kakao.min.js를 kakao.js로 바꿔서 따라 들어가 보니

1405라인 defaults$1(params, rules.defaults);
에서 제가 objectType, content만 넣어서 보낸 object가
success,fail,always,installTalk,throughTalk 가 추가되면서

1411라인 var missingRequiredKeys = difference(keys(required), keys(params));
에서 required와 차이가 생기면서 문제가 발생하는 것으로 보입니다.

확인 부탁드리며 혹시 답변시 leone@rccl.kr로도 포워딩이 가능하실까요?

현재 메일(customer@rccl.kr)은 여행실무팀 계정이라 ㅜㅠ

감사합니다.

안녕하세요.

서비스측에서 Array.prototype.reduce를 재정의 하였기에 발생한 오류 입니다.

JS SDK는 내부에서 Array.prototype.reduce 함수를 사용합니다.
하지만, 서비스측 RichBaseExtends.js 에서 이를 표준 JS와 다르게 재정의 하고 있습니다.

RichBaseExtends.js에 정의된 reduce를 제거 부탁드리며 만약 사용해야만 한다면 다른 이름으로 정의 하시는게 좋을것 같습니다.

네 확인했습니다.
빠른 답변에 감사드립니다.

안녕하세요. 말씀해주신대로 RichBaseExtends.js에서 reduce함수 제거 하고 테스트를 했으나

PC 웹화면에서는 정상동작

모바일 안드로이드 크롬에서는 EasyXDM - Template is not defined
에러가 발생합니다.

PC에서 개발자도구로 모바일 모드로 변경시에도 EasyXDM - Template is not defined
에러가 발생합니다.

확인 부탁드립니다.

안녕하세요.

서비스측 RichBaseExtends.js 의 Array.prototype.toJSON 구현 버그로 인해 발생한 오류 입니다.
헤당 구현부를 제거하시거나 올바르게 동작하도록 하는게 좋을것 같습니다.


원인:
JS SDK 내부에서 JSON.stringfy를 사용합니다.
JSON.stringfy는 prototype에 toJSON이 구현되어 있는경우 해당 메소드를 사용하는데요

서비스측에서 다음과 테스트 해보시면 버그로 인한 차이점을 발견하실수 있습니다.

# 서비스측 결과
JSON.stringify([1,2,3])
=> "\"[{}, {}, {}]\""

# 정상동작 기대값
=> "[1,2,3]"

다른이야기지만, prototype 을 정의하거나 재정의 하는 경우
구현 내용이 JS 표준을 따르지 않는 다면 JS SDK 뿐만 아니라 다른 스크립트들에서 이번과 같은 오류가 계속 발생할 수있습니다.

아마도 RichBaseExtends.js 는 예전 브라우저 기반의 레거시 코드로 보이는데요
사용하지 않으신다면 제거하시는것을 권장 드립니다.

안녕하세요

동작 확인 되었습니다.

워낙 오래전에 만들어진 레거시라
SpringBoot, React로 전환하는 방향을 계획중인데 여러 이슈로 진행이 쉽지 않네요 :frowning:

감사합니다. 좋은 하루 되세요.

는 다시 문의를 드리게 되었습니다…

제가 윈도우/안드로이드 사용중이라 발견이 늦었는데…ㅠㅠ

아이폰 사파리에서도 해당기능이 동작을 하지 않는다고 하네요… 한번만 더 확인 부탁드립니다.ㅠㅠㅠㅠ

맥 사파리/아이폰 크롬에서는 잘 동작한다고 합니다.ㅠ

안녕하세요.

정상적인 동작으로 확인됩니다.


모바일에서는 카카오톡으로만 동작하게 됩니다.

JS SDK v1을 사용하는 경우 카카오톡 실행을 위해 커스텀 스킴을 사용합니다.

톡이 설치되어 있지 않은 경우 해당 앱 스킴이 동작될 수 없는데요 이 때, iOS Safari의 경우는 "주소가 유효하지 않기 때문에…"라는 메시지를 출력합니다.

이를 해결하시려면 파라미터에 installTalk: true 를 추가 전달하시어 앱스토어로 이동할수 있도록 할수 있습니다.

이렇게 조치 시, "주소가 유효하지 않기 때문에…"라는 Alert 창에서 확인 버튼을 누르면 앱스토어로 이동합니다. (JS SDK v2 사용 시, alert 창 없이 톡 설치 안내 페이지 이동)