Skip to content
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

Feat/#311 앱스토어의 앱 버전과 기존 앱의 버전을 추적하여 강제 업데이트 기능 #313

Open
wants to merge 11 commits into
base: dev
Choose a base branch
from

Conversation

isakatty
Copy link
Contributor

@isakatty isakatty commented May 26, 2024

작업내용

기존 앱 버전과 앱스토어에 올라간 앱의 major 버전을 비교하여 앱스토어를 열어주는 alert 띄우기

⚠️ 앱스토어 연결을 위해 시뮬이 아니라 실기기 빌드 해주세요!

프로젝트 info plist 수정 실기기 연결 실행화면
스크린샷 2024-05-26 오후 3 00 44 스크린샷 2024-05-26 오후 3 01 24 아래 동영상 첨부
720p.mov

리뷰요청

관련 이슈

close #311

@isakatty isakatty added the ✨ 기능추가 새로운 기능 추가 label May 26, 2024
@isakatty isakatty requested a review from yuhaeun-la May 26, 2024 06:47
@isakatty isakatty self-assigned this May 26, 2024
@isakatty isakatty linked an issue May 26, 2024 that may be closed by this pull request
2 tasks
@yuhaeun-la
Copy link
Contributor

지수님 제가 오늘부터 목요일까지 맥북을 사용할 수 있는 환경이 아니어서, 괜찮으시면 리뷰어 분을 한명 더 등록하시는건 어떨까요? 저는 목요일 이후에 리뷰가 가능할거같아요

@isakatty
Copy link
Contributor Author

지수님 제가 오늘부터 목요일까지 맥북을 사용할 수 있는 환경이 아니어서, 괜찮으시면 리뷰어 분을 한명 더 등록하시는건 어떨까요? 저는 목요일 이후에 리뷰가 가능할거같아요

앗 ! 하은님 괜찮으시면 그렇게 하겠습니다 !

@isakatty isakatty requested a review from gnksbm May 26, 2024 06:54
= "itms-apps://itunes.apple.com/app/apple-store/"

/// 앱스토어에 등록된 최신 버전 가져오는 함수
static public func latestVersion(completion: @escaping (String?) -> Void) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

async await 말고 컴플리션 핸들러를 쓰신 이유가 있을까요 ?.?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아아 app delegate 에서 쓰일 코드가 아닌데 async-await 해놨던걸 거기서 쓰다가 문제가 생겨서 completion으로 변경하고 scene delegate를 하다가 다시 수정한다는걸 잊어버렸어요 🫠
async - await으로 수정하겠습니다 !

let splitMarketingVersion = marketingVersion.split(separator: ".").map { $0 }
let splitCurrentProjectVersion = currentProjectVersion.split(separator: ".").map { $0 }

if splitCurrentProjectVersion.count > 0 && splitMarketingVersion.count > 0 {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 구문이 필수적으로 필요한지 궁금합니다!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

82, 83은 [1.2.3] 이렇게 오는걸 .을 기준으로 나누기 위해서 필요하고,
85번째 줄은 .을 기준으로 잘 들어왔는지 확인하기 위해서 count로 조건을 준거였어요 !

@yuhaeun-la
Copy link
Contributor

지수님 제가 오늘부터 목요일까지 맥북을 사용할 수 있는 환경이 아니어서, 괜찮으시면 리뷰어 분을 한명 더 등록하시는건 어떨까요? 저는 목요일 이후에 리뷰가 가능할거같아요

앗 ! 하은님 괜찮으시면 그렇게 하겠습니다 !

네 그게 좋을 것 같습니다 ! 현재 깃헙만 둘러볼 수 있는 상황이어서 ㅠㅠ 코드 리뷰만 남기는 걸로 하겠습니다

Copy link
Contributor

@gnksbm gnksbm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

추가로 ignore 파일 업데이트가 안되어 있어 디버깅을 못하고있어요
올려주시면 땡겨서 추가 확인해보겠습니다~

Comment on lines 15 to 16
/// 프로젝트 버전
let appVersion = String.getCurrentVersion()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

사용되지 않는 변수인데 남겨두신 이유가 있으신가요?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sceneDelegate에서 가져다 쓰려고 뒀는데 scene에서도 또 변수 만들어서 썼네요 🥲 수정하겠습니다 ~

Comment on lines 19 to 30
static let appleID = Bundle.main.object(forInfoDictionaryKey: "APPLE_ID") as? String

/// 앱스토어 연결 링크
static let appStoreURLString
= "itms-apps://itunes.apple.com/app/apple-store/"

/// 앱스토어에 등록된 최신 버전 가져오는 함수

static public func latestVersion() async -> String? {
guard let appleID = AppStoreCheck.appleID,
let url
= URL(string: "https://itunes.apple.com/lookup?id=\(appleID)&country=kr")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

린트 오류 수정바랍니다!

@@ -50,7 +50,8 @@ public extension [String: Plist.Value] {
"NMFClientId": "$(NAVERMAP_CLIENT_ID)",
"TERMS_OF_PRIVACY_URL": "$(TERMS_OF_PRIVACY_URL)",
"LOCATION_PRIVACY_URL": "$(LOCATION_PRIVACY_URL)",
"INQURY_URL": "$(INQURY_URL)"
"INQURY_URL": "$(INQURY_URL)",
"APPLE_ID": "$(APPLE_ID)",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPLE_ID가 유저의 apple 계정 id로 유추되어서 APPSTORE_ID와 같이 표현하면 어떨까요?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

변경하겠습니다 !


/// 앱스토어에 등록된 최신 버전 가져오는 함수

static public func latestVersion() async -> String? {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

함수 시그니처를 () -> Observable으로 변경하는 게 어떨까요?

isakatty added 5 commits May 28, 2024 09:11
- 한 번 구독되고 값이 방출되면 stream이 마무리되는 single 선택
- error 케이스 생성
- private init() 을 통해 객체 생성 방지
- 린트에 맞춰 수정
- 싱글톤 형태로 변경
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ 기능추가 새로운 기능 추가
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feat] 앱 버전 추적하여 강제 업데이트
3 participants