Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- rxswift
- Xcode
- SWIFT
- Human interface guide
- Observable
- ribs
- 리팩토링
- ios
- combine
- uiscrollview
- 애니메이션
- UITextView
- 리펙토링
- UICollectionView
- tableView
- collectionview
- 리펙터링
- uitableview
- swift documentation
- MVVM
- Clean Code
- RxCocoa
- Refactoring
- HIG
- Protocol
- clean architecture
- swiftUI
- 스위프트
- 클린 코드
- map
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] Siren 프레임워크 - 강제 업데이트 방법, 버전 개념 (CFBundleVersion, CFBundleShortVersionString, Version, Build, Marketing_Version, Current_Project_Version) 본문
iOS framework
[iOS - swift] Siren 프레임워크 - 강제 업데이트 방법, 버전 개념 (CFBundleVersion, CFBundleShortVersionString, Version, Build, Marketing_Version, Current_Project_Version)
jake-kim 2021. 12. 29. 02:02iOS 에서 사용하는 버전의 개념
- Xcode에서 관리하는 버전
- CFBundleShortVersionString (marketing_version) - Aoo Store에 게시할 때마다 증가해줘야 하는 버전 major.minor.patch
- CFBundleVersion (Current_Proejct_Version) - 개발자가 내부적으로 확인하기 위한 용도
(날짜를 사용하기도 함 - 2021.12.29.1 )
- 코드에서 접근 - Bundle.main.infoDictinoary로 접근
let marketingVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String let currentProjectVersion = Bundle.main.infoDictionary?["CFBundleVersion"] as? String print(marketingVersion!) // 1.0.2 print(currentProjectVersion!) // 1
Siren
- App Store에서 현재 사용 가능한 앱 버전을 체크하여 사용자에게 alert를 띄워주는 것을 간편화 시킬 수 있는 프레임워크
- 알림 alert에 구체적인 알림 시점(일주일 한 번, 하루 한번, 항상), 생략 옵션(버전 건너 뜀, 다음에 업데이트)등을 쉽게 적용 가능
- Localizable에 대응되었기 때문에 사용자의 지역에 따라서 해당 언어 제공
(Localizable이 지원되지 않는 지역이면 영어로 표출)
설치
- cocoapods 사용 시
pod 'Siren'
- SPM 사용 시
https://github.com/ArtSabintsev/Siren
디폴트 사용
- App Store에 올라가 있는 앱인 경우만 사용
- App Delegate 또는 SceneDelegate에서 window?.makeKeyAndVisible() 이후 코드에서 사용
import Siren // <- 임포트 import UIKit class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { window?.makeKeyAndVisible() Siren.shared.wail() // <- 이렇게 사용 } ... }
커스텀하여 사용
- App Store에 올라가 있는 앱인 경우만 사용
- 문구 커스텀
Siren.shared.presentationManager = PresentationManager( appName: "MyApp", alertTitle: "업데이트", updateButtonTitle: "업데이트 해주세요" )
- 알림 시점 / 업데이트 기간 설정 / 버전 건너 뜀 설정
Siren.shared.rulesManager = RulesManager(globalRules: .critical) // globalRules, majorUpdateRules... 설정 가능
-
- annoying: (항상 확인) / 다음에 업데이트default: (하루 한 번) / 다음에 업데이트 / 버전 건너 뜀hinting: (일주일 한 번) / 다음에 업데이트
- relaxed: (일주일 한 번) / 다음에 업데이트 / 버전 건너 뜀
- persistent: (하루 한 번) / 다음에 업데이트
- critical: (항상 확인) / 즉시 업데이트
cf) 커스텀 가능: let customRules = Rules(promptFrequency: .daily, forAlertType: .force)
- 버전 체크 시점 설정 및 alert 표출
Siren.shared.wail(performCheck: .onDemand) { result in print(result) }
-
- onDemand: wail() 메소드가 불릴때만 체크
- onForeground: foreground 진입할때마다 체크
- onDemand: wail() 메소드가 불릴때만 체크
- custom 전체 코드
Siren.shared.presentationManager = PresentationManager( appName: "MyApp", alertTitle: "업데이트", updateButtonTitle: "업데이트 해주세요" ) // 알림 시점 정의 // annoying: (항상 확인) / 다음에 업데이트 // critical: (항상 확인) / 즉시 업데이트 // default: (하루 한 번) / 다음에 업데이트 / 버전 건너 뜀 // persistent: (하루 한 번) / 다음에 업데이트 // hinting: (일주일 한 번) / 다음에 업데이트 // relaxed: (일주일 한 번) / 다음에 업데이트 / 버전 건너 뜀 Siren.shared.rulesManager = RulesManager(globalRules: .critical) // 버전 체크 후 alert 표출 // onDemand: wail() 메소드가 불릴때만 체크 // onForeground: foreground 진입할때마다 체크 Siren.shared.wail(performCheck: .onDemand) { result in print(result) }
* 참고
'iOS framework' 카테고리의 다른 글
[iOS - swift] Firebase Analytics 사용 방법, 이벤트 로깅, logEvent() (5) | 2022.01.07 |
---|---|
[iOS - swift] Cauli 프레임워크 (앱에서 네트워킹 로깅 확인 툴) (2) | 2021.12.30 |
[iOS - swift] AlignedCollectionViewFlowLayout 프레임워크 (CollectionView Cell 정렬) (0) | 2021.12.20 |
[iOS - swift] 2. ReactorKit 샘플 앱 - RxDataSources을 이용한 Section, Item 모델 구현 패턴 (with 동적 사이즈 셀) (3) | 2021.12.16 |
[iOS - swift] Moya, RxMoya, Networking 레이어 (6) | 2021.12.13 |
Comments