카카오링크는 2018년 6월 1일부로 정책이 바뀌어 새로운 카카오링크 ver2로 개발을 진행해야 한다.
블로그를 찾아봤지만 카카오링크 ver2에 대해 자세하게 나와있지 않아 처음부터 차근차근 정리해보자!
Step1. 앱 생성
https://developers.kakao.com/docs/android/getting-started#%EC%95%B1-%EC%83%9D%EC%84%B1
Kakao Developers_
더 나은 세상을 꿈꾸고 그것을 현실로 만드는 이를 위하여 카카오에서 앱 개발 플랫폼 서비스를 시작합니다.
developers.kakao.com
해당 사이트에 접속하여서 다음과 같은 순서대로 실행한다.
1. 내 애플리케이션 > 앱 만들기를 통해 앱을 생성합니다.
2. app > resource > value 폴더에 kakao_strings.xml 파일을 생성한다.
해당 파일에 위의 1의 과정을 끝나고 뜨는 완료 화면에서 첫번째 줄인 네이티브 앱키를 kakao_strings.xml 파일에 네이티브 앱키 들어갈 자리에 복사해서 넣는다.
kakao_scheme의 경우 앞에 "kakao"글자를 넣고 네이티브 앱키를 붙여넣는다.
kakaoliank_host는 모두 동일하게 kakaolink라고 넣으면 된다.
1
2
3
4
5
6
|
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name = "kakao_app_key">네이티브 앱키 들어갈 자리</string>
<string name ="kakao_scheme">kakao네이티브 앱 키 들어갈 자리</string>
<string name="kakaolink_host">kakaolink</string>
</resources>
|
3. 서버와의 통신을 위해 netwrok 권한을 설정한다.
3.1 통신을 허용하기 위해서 <uses-permission android:name="android.permission.INTERNET" />를 위쪽에 선언해준다.
3.2
activity_main.xml에 카카오링크를 연결하는 버튼을 만든다면 다음 코드와 같이 <activity android:name=".MainActivity> 부분에 다음의 소스코드를 붙혀 넣는다.
만약에 메인페이지가 아닌 다른 페이지에 카카오링크 버튼을 만든다면 해당 하는 페이지의 java가 선언되어있는 부분에 붙혀 넣으면 된다.
<intent-filter>
<action android:name="android:intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/kakao_scheme"
android:host="@string/kakaolink_host"/>
</intent-filter>
3.3 meta 데이터는 알아 보기 쉽게 모든 application 태그가 닫히기 직전에 선언해준다. 만약에 페이지가 여러개 라고 해도 그냥 application 태그가 닫히기 바로 위에 붙혀도 오류가 나지 않는다.
<meta-data
android:name="com.kakao.sdk.AppKey"
android:value="@string/kakao_app_key" />
3.4 전체 AndroidMainfest.xml 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<?xml version="1.0" encoding="utf-8"?>
package="com.example.myapplication">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<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>
|
s |
4. 키해시 등록
카카오 링크 정책이 바뀌어서 키 해쉬값을 필수적으로 입력해주어야한다.
내애플리케이션 > (해당 애플리케이션 선택) > 설정 > 일반 에서 키해시값을 입력해주어야 한다.
키해시를 알아내는 방법은 여러개가 있지만 제일 간단한 방법을 소개하고자 한다.
헷갈리지 않게 새로운 안드로이드 프로젝트를 아무거나 생성한 Mainactivity.java에 다음 소스코드를 붙혀넣는다.
Mainactivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
package com.example.myapplication;
import android.os.Bundle;
import android.util.Base64;
import android.util.Log;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getHashKey();
}
private void getHashKey(){
PackageInfo packageInfo = null;
try {
packageInfo = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
if (packageInfo == null)
Log.e("KeyHash", "KeyHash:null");
for (Signature signature : packageInfo.signatures) {
try {
MessageDigest md = MessageDigest.getInstance("SHA");
Log.d("KeyHash", Base64.encodeToString(md.digest(), Base64.DEFAULT));
} catch (NoSuchAlgorithmException e) {
Log.e("KeyHash", "Unable to get MessageDigest. signature=" + signature, e);
}
}
}
}
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |
이후 Android studio의 아래쪽에 logcat 부분에서 ctrl+f 를 누른후 KeyHash를 입력해서 찾으면 KeyHash값을 구할 수 있다.
Step2. Gradle 수정하기.
1. build.gradle(Project) 수정하기
build.gradle(Project:My application)에 해당 코드를 추가한다.
1
2
3
4
5
6
|
subprojects {
repositories {
mavenCentral()
maven { url 'http://devrepo.kakao.com:8088/nexus/content/groups/public' }
}
}
|
2. build.gradle(Module: app)에 해당 코드를 추가한다.
1
2
3
|
dependencies {
implementation group: 'com.kakao.sdk', name: 'kakaolink', version:project.KAKAO_SDK_VERSION
}
|
3. gradle.properties에 해당 코드를 추가한다.
1
2
|
#KAKAO_SDK_VERSION=1.1.28
KAKAO_SDK_VERSION=1.12.0
|
Step3. 카카오링크 버튼 만들기
버튼을 눌렀을때 카카오링크가 전송 될 수 있도록 xml 파일에 버튼을 만들어준다.
원하는 xml파일에 9번라인부터 14번라인까지 붙혀넣으면 된다.
원하는xml파일.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<?xml version="1.0" encoding="utf-8"?>
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"
tools:context=".MainActivity">
<Button
android:id="@+id/share_lit"
android:layout_width="150dp"
android:layout_height="70dp"
android:onClick="btnClick"
android:text="카카오톡 공유하기" />
</LinearLayout>
|
여기서 중요한 것은 android:onClick="btnClick"
해당 명령어를 통해서 버튼을 클릭하면 해당 xml파일의 java파일에서 btnClick함수를 실행한다.

Step4. 버튼을 만든 xml에 해당하는 java파일 수정
4.1 import 헤더
카카오 링크 ver1과 카카오링크 ver2의 import가 다르기 때문에 잘 확인해야한다.
만약 FeedTemplate이나 LinkObect등에서 빨간줄이 쳐진다면 kakao api에 제대로 연결되지 않은것임으로 앞에 과정에서 오류가 있는 것이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
package com.example.myapplication;
import android.os.Bundle;
import android.view.View;
import com.example.myapplication.R;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void btnClick(View view){
FeedTemplate params = FeedTemplate
.newBuilder(ContentObject.newBuilder("동행_지하철어플리케이션",
LinkObject.newBuilder().setWebUrl("https://developers.kakao.com")
.setMobileWebUrl("https://developers.kakao.com").build())
.setDescrption("목적지에 후 도착합니다.")
.build())
.addButton(new ButtonObject("웹에서 보기", LinkObject.newBuilder().setWebUrl("https://developers.kakao.com").setMobileWebUrl("https://developers.kakao.com").build()))
.addButton(new ButtonObject("앱에서 보기", LinkObject.newBuilder()
.setWebUrl("https://developers.kakao.com")
.setMobileWebUrl("https://developers.kakao.com")
.setAndroidExecutionParams("key1=value1")
.setIosExecutionParams("key1=value1")
.build()))
.build();
Map<String, String> serverCallbackArgs = new HashMap<String, String>();
KakaoLinkService.getInstance().sendDefault(this, params, new ResponseCallback <KakaoLinkResponse>() {
@Override
public void onFailure(ErrorResult errorResult) {}
@Override
public void onSuccess(KakaoLinkResponse result) {
}
});
}
}
|

카카오링크가 실행됐을때 결과화면은 다음과 같이 나온다.
plus. 동적 메시지 만들기
위의 메시지처럼 변수값을 이용해서 동적인 카카오링크를 만들어보자
1. 변수 선언 하기
btnClick 안에 사용하려는 변수를 선언한다. setDesrption에는 string 형태만 들어 갈 수 있음으로 만약 숫자 형식의 변수라면 다음과 같이 string 형식으로 바꾸어줘야한다.
여기서 routeStntime은 해당 java파일에서 시간 값을 저장해 놓은 숫자형 변수이다.
1
2
3
|
public void btnClick(View view){
String timestring = getIntent().getStringExtra("routeStntime");
|
2. setDescrption 수정하기
setDesrcption 부분에 위에 선언한 string변수를 문자들과 +로 연결하여 사용한다.
1
|
.setDescrption("목적지에 " + timestring + " 후 도착예정입니다.")
|
Kakao Developers_
더 나은 세상을 꿈꾸고 그것을 현실로 만드는 이를 위하여 카카오에서 앱 개발 플랫폼 서비스를 시작합니다.
developers.kakao.com
'AndroidStudio' 카테고리의 다른 글
[Android Studio] TableLayout을 이용해 원형 메뉴 만들기 (0) | 2019.12.02 |
---|
최근댓글