토이 프로젝트 Wandoo! ver 1.1.2 업데이트 기록

린다·2021년 9월 11일
0

ToyProject_Wandoo!

목록 보기
5/5
post-thumbnail

주요 업데이트 기능

  • 다크 모드 대응
  • Haptic 피드백 추가
  • 강의 수 수정기능 추가

다크 모드 대응

처음에 다크 모드에 대응해서 개발할 생각을 못했는데 어느 날 리뷰에 다크 모드에서 버튼이 보이지 않아 사용하기 어렵다고 써주신 사용자분이 계셔서 업데이트를 해야겠다고 마음을 먹었다!
사용자가 현재 설정해둔 모드는 아래의 코드를 통해 확인할 수 있었다.

let buttonColorForDarkMode: UIColor = {
    if #available(iOS 13, *) {
        return UIColor { (UITraitCollection: UITraitCollection) -> UIColor in
            if UITraitCollection.userInterfaceStyle == .dark {
                // Return color for Dark Mode
                return #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
            } else {
                // Return color for Light Mode
                return #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
            }
        }
    } else {
        // Return fallback color for iOS 12 and lower
        return #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
    }
}()

위의 색상을 환경설정 버튼, 더보기 버튼 등 다크모드 설정을 했을 때 대응되지 않고 있던 버튼들에 적용해주었다.

#available은 버전별 분기처리를 해줘야하는 경우 호출하여 사용한다.
if #available(iOS 13, *)은 iOS 13을 포함하여 그 이후의 버전에 대하여 적용할 수 있게 된다.

UITraitCollection은 iOS의 인터페이스 환경에 대한 정보를 갖고 있는 객체이다. iOS 12부터 userInterfaceStyle이 추가됐는데 이 항목을 통해서 다크모드 설정 여부를 확인할 수 있다.

다크 모드가 적용된 모습!

Haptic 피드백 추가

어플을 직접 사용하다보니 강의 관련 메모 및 진도 체크를 할 때 버튼이 조금 작아서 터치가 됐는지 사용자에게 햅틱으로 피드백을 주면 좋을 것 같다는 생각이 들었다.

먼저 FeedbackGenerator를 인스턴스화 시켜주고

var feedbackGenerator: UINotificationFeedbackGenerator?

init 해주고 바로 사용할 수 있도록 prepare하는 메서드를 작성해준다.

private func setupGenerator() {
        self.feedbackGenerator = UINotificationFeedbackGenerator()
        self.feedbackGenerator?.prepare()
    }

viewDidLoad에서 실행시켜준 뒤

self.setupGenerator()

해당 햅틱 피드백이 발생해야하는 곳에 notificationOccured를 작동시킨다.

self.feedbackGenerator?.notificationOccurred(.success)

강의를 생성하거나 수정이 완료된 경우에는 feedbackGenerator로 success 피드백을 주었고 강의 진도 체크를 하는 경우에는 UISelectionFeedbackGenerator를 사용하여 피드백을 주었다.
확실히 햅틱 피드백을 적절한 곳에 주니 제대로 사용하고 있다는 느낌이 오는 듯!

강의 수 수정기능 추가

기존에는 강의 수를 수정하게 되면 메모 및 진도 체크를 하는 데이터가 꼬여서 오류가 생길까봐 걱정돼서 아예 수정할 때는 강의 명과 날짜만 수정할 수 있도록 설정했었다. 한 번 설정하고나면 추후에 강의 수는 수정할 필요가 없을 것 같다고 생각하기도 했고...ㅋㅋㅋ 하지만 유저 피드백 중에 강의 수 수정 안되는 부분이 불편하다는 의견이 있어서 바로 수정했다. 그리고 생각해보니 생각보다 어려울 것도 없어서 수월하게 진행했다!

기존에 위 화면에 강의 수 기입하는 부분이 아예 빠져있었기 때문에 UI 컴포넌트들 추가해주고 LectureManager에서 입력된 강의수가 기존 강의수보다 큰 경우에는 기존 메모 및 진도 배열에 추가된 수 만큼의 배열을 덧붙여주도록 설정했다.
만약 입력된 강의수가 기존보다 작은 수 일 경우에는 배열을 입력된 수만큼 slicing해서 업데이트시켜주는 방식으로 진행했다.

var newLec: LectureInfo = lec
        newLec.numOfLec = lec.numOfLec
        if Int(newLec.numOfLec)! > newLec.isDone.count {
            newLec.isDone += [Bool](repeating: false, count: Int(newLec.numOfLec)! - newLec.isDone.count)
            newLec.memos += [String](repeating: "", count: Int(newLec.numOfLec)! - newLec.memos.count)
        } else if Int(newLec.numOfLec)! < newLec.isDone.count {
            newLec.isDone = Array(lec.isDone[0..<Int(newLec.numOfLec)!])
            newLec.memos = Array(lec.memos[0..<Int(newLec.numOfLec)!])
        }
        return newLec

그리고 업데이트 전에 입력된 강의수가 기존보다 작은 경우에는 alert controller를 사용하여 범위를 벗어난 메모는 삭제될 수 있다고 알림을 띄우도록 했다. 한 번 배열이 삭제되면 되돌릴 수 없기 때문에,,, 사용자가 그래도 괜찮다 오케이를 누르는 경우에만 viewmodel의 lecture info를 수정하고 업데이트까지 진행하도록 했다.


업데이트 후기

8월 초에 앱을 출시만 해놓고 마케팅을 전혀 하지 못해서 누가 쓰나 싶었는데 그래도 한달동안 꽤 여러명이 내 앱을 다운받았고 정말 리터럴리 내 앱 유저로부터 피드백도 받았다. 출시할땐 정말 완벽하다고 생각했었는데 역시나 부족한 부분이 많았다. 하지만 유저로부터 피드백을 받고 이런 부분을 수정해나가는 과정이 즐겁다! 고치다보니 조금 더 앱 다운 앱이 되는 것 같아 뿌듯하기도 하다 ㅋㅋㅋㅋ 나중에 친구들한테 앱 마케팅 부분도 물어봐서 한 번 진행해보고 싶다. 그러면 더 많은 분들께 피드백을 받을 수 있을 것이고 쉽지 않겠지만 부족한 부분들을 채워나가면서 나도, 완두도 더 성장해나갈 수 있을 것 같다!

0개의 댓글