일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- prolificinteractive/material-calendarview
- addTextChangedListner
- calendar
- springboot
- viewmodel
- DialogFragment
- podinit
- editText
- Dialog
- cocoapod
- PostgreSQL
- android
- 리눅스
- Button
- RestAPI
- backgroundTint
- livedata
- Today
- Total
코코딩딩
[안드로이드/android] 카카오api 카카오링크(v2-link) 메세지 전송 본문
안드로이드 앱에서 카카오로 초대메세지와 같은 메세지를 보내는 방법을 검색하면 많은 예제들이 예전api 기능 들을 사용하고 있어 검색하는데 애를 먹었다.
카카오는 문서가 잘 되어 있지만 코틀린으로 작성되어 있어 자바코드로 변환을 하려면 또 검색을 해야 한다는 단점이 있었다. 많은 안드로이드 자료들이 코틀린으로 되어 있기 때문에 적절하게 자바로 변환하는 연습도 필요할 것 같다.
카카오 api를 이용하기 위한 절차들이 있는데 공식 문서에 자세히 설명이 되어 있다.
gradle
settings.gradle에 주소를 추가해준다.
maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
build.gradle에 카카오 링크 라이브러리를 추가해준다.
implementation "com.kakao.sdk:v2-link:2.9.0"
플랫폼 등록하기
카카오 디벨로퍼스 페이지에 로그인을 한 후 내 애플리케이션에 들어가서 애플리케이션 추가하기 버튼을 누른다.
정보를 입력한 후 네이티브 앱 키를 확인해준다.
또한 플랫폼 탭에 들어가 안드로이드를 추가해주고 자신의 패키지명과 같게 설정한 후 해쉬값을 입력하는데
해쉬값은 Log.d("key::", "::::::: "+ Utility.INSTANCE.getKeyHash(this)); 를 이용해 확인한 후 추가해준다.
인터넷 사용권한 설정
<uses-permission android:name="android.permission.INTERNET" />
custom url 스킴 설정하기
먼저 res 에 있는 values 폴더에 kakao_string.xml 파일을 만들어 주었다.
<?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>
그리고 manifests에 들어가 다음과 같이 추가 해준다.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.kakaolink">
<uses-permission android:name="android.permission.INTERNET" />
<application
// 이부분추가
android:usesCleartextTraffic="true"
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/Theme.KakaoLink">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
// 이부분 추가 시작
<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>
<meta-data
android:name="com.kakao.sdk.AppKey"
android:value="@string/kakao_app_key" />
// 이부분 추가 끝
</activity>
</application>
</manifest>
메세지 보내는 코드 작성
MainActivity에 버튼을 누르면 메세지를 보내는 창이 뜨도록 구현한다.
public class MainActivity extends AppCompatActivity {
Button button;
Button button2;
Button button3;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Log.d("key::", "::::::: "+ Utility.INSTANCE.getKeyHash(this));
KakaoSdk.init(this, "네이티브키");
context = this;
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
KakaoLink(context);
}
});
}
// 카카오링크 메서드
public void KakaoLink(Context context) {
// 원하는 메세지 형태의 template 생성
TextTemplate textTemplate = new TextTemplate("원하는 메세지 test",new Link("https://www.daum.net","https://m.daum.net/"));
// 코드 시작
// 카카오톡 설치여부 확인
if(LinkClient.getInstance().isKakaoLinkAvailable(context)){
LinkClient.getInstance().defaultTemplate(context, textTemplate,null,new Function2<LinkResult, Throwable, Unit>() {
@Override
public Unit invoke(LinkResult linkResult, Throwable throwable) {
if (throwable != null) {
Log.e("TAG", "카카오링크 보내기 실패", throwable);
}
else if (linkResult != null) {
context.startActivity(linkResult.getIntent());
// 카카오링크 보내기에 성공했지만 아래 경고 메시지가 존재할 경우 일부 컨텐츠가 정상 동작하지 않을 수 있습니다.
Log.w("TAG", "Warning Msg: "+ linkResult.getWarningMsg());
Log.w("TAG", "Argument Msg: "+ linkResult.getArgumentMsg());
}
return null;
}
});
}else{
//카카오톡 미설치 시 웹으로 실행
Uri sharerUrl = WebSharerClient.getInstance().defaultTemplateUri(textTemplate);
try {
KakaoCustomTabsClient.INSTANCE.openWithDefault(context,sharerUrl);
} catch (UnsupportedOperationException e) {
e.printStackTrace();
}
}
}
// 카카오링크 메서드 끝
}
위에 입력한 daum의 링크가 뜰것으로 기대했지만 실제로는 뜨지 않아 해결방법을 찾는중이다.
'일단기록 > 매일기록' 카테고리의 다른 글
[안드로이드/android] recyclerview 접기,펼치기(아코디언) (0) | 2022.05.02 |
---|---|
[안드로이드/android] recyclerView (0) | 2022.04.28 |
[안드로이드/android] customdialog, timepicker (0) | 2022.04.26 |
[리눅스] tomcat, apache 설치하기 (0) | 2022.04.25 |
[리눅스] tomcat service 등록하기 (0) | 2022.04.22 |