[ 개발일지 ] 카카오 맵 API연동하는 방법
안녕하세요 :D
중소기업형 ERP 개발하려는 조각모음입니다.
일단 갓카오에서 뭐라고 시켰는지 보자.
https://apis.map.kakao.com/android/guide/
카카오에서는 이렇게 친절하게 어떻게 연동하는지 알려주신다.
그래도 모를 사람이 있기 때문에 설명을 해보자.
우선 키 해시라는걸 내놓아라 라고 얘기한다.
key hash에 대한 개념은 구글링하면
설명을 잘해놓으신 분들이 있으니 참고하기로 하자.
그 것도 귀찮으신 분을 위한 링크.
https://manorgass.tistory.com/76
Android :: 해시키, 키해시(Key Hash)의 개념과 활용 / 생성방법
외부 API를 사용하는 경우 일반적으로 Key Hash 값을 통해 사용자를 인증합니다. 여기서 해시란 무엇이고, 안드로이드 개발 시 키 해시를 얻는 방법과 그 활용법에 대해 설명합니다. #1> Hash Key란? 오
manorgass.tistory.com
많은 방법이 있는데 작성자는
코드로 얻는 것을 선호한다.
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");
md.update(signature.toByteArray());
Log.d("KeyHash", Base64.encodeToString(md.digest(), Base64.DEFAULT));
} catch (NoSuchAlgorithmException e) {
Log.e("KeyHash", "Unable to get MessageDigest. signature=" + signature, e);
}
}
}
출처 : lakue 님의 티스토리
위코드를 실행하면, key hash가 출력된다.
복사해두자.
key hash를 얻었다면 이제 kakao developers로 이동해보자.
개발자 계정 등록하고 어플리케이션 등록하는 부분까지는
어려울 것이 없으니 생략하고,
내 애플리케이션>앱설정>플랫폼으로 가면
이렇게 안드로이드를 등록할 수 있다.
나는 미리 등록해놔서 정보를 가려놨다.
패키지명은 어플리케이션에 있는
패키지를 작성해주면 되겠다.
manifest에 가던지, 개발중인 아무 java 파일에 가면
맨 위에 패키지 이름이 있으니 그냥 복사
마켓 URL은, 실제로 마켓에 등록했다면 실제 등록한 URL을,
작성자처럼 개발중이라면 그냥 '없음'을 선택하면 된다.
키해시에는 아까 위에서 열심히 얻은 keyhash를 입력해준다.
그리고 저장하면 된다.
이제 내 애플리케이션>앱설정>앱 키로 이동해보자
이렇게 되어있는 것을 볼 수있다.
앱키에 해당하는 부분이 다 채워져있을 것이다.
필요한건 네이티브 앱 키니까,
저걸 복사하자.
옆에 버튼 누르면 간단하게 복사가 된다.
여기까지 오면 디벨로퍼스에서 해야할 사전작업은 끝난다.
복사한거 까먹기 전에 먼저 붙여넣고 나머지 과정을 진행해보자.
나머지 과정 첫번째, 퍼미션.
AndroidManifest.xml을 찾아서 들어가면 된다.
빨간색 박스가 퍼미션을 설정해주는 부분이다.
이 중에서 지도api와 관련된 부분은
2번째 퍼미션을 제외하고 전부이다.
외부와 통신을 하는경우, 카메라를 사용하는경우,
저장장치를 사용하는 경우 등
대다수의 기능을 구현할 때 여기서
퍼미션을 선언해주어야 한다.
특별한 건 없지만 선언된 위치를 잘 기억하자.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
노란색박스는 안드로이드에서
http로 인터넷 접속을 가능하게 해주는 옵션이다.
카카오 지도 api가 기본적으로
http통신을 한다고 하니 꼭 설정해주자.
안 해주면 접속도 안 된다.
어플리케이션 설정으로 잡아주면 된다.
이런 권한이나 설정 선언할 때는 언제나 위치를 잘 기억해야한다.
android:usesCleartextTraffic="true"
파란색 박스는 meta-data를 추가해주는 부분이다.
meta-data는 <application> 내부에 선언해주어야한다.
이 역시 위치를 잘 살피자.
(밖에 선언하면 당연히 동작하지 않는다.)
흰색 박스로 처리한 부분이 발급받은
네이티브 키값을 넣는 부분이다.
(아까 복사한 값을 집어넣으면 된다.)
이제 진짜로 카카오에서 시키는대로 해보자.
나머지 과정 두번째, SDK.
우선 처음에 접속했던 카카오 가이드에서 SDK를 내려받자.
libDaumMapAndroid.jar 파일은 프로젝트 내부의
..\app\libs에 복사하고,
jniLibs 폴더는 실제 소스가 있는 디렉토리에 복사한다.
(내 경우는main이었기때문에 아래와 같다.)
안드로이드 스튜디오에서 확인하면 다음과 같이 뜰 것이다.
이제 jar파일을 implementatin 할 차례.
이렇게 Dependencies에서 implementation을 안하면
(당연히...)적용이 안 된다.
참, 맵 뷰 Import할 때
이걸로 해야한다.
이제 카카오 지도를 사용할 수 있게 되었다.
이제 실행시키면,
앱이 터질 것이다.
???
알고보니 AVD(가상 디바이스)에서는
카카오 맵을 쓸 수 없다고 한다.
카카오 맵을 활용해서 개발중이라면
실제 휴대폰에 USB디버깅해서 테스트 해야한다는 것이 결론!