-
Notifications
You must be signed in to change notification settings - Fork 0
[Feat] 1차 QA 기능 추가 #90
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
31 commits
Select commit
Hold shift + click to select a range
fca9f48
[refactor] #87 Apply BADGE enum class
t1nm1ksun e8561fb
[refactor] #87 date 서버응답 반영
t1nm1ksun 32a4b6a
[refactor] #87 상세화면 badge 전달
t1nm1ksun 713a9a5
[refactor] #87 홈 북마크 위치 고정
t1nm1ksun 9ae0516
[refactor] #87 홈 뷰모델 init으로 초기 데이터 로드
t1nm1ksun acfaca0
[refactor] #87 오늘 노래가 3개여도 잠금 ui 표시
t1nm1ksun 10b9e31
[refactor] #87 잠금 앨범 모달 추가
t1nm1ksun 48fe881
[feat] #87 상세화면 글 삭제 확인 모달 추가
t1nm1ksun 95dc714
[feat] #87 글 등록/삭제 후 홈 데이터 새로고침
t1nm1ksun 1ad2e0e
[feat] #87 노래제목, 가수 한줄제한추가
t1nm1ksun 50238c1
[feat] #87 북마크 스낵바 네비게이션 연결
t1nm1ksun 2f93cc6
[feat] #87 신고하기 바텀시 단일선택, 버튼 활성화 로직 추가
t1nm1ksun 65d9593
[feat] #87 마이페이지 탭 유지 로직 추가
t1nm1ksun fc1d649
[feat] #87 홈 새로고침시 첫번쨰 노래로 이동
t1nm1ksun 47b1bc5
ktlint Format
t1nm1ksun 5228963
[feat] #87 과거 추천 기록 노래 리스트 아이템 미트볼 버튼 삭제
t1nm1ksun c633783
[feat] #89 오늘의 질문 알림 구현
kamja0510 1b2db85
[feat] #89 타유저 프로필에도 사용하기 위한 보관함, 등록한 곡 가져오기 UseCase 로직 변경
kamja0510 f340b2e
[feat] #89 타유저 정보 가져오는 repository 구현
kamja0510 a39018a
[feat] #89 타유저 프로필 모듈 생성 및 NavKey 생성
kamja0510 572d2a3
[feat] #89 타유저 프로필 구현 완료
kamja0510 d979ea5
[feat] #89 userId로 에디터, 타유저, 자신 구분 하는 usecase 구현
kamja0510 1fa7ffd
[feat] #89 타유저 프로필 클릭 시 이동 UI에 연동
kamja0510 56cb4a2
[feat] #89 mypage -> detail 이동 후 스크랩 한 뒤 뒤로 돌아왔을 때 변경사항 적용되도록 구현
kamja0510 a6b4c9e
[feat] #89 앱 아이콘 설정
kamja0510 bfdc315
[feat] #89 알림 권한 시스템 설정과 연동되도록 구현
kamja0510 538b2d7
[chore] #89 ktlint
kamja0510 a0289bb
[feat] #89 등록된 곡 -> 상세 화면 이동 후 삭제한 후에 돌아왔을 때 데이터 동기화 되도록 구현
kamja0510 5853edf
[feat] #89 home 화면 LargeCover 블러처리
kamja0510 1c9c835
[feat] #89 guidelineButton end padding 12.dp로 수정
kamja0510 1db9215
[chore] #89 ktlint
kamja0510 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,78 @@ | ||
| package com.dplay.worker | ||
|
|
||
| import android.app.NotificationChannel | ||
| import android.app.NotificationManager | ||
| import android.app.PendingIntent | ||
| import android.content.Context | ||
| import android.content.Intent | ||
| import android.os.Build | ||
| import androidx.core.app.NotificationCompat | ||
| import androidx.work.Worker | ||
| import androidx.work.WorkerParameters | ||
| import com.dplay.R | ||
| import com.example.main.MainActivity | ||
|
|
||
| class DailyQuestionWorker( | ||
| private val context: Context, | ||
| workerParams: WorkerParameters, | ||
| ) : Worker(context, workerParams) { | ||
| override fun doWork(): Result { | ||
| showNotification() | ||
| return Result.success() | ||
| } | ||
|
Comment on lines
+19
to
+22
|
||
|
|
||
| private fun showNotification() { | ||
| val notificationManager = | ||
| context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager | ||
|
|
||
| // 명시적으로 버전 관리 | ||
| if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { | ||
| val channel = | ||
| NotificationChannel( | ||
| CHANNEL_ID, | ||
| CHANNEL_NAME, | ||
| NotificationManager.IMPORTANCE_DEFAULT, | ||
| ).apply { | ||
| description = CHANNEL_DESCRIPTION | ||
| } | ||
| notificationManager.createNotificationChannel(channel) | ||
| } | ||
|
|
||
| val intent = | ||
| Intent(context, MainActivity::class.java).apply { | ||
| flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK | ||
| } | ||
|
|
||
| val pendingIntent = | ||
| PendingIntent.getActivity( | ||
| context, | ||
| 0, | ||
| intent, | ||
| PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE, | ||
| ) | ||
|
|
||
| val notification = | ||
| NotificationCompat | ||
| .Builder(context, CHANNEL_ID) | ||
| .setSmallIcon(R.mipmap.ic_launcher) | ||
| .setContentTitle(NOTIFICATION_CONTENT_TITLE) | ||
| .setContentText(NOTIFICATION_CONTENT_TEXT) | ||
| .setPriority(NotificationCompat.PRIORITY_DEFAULT) | ||
| .setContentIntent(pendingIntent) | ||
| .setAutoCancel(true) | ||
| .build() | ||
|
|
||
| notificationManager.notify(NOTIFICATION_ID, notification) | ||
| } | ||
|
|
||
| companion object { | ||
| const val CHANNEL_ID = "daily_question_channel" | ||
| const val CHANNEL_NAME = "Daily Question" | ||
| const val CHANNEL_DESCRIPTION = "Daily Question Notification" | ||
| const val NOTIFICATION_ID = 1001 | ||
| const val NOTIFICATION_CONTENT_TITLE = "오늘의 질문이 도착했습니다!" | ||
| const val NOTIFICATION_CONTENT_TEXT = "지금 바로 확인해보세요." | ||
|
Comment on lines
+73
to
+74
|
||
| const val WORK_NAME = "daily_question_work" | ||
| const val TAG = "DailyQuestionWorker" | ||
| } | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,170 +1,74 @@ | ||
| <?xml version="1.0" encoding="utf-8"?> | ||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
| android:width="108dp" | ||
| <vector | ||
| android:height="108dp" | ||
| android:width="108dp" | ||
| android:viewportHeight="108" | ||
| android:viewportWidth="108" | ||
| android:viewportHeight="108"> | ||
| <path | ||
| android:fillColor="#3DDC84" | ||
| android:pathData="M0,0h108v108h-108z" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M9,0L9,108" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M19,0L19,108" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M29,0L29,108" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M39,0L39,108" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M49,0L49,108" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M59,0L59,108" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M69,0L69,108" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M79,0L79,108" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M89,0L89,108" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M99,0L99,108" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M0,9L108,9" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M0,19L108,19" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M0,29L108,29" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M0,39L108,39" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M0,49L108,49" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M0,59L108,59" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M0,69L108,69" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M0,79L108,79" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M0,89L108,89" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M0,99L108,99" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M19,29L89,29" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M19,39L89,39" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M19,49L89,49" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M19,59L89,59" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M19,69L89,69" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M19,79L89,79" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M29,19L29,89" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M39,19L39,89" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M49,19L49,89" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M59,19L59,89" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M69,19L69,89" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| <path | ||
| android:fillColor="#00000000" | ||
| android:pathData="M79,19L79,89" | ||
| android:strokeWidth="0.8" | ||
| android:strokeColor="#33FFFFFF" /> | ||
| xmlns:android="http://schemas.android.com/apk/res/android"> | ||
| <path android:fillColor="#3DDC84" | ||
| android:pathData="M0,0h108v108h-108z"/> | ||
| <path android:fillColor="#00000000" android:pathData="M9,0L9,108" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M19,0L19,108" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M29,0L29,108" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M39,0L39,108" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M49,0L49,108" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M59,0L59,108" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M69,0L69,108" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M79,0L79,108" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M89,0L89,108" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M99,0L99,108" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M0,9L108,9" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M0,19L108,19" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M0,29L108,29" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M0,39L108,39" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M0,49L108,49" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M0,59L108,59" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M0,69L108,69" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M0,79L108,79" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M0,89L108,89" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M0,99L108,99" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M19,29L89,29" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M19,39L89,39" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M19,49L89,49" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M19,59L89,59" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M19,69L89,69" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M19,79L89,79" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M29,19L29,89" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M39,19L39,89" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M49,19L49,89" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M59,19L59,89" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M69,19L69,89" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| <path android:fillColor="#00000000" android:pathData="M79,19L79,89" | ||
| android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> | ||
| </vector> |
5 changes: 2 additions & 3 deletions
5
...rc/main/res/mipmap-anydpi/ic_launcher.xml → ...ain/res/mipmap-anydpi-v26/ic_launcher.xml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,5 @@ | ||
| <?xml version="1.0" encoding="utf-8"?> | ||
| <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> | ||
| <background android:drawable="@drawable/ic_launcher_background" /> | ||
| <foreground android:drawable="@drawable/ic_launcher_foreground" /> | ||
| <monochrome android:drawable="@drawable/ic_launcher_foreground" /> | ||
| <background android:drawable="@drawable/ic_launcher_background"/> | ||
| <foreground android:drawable="@mipmap/ic_launcher_foreground"/> | ||
| </adaptive-icon> |
5 changes: 2 additions & 3 deletions
5
...n/res/mipmap-anydpi/ic_launcher_round.xml → ...s/mipmap-anydpi-v26/ic_launcher_round.xml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,5 @@ | ||
| <?xml version="1.0" encoding="utf-8"?> | ||
| <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> | ||
| <background android:drawable="@drawable/ic_launcher_background" /> | ||
| <foreground android:drawable="@drawable/ic_launcher_foreground" /> | ||
| <monochrome android:drawable="@drawable/ic_launcher_foreground" /> | ||
| <background android:drawable="@drawable/ic_launcher_background"/> | ||
| <foreground android:drawable="@mipmap/ic_launcher_foreground"/> | ||
| </adaptive-icon> |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
WorkManager는 정확한 시간 보장이 어렵습니다. 정확히 오전 9시에 알림을 보내야 한다면 AlarmManager 사용을 고려해야 합니다. WorkManager는 배터리 최적화를 위해 실행 시간을 조정할 수 있어 최대 15분 정도 지연될 수 있습니다.