From b5b5d6b030000719441c704bec1a0216a1c6148a Mon Sep 17 00:00:00 2001 From: hyeonseo Date: Wed, 15 Apr 2026 17:23:45 +0900 Subject: [PATCH] =?UTF-8?q?:sparkles:=20::=20=EC=95=8C=EB=A6=BC=20?= =?UTF-8?q?=EA=B6=8C=ED=95=9C=20=EC=B2=B4=ED=81=AC=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 + feature/splash/build.gradle.kts | 2 ++ .../com/idiotfrogs/splash/SplashScreen.kt | 35 ++++++++++++++++++- gradle/libs.versions.toml | 4 +++ 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d85d4d50..17e99dec 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools"> + = Build.VERSION_CODES.TIRAMISU) { + val notificationPermission = rememberPermissionState(permission = Manifest.permission.POST_NOTIFICATIONS) + LaunchedEffect(Unit) { + when { + notificationPermission.status.isGranted -> return@LaunchedEffect // 권한 이미 허용됨 + notificationPermission.status.shouldShowRationale -> context.openSetting() // 권한 거부 시 설정 창 + else -> notificationPermission.launchPermissionRequest() // 권한 요청 + } + } + } viewModel.collectSideEffect { event -> when (event) { @@ -33,4 +59,11 @@ fun SplashRoute( } @Composable -fun SplashScreen() { /** todo: 추후 구현 */ } \ No newline at end of file +fun SplashScreen() { /** todo: 추후 구현 */ } + +private fun Context.openSetting() { + val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply { + data = Uri.fromParts("package", this@openSetting.packageName, null) + } + this.startActivity(intent) +} \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5c6c8641..4e5bb83b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -45,6 +45,8 @@ stabilityAnalyzer = "0.7.2" haze = "1.7.2" +accompanist = "0.37.3" + [libraries] android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "androidGradlePlugin" } kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } @@ -104,6 +106,8 @@ material = { group = "com.google.android.material", name = "material", version.r haze = { group = "dev.chrisbanes.haze", name = "haze", version.ref = "haze" } +accompanist-permissions = { group = "com.google.accompanist", name = "accompanist-permissions", version.ref = "accompanist" } + [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" }