[안드로이드] 카카오톡 공유 기능 , 카카오 링크 API 사용법


어플리케이션 기획 중에 콘텐츠 공유 기능이 있는 경우가 많습니다.

공유할 수 있는 수단이 다양하게 있지만 대한민국에서 카카오 플랫폼이 가장 넓은 플랫폼이라 할 수 있죠.

그래서 카카오톡 링크 API 를 사용하여 아래 사진과 같이 공유 기능을 구현하는 경우가 많습니다.

카카오 서비스 API 소개

(사진 출처 : Kakao Developer , 카카오 서비스 API 소개 )


Kakao Developer에 개발자 문서가 아주 상세히 기술 되어 있습니다.

저도 카카오 개발자센터에서 제공하는 문서를 보고 구현 했었지만 참고하실 분들을 위해 카카오 링크 기능 구현하는 것을 진행해 보도록 하겠습니다.

이 포스팅에선 단순하게 글자만 공유하는 기능을 구현할 예정입니다.

사진이나 추가 템플릿을 사용하실 분들은 개발자 센터에서 더 자세한 정보를 제공하니 참고 바랍니다.


1. Result

결과 1

결과 2


2. Step by Step

2-1. 카카오 개발자 센터 (Kakao Developer) 등록

  • 카카오 관련 API 를 구현하기 위해서는 카카오 개발자 센터에서 어플리케이션 등록을 완료 해야합니다. 로그인은 기존 카카오 계정으로 가능합니다.

카카오 데브

  • 개발자 센터에서 좌측에 있는 ‘앱 만들기’ 버튼을 클릭해주세요.


카카오 앱 만들기

  • 다음으로 이름을 입력해주세요. 여기서 작성하는 이름은 카카오 개발자 센터 내에서 보여지는 이름입니다. 입력 하신 다음 ‘앱 만들기’ 버튼을 클릭해주세요.

  • 여기서 아이콘을 등록하지 않고 누르면 기본 아이콘으로 표시된다는 알람이 나오는데 추후에 변경이 가능하니 계속 진행하기 버튼을 눌러주세요.


패키지명 등록

  • 다음으로 패키지 명을 입력해주시면 됩니다. 아래 마켓 URL 같은 경우는 패키지명을 입력하면 자동으로 입력이 되니 따로 마켓에 안올리신 분들도 괜찮습니다.

  • 마켓 URL 이 있으신 분들은 작성해주시면 됩니다.


앱 등록 결과

  • 어플리케이션 등록이 완료되면 위와 같이 생성 되었다는 화면이 나옵니다. 여기에서 아래 ‘설정’ 버튼을 눌러 계속 진행하도록 하겠습니다.


앱 키

  • 우측 하단에 ‘플랫폼 추가’ 버튼을 눌러 ‘안드로이드’ 플랫폼을 추가해주세요.

  • ‘네이티브 앱 키’ 가 저희가 사용할 API 키 입니다.


2-2 안드로이드 설정

1. build.gradle (Project)

빌드 그레이들

subprojects {
    repositories {
        mavenCentral()
        maven { url 'http://devrepo.kakao.com:8088/nexus/content/groups/public/' }
    }
}


2. gradle.properties

빌드 프로퍼티

KAKAO_SDK_VERSION = 1.1.7

  • 카카오 SDK 의 버전을 명시해줍니다.


3. build.gradle(App)

빌드 앱

dependencies {
    compile group: 'com.kakao.sdk', name: 'kakaolink', version: project.KAKAO_SDK_VERSION
}
  • 카카오 링크를 이용하기 때문에 kakaolink 모듈을 dependencies 에 추가하였습니다. 다른 API 도 같이 사용하실 분들은 마찬가지로 추가해주시면 됩니다.


4. kakao_string.xml

카카오 스트링 파일 위치

  • res/values 에 새로운 xml 을 생성해주시고 아래와 같이 입력해줍니다.

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <string name="kakao_app_key">8c6c487e113134189da1542c2b195c61</string>
    <string name="kakao_scheme">kakao8c6c487e113134189da1542c2b195c61</string>
    <string name="kakaolink_host">kakaolink</string>
    </resources>
    
  • 여기서 app_key 는 개발자 센터에서 어플리케이션 등록할 때 생성되었던 네이티브 키를 입력해주시면 됩니다.

  • kakao_scheme 는 네이티브 키 앞에 ‘kakao’ 를 붙여주시면 됩니다.


5. Manifests

메니페스트

  • Manifests 에서 카카오 링크를 통해 시작될 Activity 를 지정해줍니다. 예를 들어 제가 보낸 링크를 누를 때 어플리케이션이 시작된다면 시작되는 Activity 를 지정해줍니다.

  • 두 번째로 meta-data 에서 카카오 sdk 에 접근 할 때 사용할 App key 를 지정해줍니다.


2-3 카카오 링크 구현

  • 이제 카카오 링크를 통해 메시지를 전달해보도록 하겠습니다.

  • 예제에서는 간단히 텍스트만 보냈지만 카카오 링크에서는 커스텀 템플릿 뿐만 아니라 아래와 같은 다양한 템플릿을 제공합니다.

카카오 링크

  • 먼저 카카오 링크를 실행 시킬 버튼을 만들겠습니다.

activitiy_main.xml

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.example.charlie.kakaolinktest.MainActivity"
    tools:showIn="@layout/activity_main">

    <Button
        android:id="@+id/kakaoLinkBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="KAKAO LINK"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>


  • 다음으로 버튼을 눌렀을 때 카카오 링크를 구현해보도록 하겠습니다.

MainActivitiy.java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        Button kakaoLinkBtn = (Button) findViewById(R.id.kakaoLinkBtn);

        kakaoLinkBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    KakaoLink kakaoLink = KakaoLink.getKakaoLink(getApplicationContext());
                    KakaoTalkLinkMessageBuilder messageBuilder = kakaoLink.createKakaoTalkLinkMessageBuilder();
                    messageBuilder.addText("카카오톡으로 공유해요.");
                    kakaoLink.sendMessage(messageBuilder,getApplicationContext());
                } catch (KakaoParameterException e) {
                    e.printStackTrace();
                }
            }
        });

    }

}
  • messageBuilder.addText(String message); 메서드를 통해 전달할 메시지를 작성할 수 있습니다.

공유 결과

여기까지 카카오 링크 API 를 통해 간단한 메시지 보내기를 구현해보았습니다.

좀더 자세한 설명은 Kakao Developers 를 참고해주세요.


3. Source Code

전체 소스 코드는 Github 에 연동해놨습니다.