iOS
사용자 경험을 위한 최소버전 설정
고감귤
2024. 3. 19. 19:51
일본 여행 중 앱을 사용하던 한 사용자가, 불안정한 네트워크 환경으로 인해 업데이트를 진행할 수 없어, 앱 사용이 불가하다고 연락을 주신 적이 있습니다.
결제 서비스를 제공하는 만큼, 결제 안정성을 위해 모든 사용자가 앱을 반드시 업데이트해야 했고, 이에 따라 사용자가 불편을 겪고 있다는 것을 알게 되었습니다.
최신 버전의 코드 업데이트 없이 바로 적용하는 하이브리드 앱이 해결책일 수 있으나, 저희는 전체 코드가 네이티브 코드로 이루어진 상황이었고 사용자의 불편함을 빠르게 해결하기 위해서 다른 방법을 고려해야 했습니다.
이 상황에서, 사용자에게 기존의 다른 기능들을 사용하는 것에 문제가 없으면서, 업데이트가 필요한 기능을 사용할 때만 업데이트를 유도한다면 사용자 경험을 높일 수 있을 것이라 결정을 내리게 되었습니다.
해결 과정
1. 데이터 베이스에 기능을 문제 없이 실행 시킬 수 있는 앱의 최소 버전을 저장합니다.
firestoreManager.fetchBoardSystemData { value in
checkVersionAndNavigate()
}
2. 기능 사용 시, 버전 체크를 합니다.
private func isiOSVersionSupported(_ minimumVersion: String) -> Bool {
if minimumVersion.isEmpty {
return false
}
if let systemVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String {
if systemVersion.compare(minimumVersion, options: .numeric) == .orderedAscending {
return false
}
return true
}
return false
}
서버에서 받아온 기능에 해당하는 앱 최소 버전과 현재 앱의 버전을 비교하고, 최소 버전을 넘긴 앱인 경우 true를 반환합니다.
private func checkVersionAndNavigate() {
if isiOSVersionSupported(firestoreManager.boardiOSVersion) {
firestoreManager.fetchREADData {
isLoading = false
if data.readID != nil { pageManager.path.append(페이지 이동) }
...
}
}
else {
isLoading = false
showAlert = true
}
}
최소 버전을 넘기지 못한 경우, 업데이트를 유도합니다.
최소 버전을 넘긴 경우, 기능에 필요한 데이터를 서버에서 불러옵니다.
기능별로 필요한 앱의 최소 버전을 확인하여, 업데이트가 필요한 기능을 사용할 때만 업데이트를 유도하는 기능을 구현함으로
꼭 강제 업데이트가 필요한 상황에서만 강제 업데이트를 유도하는 방식으로 문제를 해결했습니다.