0Pricing
Android Academy · 강의

작업과 딥 링크

버튼을 추가하고 알맞은 화면을 열어 보세요.

작업과 딥 링크은(는) CoddyKit의 무료 Android Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Android Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Android Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

작업과 딥 링크

알림은 무언가를 수행할 때 유용해집니다. 알림을 탭하면 올바른 화면이 열리고, 작업 버튼은 빠른 작업을 수행해야 합니다. 이 두 기능 모두 PendingIntent를 사용합니다.

PendingIntent란 무엇인가요

PendingIntent는 시스템에 전달하는 토큰으로, 나중에 앱을 대신해 Intent를 실행할 수 있게 합니다. 앱이 실행 중이 아니어도 가능합니다. 알림에서는 이를 사용해 활동을 실행합니다.

콘텐츠 PendingIntent 만들기

열 화면을 위한 Intent를 만들고, 이를 PendingIntent로 감싼 다음 setContentIntent로 연결하면 탭할 때 해당 화면이 열립니다.

val intent = Intent(context, MainActivity::class.java)
val pending = PendingIntent.getActivity(
    context, 0, intent,
    PendingIntent.FLAG_IMMUTABLE
)
builder.setContentIntent(pending).setAutoCancel(true)

변경 가능성 플래그

Android 12부터는 PendingIntent에 FLAG_IMMUTABLE 또는 FLAG_MUTABLE을 지정해야 합니다. 시스템이 데이터를 채워 넣어야 하는 경우(일부 답장 기능 등)가 아니라면 FLAG_IMMUTABLE을 우선 사용하세요.

작업 버튼 추가

아이콘, 라벨, PendingIntent와 함께 addAction을 사용하면 알림에 탭할 수 있는 버튼을 추가할 수 있습니다. 예를 들어 "답장"이나 "읽음으로 표시" 버튼을 만들 수 있습니다.

builder.addAction(
    R.drawable.ic_reply,
    "Reply",
    replyPendingIntent
)

작업이 구성 요소를 실행합니다

작업의 PendingIntent는 활동, 서비스 또는 BroadcastReceiver를 대상으로 지정할 수 있습니다. "읽음으로 표시" 버튼은 화면을 열지 않고도 작동하도록 수신기를 대상으로 지정하는 경우가 많습니다.

val markIntent = Intent(context, MarkReadReceiver::class.java)
val markPending = PendingIntent.getBroadcast(
    context, 0, markIntent, PendingIntent.FLAG_IMMUTABLE
)

화면으로 딥 링크 연결하기

딥 링크는 앱의 홈 화면이 아니라 앱 내부의 특정 목적지를 엽니다. Navigation Compose를 사용하면 정확한 경로로 이동하는 PendingIntent를 만들 수 있습니다.

딥 링크 PendingIntent 만들기

Navigation 구성 요소는 NavDeepLinkBuilder(또는 URI를 사용하는 딥 링크 Intent)를 제공하므로, 목적지와 인수를 대상으로 하는 PendingIntent를 만들 수 있습니다.

val deepLinkPending = NavDeepLinkBuilder(context)
    .setGraph(R.navigation.nav_graph)
    .setDestination(R.id.chatScreen)
    .setArguments(bundleOf("chatId" to "42"))
    .createPendingIntent()

URI 기반 딥 링크

탐색 그래프에 URI 패턴을 등록하고 해당 Uri를 사용하는 Intent를 만들 수도 있습니다. 그러면 알림을 탭할 때 일치하는 화면으로 바로 이동합니다.

val intent = Intent(
    Intent.ACTION_VIEW,
    "myapp://chat/42".toUri(),
    context, MainActivity::class.java
)

백 스택 유지하기

딥 링크를 사용할 때는 뒤로 가기를 누르면 앱이 종료되는 대신 상위 화면으로 돌아가도록 합리적인 백 스택을 구성해야 합니다. TaskStackBuilder 또는 탐색 딥 링크 빌더가 이를 처리합니다.

고유한 요청 코드

서로 다른 여러 PendingIntent를 만들 경우 각각에 서로 다른 요청 코드(두 번째 인수)를 지정하세요. 동일한 코드와 동일한 인텐트를 사용하면 같은 PendingIntent로 처리됩니다.

빠른 확인

작업과 딥 링크에 대한 이해도를 확인해 보세요.

복습

상호작용 기능을 추가했습니다.

  • PendingIntent를 사용하면 시스템이 앱을 대신해 작업할 수 있습니다. FLAG_IMMUTABLE을 사용하세요.
  • setContentIntent는 탭 동작을 정의합니다.
  • addAction은 활동, 서비스 또는 수신기를 대상으로 하는 버튼을 추가합니다.
  • 딥 링크는 백 스택을 유지하면서 정확한 화면을 엽니다.

다음 주제: 알림 런타임 권한입니다.

자주 묻는 질문

“작업과 딥 링크” 강의는 무료인가요?

네 — “작업과 딥 링크” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Android Academy 강의 전체를 잠금 해제할 수 있습니다. Android Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“작업과 딥 링크”에서 뭘 배우나요?

버튼을 추가하고 알맞은 화면을 열어 보세요. 브라우저에서 직접 실행하는 실습 코드로 Android Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Android Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Android Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“작업과 딥 링크” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Android Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Android Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 알림 채널
  2. 알림 만들기
  3. 작업과 딥 링크
  4. 알림 실행 중 권한
← Android Academy(으)로 돌아가기