자바 안드로이드 앱개발 강좌, 카카오톡 알림 만들기

본 강좌에서는 Java를 활용하여 안드로이드 앱을 개발하며, 카카오톡 알림을 보내는 기능을 구현할 것입니다.
카카오톡 API를 활용하여 사용자에게 특정 이벤트 발생 시 알림을 전송하는 기능을 complete할 예정입니다.
이 과정에서는 Android Studio를 기준으로 설명하며, 기본적인 안드로이드 개발 지식이 요구됩니다.

사전 준비 사항

  • Java 및 안드로이드 SDK 설치 및 설정
  • Android Studio 설치
  • 카카오톡 개발자 계정 및 앱 생성
  • API Key 및 Secret Key 확인

1. Android Studio 프로젝트 설정

Android Studio를 열고 새로운 프로젝트를 생성합니다. “Empty Activity”를 선택하고 기본 설정을 완료한 후 프로젝트를 생성합니다.

1.1 Gradle 설정

다음으로, app 모듈의 build.gradle 파일을 열고 필요한 라이브러리를 추가합니다. 카카오톡 API를 이용하기 위해서는 Retrofit2와 Gson을 사용할 것입니다.

dependencies {
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
}

2. 카카오톡 API 연동

카카오톡 개발자 센터에서 애플리케이션을 생성하고, API Key를 확인합니다. 이 키는 향후 API 호출 시 필요합니다.

2.1 Retrofit 설정

Retrofit을 사용하여 API를 통신하기 위한 설정을 추가합니다. Retrofit 인스턴스를 생성하고, 필요한 API 인터페이스를 구성합니다.

public interface KakaoApi {
    @FormUrlEncoded
    @POST("/v2/api/talk/memo/default/send")
    Call sendMessage(@Header("Authorization") String token,
                                    @Field("template_object") String templateObject);
}

2.2 API 호출을 위한 메서드 구현

카카오톡 API를 호출하여 메세지를 전달하는 메서드를 구현합니다. 발신자를 인증하기 위해 OAuth 인증이 필요합니다.

public class KakaoService {
    private static final String BASE_URL = "https://kapi.kakao.com";
    private KakaoApi kakaoApi;

    public KakaoService() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        kakaoApi = retrofit.create(KakaoApi.class);
    }

    public void sendKakaoTalk(String accessToken, String message) {
        String jsonTemplate = "{\"object_type\":\"text\",\"text\":\"" + message + "\"}";
        Call call = kakaoApi.sendMessage("Bearer " + accessToken, jsonTemplate);
        call.enqueue(new Callback() {
            @Override
            public void onResponse(Call call, Response response) {
                if (response.isSuccessful()) {
                    Log.d("KakaoTalk", "메시지 전송 성공");
                } else {
                    Log.d("KakaoTalk", "메시지 전송 실패: " + response.message());
                }
            }

            @Override
            public void onFailure(Call call, Throwable t) {
                Log.d("KakaoTalk", "에러 발생: " + t.getMessage());
            }
        });
    }
}

3. 사용자 인터페이스 구현

사용자에게 입력을 받을 수 있는 간단한 UI를 만듭니다. EditText와 Button을 사용하여 메시지를 입력 받고 전송할 수 있는 기능을 구현합니다.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <EditText
        android:id="@+id/messageInput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="메시지를 입력하세요"/>

    <Button
        android:id="@+id/sendButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="발송"/>

</LinearLayout>

3.1 Activity에서 UI와 연결

UI 요소를 Activity와 연결하여 버튼 클릭 시 카카오톡 메시지를 전송하도록 합니다.

public class MainActivity extends AppCompatActivity {
    private KakaoService kakaoService;
    private EditText messageInput;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        messageInput = findViewById(R.id.messageInput);
        Button sendButton = findViewById(R.id.sendButton);
        kakaoService = new KakaoService();

        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = messageInput.getText().toString();
                String accessToken = "YOUR_ACCESS_TOKEN";  // 여기에 액세스 토큰을 입력하세요
                kakaoService.sendKakaoTalk(accessToken, message);
            }
        });
    }
}

4. 테스트 및 배포

앱을 실행하고 메시지를 입력한 뒤 ‘발송’ 버튼을 클릭하면 카카오톡으로 메시지가 전송되는지 확인합니다.
문제가 없다면, APK 파일로 배포하여 다른 기기에서도 사용할 수 있습니다.

이 강좌를 통해 카카오톡 API를 활용하여 안드로이드 앱에서 직접 알림을 보낼 수 있는 기능을 구현할 수 있었습니다.
향후 추가적인 기능으로는, 사용자의 폰 알림을 캐치하여 자동으로 카카오톡 메시지를 보내는 기능 등도 고려해 볼 수 있습니다.
이러한 기능들을 통해 더 많은 사용자와 소통하는 앱을 만들어 보세요!