Skip to content

Day 29 개발일지 iOS

정재명(Jae-Myeong) edited this page Dec 20, 2020 · 2 revisions

29 월요일

로그인뷰가 먼저 뜨게 하기

JWT 토큰이 키체인에 있으면 메인, 없으면 로그인이 먼저 떠야 한다!

if JWTTokenStoreManager().load() == nil {
    DispatchQueue.main.async { root = .login }
} else {
    localAuthenticate()
}

이메일 인증을 보내고 앱을 나갔다 들어왔는데도 이메일 인증 뷰가 뜨는 현상

로그인 뷰에서 잠시 메일확인하러 나갔다가 들어올때 state값이 풀려서 다시 이메일 인증을 해야한다. state값을 넣어줄 방법을 찾다가 UserDefaults로 이메일 인증 메일을 받았는지 여부를 체크하고, 처음 불러올 뷰를 결정했다.

로그인 코드 입력 시, 제대로 입력했는지 검증하기

옵셔널 String 값으로 JWT토큰을 completion에 넣어준 후, 컴플리션 결과값에 들어온 토큰이 있을 때는 main Completion을 실행시켜주고 없을 때 alert를 띄워 주는 방식으로 개발했다.

토큰 저장은 키체인에 하쟈

How to add an AppDelegate to a SwiftUI app << 앱 삭제시 처리할 작업!!! 여기서 키체인, 유저 디폴트에 있는데이터 다 날려주면 된다!

iOS Keychain Data will persist after app deleted and reinstall? << 키체인 다 날리는 법

그런데 이 방법은 앱을 삭제할 때 감지를 할 수 있는 방법이 아니고, 앱을 설치할 때 있던 데이터를 날려주는 방식이었다. 과연 앱을 삭제할 때를 감지할 수 있을까? 그런데 구글링 한 바로는 나오지 않았다.

네트워크 에러처리 어떻게?

각 뷰 모델 마다 생길 수 있는 네트워크 에러 유스케이스를 만들고, 뷰모델의 컴플리션 매개변수에 이 리절트 타입을 넘겨준다. 네트워크 단에서 에러처리를 하고, 결과에 해당되는 resulttype을 넘겨준다. 상태코드 에러처리는 네트워크 매니저가, 뷰모델에서의 에러 case는 뷰모델에서 한다.

1개일 때 멀티 디바이스를 off하고 앱을 삭제하면?

이러한 상황에서 다시 앱을 설치하면, 이 디바이스에서는 영원히 앱에 등록할 수 없게 된다. 멀티 디바이스가 off인 상태이기 때문이다. 그래서 추가적인 조건이 필요했다. 멀티 디바이스가 off 이거나 현재 유저 정보에 등록된 디바이스라면 등록을 허용하는 것이다.

AVFoundation UIKit으로 만들어보기

AVFoundation 기능을 UIKit로 만들어 보았다. 그런데 카메라 뷰의 위 아래가 잘린 상태로 나왔었다. 아무리 constraint를 고쳐보아도 늘어나지 않았다. 알고보니 AVFoundation을 생성할 때 뷰의 사이즈를 결정하는 옵션이 있었고 이를 수정하니 해결되었다.


개인 회고

(솔직히 쓰기 - 현재 파트너 또는 누군가가 본다고 생각하지 말고 미래의 내가 본다고 생각하며 쓰면 어떨까요??😏)

어진

  • 3년전이 되어버린 그놈의 노트북으로도 작업할 수 있음에 감사했다.

재명

  • SettingView의 UI를 정리했다. 분명 엄청 많은 작업을 한 것 같았는데 진도가 많이 나간 건 아니었다.
Clone this wiki locally