이번 포스팅에서는 카톡으로 메시지를 보내는 방법을 적어보도록 하겠습니다.
카톡으로 메시지를 보내기 위해서 카카오톡은 두가지 형태의 API를 제공합니다.
하나는 카카오링크API이고 하나는 카카오톡 메시지 API입니다.
두 API의 차이점은 다음과 같습니다. (developers.kakao.com 참조)
설명 | 카카오링크 API | 카카오톡 메시지 API |
카카오톡 친구 목록 페이지 | 카카오톡 앱에서 카카오톡 친구 목록 이용 | 친구 목록 가져오기 API를 사용해 자체 구현 |
메시지 전송이 가능한 친구의 범위 | 카카오톡의 모든 친구 | 친구 목록 가져오기 API의 정보 제공 조건에 맞는 친구 |
카카오톡 앱으로 이동해 메시지 전송 | O | X |
메시지 전송 요청 실행 | 카카오톡 | 서비스 클라이언트 또는 서버 |
사용 신청 및 검수 | X | O |
REST API 지원 | X | O |
메시지 전송 성공 여부 확인 | 카카오링크 전송 성공 알림 받기 기능을 사용해 자체 구현 | API 응답으로 확인 |
카카오톡 메시지 API 경우 카톡 설치 유무와 관계없이 서버에 직접 API를 날리는 방식이라 친구 목록 가져오기 등을 직접 구현해야 합니다.
반면 카카오링크 API는 모바일에 설치된 카톡을 통해서 전송하기 때문에 친구 목록 등을 카톡 앱에서 바로 선택 할 수 있습니다.
그리고 기본 템플릿도 제공하고 커스텀도 할 수 있어서 상황에 맞게 디자인 할 수 있지만 메시지가 200byte를 넘으면 글자가 짤리게 됩니다.
그래서 오늘의 명언에서는 카카오톡 메시지 API를 사용하자니 일이 많아지고 카카오링크 API를 사용하자니 본문 내용이 짤리고 해서 그냥 속편하게 Intent을 이용해서 카카오톡 앱을 호출하고 여기에 String을 넘겨주는 식으로 처리했습니다. 그러면 사용자는 카카오톡 앱에서 발송대상을 선택하면 넘겨받은 String값을 바로 보낼 수 있는거죠.
이 방법은 다른 앱들을 호출할때 (전화번호부, 메일 등등) 아주 흔하게 사용되는 방법이니 별로 새로울 것도 없겠죠
오늘의 명언에서는 본문에 표시된 카톡 버튼(FloatingActionButton)을 호출하면 아래와 같이 카톡 앱을 호출합니다.
소스는 아주 간단합니다.
FloatingActionButton fab = view.findViewById(R.id.fabsaying);
fab.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
String context;
context = "< 세계의 명언 >\n\n";
context += sayingListInfo.get(i-1).sayingInfo[k].context;
context += "\n\n";
context += "- " + sayingListInfo.get(i-1).sayingInfo[k].writer+" -";
context += "\n\n";
context += getContext().getString(R.string.store_url);
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("text/html");
sharingIntent.putExtra(Intent.EXTRA_TEXT, context);
sharingIntent.setPackage("com.kakao.talk");
startActivity(sharingIntent);
}
});
FloatingActionButton 버튼을 정의하고 버튼 클릭 이벤트에 전송할 메시지를 String 변수(위 소스에서 context)에 저장하고 Intent를 Intent.ACTION_SEND로 선언합니다.
여기에 타입은 "text/html"로 하고
sharingIntent.setPackage("com.kakao.talk"); 에서 카카오톡을 지정합니다.
그리고 startActivity(sharingIntent); 를 하면 끝이죠
여기서 하나 빠진것은 카톡이 설치되어있는지 아닌지 검사하는 부분인데 카톡이 설치되지 않은 모바일에서는 에러를 발생합니다.
그 에러처리는 좀 나중에 하려고 했는데 아직 손을 못데고 있다는... ㅜㅜ (실은 손볼곳이 한두군데가 아니라... )
암튼 앱이 궁금하신 분은 아래 링크로 들어가시면 다운받을 수 있으시니 한번 다운받아서 설치해보시고 리뷰 남겨주시면 감사하겠습니다. ^^;;;
https://play.google.com/store/apps/details?id=com.withu.todayssaying
'안드로이드스튜디오 개발' 카테고리의 다른 글
[안드로이드 스튜디오] 오늘의 명언 - assets에 등록된 DB파일을 내부저장소로 복사하기 (0) | 2021.05.12 |
---|---|
[안드로이드 스튜디오] 오늘의 명언 - 애니메이션 효과 (회전, 나타나기, 사라지기 등) (0) | 2021.05.10 |
[안드로이드 스튜디오] 오늘의 명언 - 인트로화면에 애니메이션 효과주기 (0) | 2021.05.07 |
[안드로이드 스튜디오] 오늘의 명언 - 툴바 아이콘 색상바꾸기 (2) | 2021.05.07 |
[안드로이드 스튜디오]앱 출시 소식 - 오늘의 명언(명언, 고사성어, 속담) (0) | 2021.05.06 |
댓글