라바 세마리

카카오톡 메시지 전송 api (카카오 링크) 본문

개발일기

카카오톡 메시지 전송 api (카카오 링크)

3larvas 2020. 8. 15. 23:08

 2017. 1. 8. 에 작성된 글입니다.

카카오톡 api는 어떤게 있나.... 하면서 카카오톡 개발자 홈페이지에 들어갔었다.
근데 설명이 너무 친절하게 되어있어서
그자리에서 바로 카카오톡 메시지 보내는 api 기능 테스트를 성공했다.

순서는 다음과 같다.
1. 개발자 등록
2. gradle 설정
3. kakaoLink 객체생성

1. 개발자 등록

따로 설명할 것은 딱히 없다.
https://developer.kakao.com/
카카오 개발자 홈페이지에 들어가서 본인이 가지고 있는 카카오계정으로 로그인하고 개발자 등록을 해주면 된다.
등록을 마치면 어플리케이션을 등록하라고 하는데 앱 이름을 입력하고 앱만들기 버튼을 클릭한다.

그러면 다음과 같은 화면이 나온다.

이 중에 네이티브 앱 키만 사용하게 될것이다.

2. 이제 안드로이드 스튜디오에 돌아와 gradle 설정을 해주면 된다.

카카오 개발자 페이지에서 설명이 매우 친절했지만 나는 이 부분이 약간 했갈렸다.

제일먼저 프로젝트 value 폴더에 kakao_strings.xml 파일을 생성하고 아래의 내용을 붙여넣는다.

<resources>
    <string name="kakao_app_key">앱만들기 할 때 받은 네이티브 앱키</string>
    <string name="kakao_scheme">kakao + 앱만들기 할 때 받은 네이티브 앱키</string>
    <string name="kakaolink_host">kakaolink</string>
</resources>

gradle.builde(project)로 가서 아래의 부분을 수정해준다.

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

이번에는 build.gradle(module) 파일로가서 아래 내용을 파일의 맨 아래에 추가한다.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile group: project.KAKAO_SDK_GROUP, name: 'kakaolink', version: project.KAKAO_SDK_VERSION
}

그리고 gradle.properties 파일의 마지막에 아래내용을 추가한다.

KAKAO_SDK_GROUP=com.kakao.sdk
KAKAO_SDK_VERSION=1.1.7

마지막으로 안드로이드 매니패스트 파일로 들어가서 다음과 같이 설정한다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.weathertest">

    <uses-permission android:name="android.permission.INTERNET" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />

                <data android:scheme="@string/kakao_scheme"
                    android:host="@string/kakaolink_host" />
            </intent-filter>
        </activity>
        <meta-data
            android:name="com.kakao.sdk.AppKey"
            android:value="@string/kakao_app_key" />
    </application>

</manifest>

3. kakaoLink 객체생성

이제 카카오 링크 객체를 사용할 모든 준비가 끝났다.
MainActivity.java 에서

 public KakaoLink kakaoLink;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        try {
            kakaoLink = KakaoLink.getKakaoLink(MainActivity.this);
        } catch (KakaoParameterException e) {
            e.printStackTrace();
        }
}

다음과 같이 링크 객체를 선언 해준 다음에

 @Override
    public void onClick(View v) {
        switch(v.getId())
        {
            case R.id.button :
                weatherData.clear();
                thread = new MakeListThread();
                thread.start();
                try {
                    thread.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                weatherData = thread.getWeatherData();
                String s = weatherData.toString();
                textView.setText(s);

                final KakaoTalkLinkMessageBuilder kakaoTalkLinkMessageBuilder
                        = kakaoLink.createKakaoTalkLinkMessageBuilder();
               try {
                    kakaoTalkLinkMessageBuilder.addText(s);//링크 객체에 날씨정보가 담긴 문자 넣기
                } catch (KakaoParameterException e) {
                    e.printStackTrace();
                }
                try {
                    kakaoLink.sendMessage(kakaoTalkLinkMessageBuilder, this);// 메시지 전송
                } catch (KakaoParameterException e) {
                    e.printStackTrace();
                }
                break;
        }
    }

버튼이 클릭 되면 전송할 텍스트를 링크 객체에 집어넣고 전송하는 부분이다.

메시지를 전송하게되면 카카오톡으로 화면이 전환된다.
그리고  메시지를 보낼 사람을 선택하면 링크 객체에 넣어뒀던 메시지가 전송된다.

ㅁ느낀점
생각보다....너무 간단햇다
너무 친절하신 카카오 개발팀 덕분에 완료일정이 앞당겨질수 있을것 같다!!