APP-iOS3rd / PJ3T2_Mymory

멋쟁이사자처럼 iOS 앱스쿨 3기 팀 프로젝트
11 stars 3 forks source link

[Refactoring]: 설정 뷰에서 모든 메뉴들을 연결했습니다. #232

Closed Seobe95 closed 9 months ago

Seobe95 commented 9 months ago

PR 가이드라인

PR Checklist

PR 날릴 때 체크 리스트

PR Type

어떤 종류의 PR인가요?

연관되는 issue 정보를 알려주세요

Issue Number: N/A

PR 설명하기

설정 뷰에서 기존에 연결되어있지 않는 메뉴들을 연결했습니다.

어떻게 작동하나요? code 기반으로 설명해주세요

  1. 현재 알림설정 상태를 확인하고 Toggle에 적용

    func checkNotificationPermission() async -> Bool {
        let center = UNUserNotificationCenter.current()
        let settings = await center.notificationSettings()
    
        switch settings.authorizationStatus {
            case .authorized: return true
            case .provisional: return true
            case .ephemeral: return true
            default: return false
        }
    }
    
    func changeToggleState() async {
        self.isAblePushNotification = await self.checkNotificationPermission()
    }
  2. 사용자가 설정창으로 이동 및 설정을 변경하게 될 경우 onReceive를 활용하여 Toggle의 상태 업데이트

Toggle("알림", isOn: $settingViewModel.isAblePushNotification) .disabled(true) .padding(.trailing, 3) .font(.medium14) .foregroundStyle(Color.textColor) .onTapGesture { settingViewModel.moveToNotificationSetting() } .onReceive(NotificationCenter.default.publisher(for: UIApplication.willEnterForegroundNotification)) { _ in Task { await settingViewModel.changeToggleState() } }


---

# 가능하다면 추가해주세요

## 변경 사항 스크린샷 혹은 화면 녹화

https://github.com/APP-iOS3rd/PJ3T2_Mymory/assets/79817557/33696124-6ecf-4b2b-b051-95276f7d16a9

## Test 여부
### Test 정보
```swift
//예시
let testDatas: [TestData] = [.init(...),...]

기타 언급해야 할 사항들