Notice
Recent Posts
Recent Comments
Link
«   2026/01   »
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
Archives
Today
Total
관리 메뉴

choiminjun 블로그

PlayStore 앱 열기로 진입 시 Intent는 extras가 존재한다 본문

Android

PlayStore 앱 열기로 진입 시 Intent는 extras가 존재한다

mj010504 2025. 12. 22. 10:40

Android 앱 진입 방법에는 여러가지가 있다.

- 앱 아이콘 클릭

- 알림(notification)을 클릭

- PlayStore에서 앱 열기

- 홈 화면 위젯을 클릭

- 딥 링크

- 다른 앱에서의 호출

- 음성 명령을 통해 실행(ex) 빅스비, 구글 어시스턴트 등)

- 등등..

 

해당 방법들 모두 시스템에서 Intent를 사용하여 진입하게 됩니다. Intent는 앱의 컴포넌트(Activity, Service, BroadCast Receiver, Content Provider)간 커뮤니케이션을 위해 주로 사용되는 메시지 객체이다. Intent는 Android 시스템에서 각 앱들의 매니페스트(Manifest) 파일을 확인하여 적절한 컴포넌트(액티비티, 서비스 등)를 찾아 실행합니다. 

앱의 진입 방법이 다양하더라도 그 핵심 메커니즘은 동일하다. 모든 진입 경로가 Intent를 생성하고, 안드로이드 시스템이 매니페스트 파일을 바탕으로 해당 Intent를 처리할 수 있는 앱의 컴포넌트를 찾아 실행시키는 것입니다.

 

인텐트의 종류에는 명시적, 암시적 인텐트가 있는데 이 글에서는 설명이 길어질 수 있으므로 생략하겠습니다.

https://developer.android.com/guide/components/intents-filters?hl=ko

 

인텐트 및 인텐트 필터  |  App architecture  |  Android Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 인텐트 및 인텐트 필터 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Intent는 다른 앱 구성요소에서

developer.android.com

 

필자는 앱 아이콘 클릭, 알림을 통해 클릭해서 앱에 진입했을 때는 아무 문제가 없었지만 PlayStore에서 앱 열기를 통해 앱에 진입했을 때 Splash 화면에서 화면이 멈춰버리는 이슈가 발생했습니다. PlaStore에서 앱 열기를 통해 진입이 실패해버리면 앱을 처음 설치한 사용자가 앱을 설치하자마자 삭제할 수 있으므로 치명적인 오류였습니다.

 

저희 앱은 FCM Messaging을 통해 알림 기능을 사용하고 알림을 처리하기 위해 MainActivity에 다음과 같은 코드가 있었습니다.

if (intent.extras != null) { // 백그라운드 알림을 통해 앱에 진입시 로직
    handleNotificationIntent(intent)
} else { // 일반적인 앱 진입 시 로직
   ~~
}

 

제 코드는 intent.extras가 존재하는 경우, 무조건 알림에서 보낸 데이터라고 가정하고 처리하도록 되어 있었습니다. 하지만 Playstore 진입 시 발생하는 인텐트의 extras에는 알림과 다른 데이터가 포함되어 있었고, 이 때문에 원래는 알림과 관련된 데이터를 확인하여 이에 맞게 화면을 전환하도록 로직을 작성했지만, 알림과 관련된 데이터가 아니므로 화면 전환이 일어나지 않아 스플래시 화면에서 그대로 멈추게되었습니다.(참고로 스플래시 화면은 Custom Splash 화면을 Compose로 따로 만들었습니다)

 

따라서 저는 이러한 치명적인 오류를 최대한 빠르게 해결하기 위해 알림에만 존재하는 type 및 id 속성을 확인하여 진짜 알림일때만 알림을 처리하도록 했습니다. 빠르게 해결하기 위해 고안한 방법이라 완벽하지 않을 수 있을 것 같지만 당장의 오류는 해결했습니다. 중요한 부분은 제가 만든 handleNotificationIntent() 라는 함수는 알림 Intent일 때만 작동해야한다는 것입니다. 해당 오류를 해결하기 위해 더 좋은 방법들이 있을 수 있을 것 같은데요. 더 좋은 방법이 있다면 댓글 부탁드립니다!

if (intent.extras != null && intent.getStringExtra("type") != null && intent.getStringExtra("id") != null) { // 백그라운드 알림으로 앱에 진입
    handleNotificationIntent(intent)
} else { // 일반적인 앱 진입시 로직
    ~~
}

 

+ 추가

PlayStore에서 앱 진입시 발생하는 Intent에 extras가 존재한다는 사실은 로그를 통해 알게되었습니다. 해당 Intent가 어떻게 구성되어 있는지 알고 싶은데 관련된 문서를 찾기가 힘드네요.. 직접 로그를 찍어보는 수 밖에 없는데 PlayStore에 등록된 앱이다 보니 번거로워서 아직 시도해보지 않았습니다.

 

'Android' 카테고리의 다른 글

Edge-to-edge 공부  (0) 2025.12.22