안드로이드 개발 팁 #96 - 알림 권한 요청 방법

in hive-139150 •  yesterday 

알림 권한 요청 방법

No. 96
2025. 02. 27 (목) | Written by @dorian-mobileapp

안드로이드 12 (API 31, 코드명 Snow Cone) 이후부터 앱이 시작할 때 배경색과 아이콘만 보여주는 스플래시 화면(1번째라고 부를께요.)이 강제적으로 그리고 일시적으로 뜹니다. 만약 앱이 자체적인 스플래시 화면(이하 2번째)을 가지고 있다면, 그것은 2번째로 보여지게 됩니다. 스플래시 화면이 2개라니 어색해 보일 수 있지요. 그래서 요즘에는 2번째를 구현하지 않고 1번째를 좀 더 길게 보여주는 추세입니다. (상황에 따라서는 둘 다 보여주는 게 나을 수도 있죠. 이거는 기획 또는 디자인 부서와 상의하여 해결하는 게 좋습니다.

수초 동안 스플래시 화면 실행하기

아래 코드는 설정한 시간(초) 동안 스플래시 화면을 유지하는 컴포저블 함수입니다. 참고로 installSplashScreen() 메소드는 SplashScreen API가 제공하며, 안드로이드 11 이하 기기에서도 활용 가능합니다.

@Composable
fun Splash(waitingTimeSeconds: Long = 2) {
    var isLoading by remember { mutableStateOf(true) }
    val splashScreen = LocalContext.current.getActivity()?.installSplashScreen() ?: return
    splashScreen.setKeepOnScreenCondition { isLoading }

    LaunchedEffect(Unit) {
        delay(waitingTimeSeconds.seconds)
        isLoading = false
    }
}

코드 설명

  • isLoading
    • 스플래시 화면을 보여줄지를 결정하기 위한 상태 변수
  • Activity.installSplashScreen() 메소드
    • 스플래시 화면 제어를 위한 SplashScreen 객체를 리턴
  • splashScreen.setKeepOnScreenCondition { isLoading }
    • 스플래시 화면을 계속 보여줄지 결정
    • isLoading 상태 값이 true에서 false로 바뀌면 스플래시 화면이 숨겨짐
  • delay(waitingTimeSeconds.seconds)
    • waitingTimeSeconds 초 동안 대기하여 스플래시 화면을 보여주기 위함
  • isLoading = false
    • 상태 값을 false로 변경 → 스플래시 화면이 숨겨지고 액티비티의 본 내용이 나타남

스플래시 화면이 실행되는 조건

  • 콜드 스타트: 앱 프로세스가 메모리에 없는 상태에서 앱 시작
  • 웜 스타트: 종료되었지만 프로세스가 메모리에 있는 상태에서 앱 시작
    (핫 스타트: 앱, 프로세스 모두 메모리에 있는 상태에서 앱 실행)

이후…

배경색을 바꾸거나 애니메이션 적용을 할 수 있습니다. 추가로 구현할 사항에 대해서는 추후 작성 예정입니다.

참고 링크


지난 안드로이드 개발 팁


Layout provided by Steemit Enhancer hommage by ayogom


Posted through the ECblog app (https://blog.etain.club)
Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.


안녕하세요.
이 글은 SteemitKorea팀(@ayogom)님께서 저자이신 @dorian-mobileapp님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!

Upvoted! Thank you for supporting witness @jswit.

image.png