본문 바로가기

HEY/Study

카카오톡으로 링크 버튼이 있는 메세지 공유하기

 

기업협업에서 진행한 task 중 카카오톡 공유 버튼을 추가하는 과제와 함께 아래의 참고 블로그를 받았다.

 

 

[Git Page Jekyll Blog] - [17] 포스트 공유하기: Kakao

이 포스트에서는 Kakao에 포스트의 링크를 공유하는 방법에 대해 알아본다. Kakao 공유 방법은 Kakao가 제공하는 API를 사용하며 이를위해 Kakao 개발자 사이트에 등록한 후 Kakao가 제공하는 SDK 다운로

seungwubaek.github.io

 

kakao developers 에서 애플리케이션을 세팅하는 것부터 템플릿의 구조, 전체 코드까지 정말 자세히 설명해 주셔서 처음 접한 사람들도 금방 따라 할 수 있을 것이다. 이에 더하여 스크랩이 아닌 단순 링크 공유를 테스트하기 위해 진행하면서 고민했던 과정과 배포 후 소소한 디버깅 경험을 기록해보려고 한다.

 

📍목표

url 버튼이 있는 메시지 템플릿을 카카오톡을 공유할 수 있는 버튼을 생성한다.

 

🗂️ 과정

1. 메세지 템플릿 만들기

 

가장 중요한 것은 url 버튼이었기 때문에 나머지는 테스트용으로 간단하게 추가하였다. 프로필의 경우 잘 바뀌지 않을 정보라 판단하여 템플릿에서 직접 설정하였고, 제목과 설명은 서비스 과정에서 수정될 수 있다고 판단하여 파라미터로 설정하였다.

 

 

 

이 메세지 템플릿에는 링크가 하나 이므로 공통링크에 추가하여 작업했다. 도메인은 내 애플리케이션 플랫폼 도메인에 꼭 추가해야 한다.

 

 

 

2. 공유하기 버튼 만들기

 

프로모션 안내 페이지에서 추가할 버튼이기 때문에 위 블로그의 코드를 참고하여 직접 만들어서 진행하였다. 

우선 index.html 를 아래와 같이 작성하였다.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>카톡 공유 테스트</title>

    <style>
        .btn {
            height: 60px;
            font-size: 16px;
            border-radius: 6px;
            width: 100%;
            padding: 12px 24px;
            margin-bottom: 8px;
            cursor: pointer;
            background-color: rgb(251, 219, 0);
            color: rgb(1, 0, 2);
            border: 1px solid rgb(239, 209, 0);
        }
    </style>
</head>

<body>
    <p> 프로모션 링크를 카카오톡 친구들에게 공유해보세요!</p>
    <a class="btn btn--kakao" id="kakaotalk-sharing-btn" title="Share on Kakao" onclick="scrapKakao(this);">
        <span> 카카오톡 공유 </span>
    </a>
    <script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
    <script type="text/javascript">
        Kakao.init('javascript key'); //내 애플리케이션 앱 키
    </script>
    <script src="./kakao.js"></script>

</body>

</html>

 

 

그러면 이렇게 공유 버튼을 볼 수 있다.

 

 

3. 공유하기 함수 추가

 

그리고 kakao.js 에 shareKakao() 함수를 추가하였다.

나는 직접 버튼을 만들었기에 Kakao.Share.sendCustom 을 사용하였고, templateId 에는 위에서 만든 메시지 템플릿의 ID를, templateArgs 에는 템플릿에서 설정한 매개변수의 값을 설정했다.

 

function shareKakao() {
    const title = '추천인 프로모션';
    const description = '해당 링크로 서비스 신청 시 즉시 할인 혜택을 받을 수 있습니다!';
    const pathName = '도메인 뒤에 붙을 path 작성'; 

    Kakao.Share.sendCustom({
      templateId: 위에서 만든 템플릿 ID,
      templateArgs: {
                title: title,
                description: description,
                pagePathname: pathName
              },
            });

}

 

 

잘 작성되었다면 카카오톡 공유 버튼을 누르면 공유 팝업창이 뜨고 친구에서 위에서 만든 메시지를 보낼 수 있다!

 

 

🔧  디버깅

 이렇게 내가 테스트 용으로 만든 공유버튼은 모바일에서도 잘 동작했는데, 이 소스를 바탕으로 프론트엔드 팀원분이 실제 업무 프로젝트에서 만든 공유버튼이 배포 후 동작하지 않은 이슈가 발생하였다. 더 이상한 건 바로 위 이미지처럼 pc 에서는 잘 동작했던 것이었다.

 

 이슈 발견 후 직원분들과 여러 테스트를 하며 찾은 원인은, 공유 버튼을 여러번 눌렀을 때 나타나는 오류를 해결하기 위해 프론트엔드 팀원분이 넣은 리로드 코드였다. 이 리로드 코드를 지우니 모바일에서도 동작은 하나, 처음 눌렀을 때만 동작하고 그 뒤는 동작하지 않았다. 리로드 코드를 넣게 된 현상이 모바일에서 다시 나타난 것이었다.

 

 그렇게 뭐가 원인인지 고민하다가 kakao.init 부분이 문제일 것 같으니, init 여부를 체크하는 분기처리를 추가하라는 리뷰를 받았다. 그 이후로 서치를 해보니 아래의 dev talk 에서 해결을 찾을 수 있었다.

 

Kakao.init 문제

개인적인 프로젝트여서 민감한건 없으니 그냥 코드를 올리겠습니다. <div class="store_buttons_div"> <i class="fas fa-heart" onclick="favorite()"></i> <button type="button" id="find_road">길찾기</button> <span id="share_kakao"><i

devtalk.kakao.com

 

 

if (!Kakao.isInitialized()) {
  Kakao.init('JAVASCRIPT_KEY')
}

 

위와 같이 initalized 되지 않은 경우만 Kakao.init 을 하도록 코드를 추가하니 pc와 모바일에서 모두 정상 작동하였다!

 

다른 팀원분이 코드였지만 내 코드를 바탕으로 작성되었기 때문에 배포 후 오류가 난다고 들었을 때 적극적으로 해결하고자 노력하였다. 빠른 리뷰를 받아서 금방 해결하여 정말 다행이었고, 이렇게 소소한 오류도 아찔한데 실무에서 맞이하게 될 크고 작은 오류들이 벌써 기대되고 두렵다..

'HEY > Study' 카테고리의 다른 글

NestJS 강의 수강 메모 with 노마드코더  (0) 2024.01.15