일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- TableView
- PyQt5
- UIButton
- cocoapods
- 개발
- button
- ui
- 그래프
- Python
- ios
- Android
- UITableView
- 어플리케이션
- charts
- graph
- Apple
- Xcode
- kotlin
- 라이브러리
- androidstudio
- PyQt
- Chrats
- alamofire
- Swift
- modal
- 개발자
- Chart
- library
- UIKit
- Storyboard
- Today
- Total
목록iOS Dev (133)
Jiwift
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/zmRBi/btsH4VP71Yy/UeSuixb9CTN0RDnU1RhJU0/img.png)
iOS 앱 배포는 개발자와 회사에서 매우 중요한 과정입니다. 각 배포 방식마다 특정한 장점과 단점이 있으며, 배포 목적에 따라 적합한 방법을 선택하는 것이 중요합니다. 이 글에서는 Ad Hoc 배포, 엔터프라이즈 배포, TestFlight 배포, 등록되지 않은 앱 배포, 맞춤형 앱 배포의 특징과 장단점, 그리고 필요한 조건들을 상세히 설명합니다. iOS 개발자 및 관리자가 각 배포 방식을 효과적으로 활용할 수 있도록 도움을 드립니다.iOS 앱 배포 방식 정리1. Adhoc 배포특징: 기기 UDID를 개발자 애플 개발자 계정에 연동하여 앱을 테스트제한사항: 최대 100대의 기기 등록 가능관리: 각 기기의 UDID를 수집하고 관리해야 함장점: 비교적 빠르게 테스트할 수 있으며, 제한된 그룹에 테스트 가능단..
iOS 앱 업데이트 기능 구현 아이디어를 공유하려고 합니다. 응용만 가능하다면 모든 개발에 적용할 수 있습니다. 앱 업데이트 여부를 판단하는 방법1. 현재 버전과 최신 버전을 비교2. 현재 버전이 업데이트 대상인지 아닌지 판단 위 두 가지 방법을 통해서 업데이트 로직을 수행하면 됩니다. 1. 현재 버전과 최신 버전을 비교- 현재 설치된 버전은 코드를 통해서 서비스의 특정 규칙을 만들어서 사용해도 되고 Xcode에서 적용한 버전을 불러오는 코드를 사용해도 됩니다. Xcode를 기준으로 보면 앱은 버전과 빌드 두 개를 중 하나를 사용하면 됩니다. - 앱스토어를 통한 비교는 서버를 구축할 필요 없이 앱단에서 앱스토어 호출 한 번으로 사용 가능합니다. 버전을 비교해 업데이트 팝업을 보여줄지 말지 결정하면..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/EyRVr/btsHEDQtEu3/vYpg9ratrvpHRAcvoS6Iq1/img.png)
Xcode에서 빌드 후 앱이 실행되는 순간에 WebKit에서 에러가 발생하는 문제를 해결 상황: iOS 프로젝트에서 WebKit을 사용 중입니다. Xcode에서 테스트를 위해 빌드하면 코드 실행 중 Crash가 발생합니다. Error: Thread 1: EXC_BREAKPOINT (code=1, subcode=0x19e88fa18) 기존 iOS 16.x대에서는 문제가 없던 것 같은데 17.x 버전들이 문제가 발생했습니다. 로직도 아닌 애플에서 제공해 주는 기본 코드들도 문제였습니다 아래는 에러가 났던 코드들입니다. 다른 곳에서 더 있을 수 있어요.WKWebsiteDataStore.default() .fetchDataRecords(ofTypes: WKWebsiteDataStor..
Privacy Manifest 최종 정리하며 요약하였습니다. 1. Privacy Manifestf가 개발자들을 위해 앱 사용자를 위해 새롭게 추가 되었다. 2. 2024년 3월 13일부터 적용 상태에 따른 메일을 보내주었고, 2024년 5월 1일부터 심사에도 영향을 끼친다. 3. Privacy Manifest는 추가하면 xcprivacy 확장자를 가진다. 4. 파일 이름을 수정하면 안된다.- PrivacyInfo 5. Privacy Manifest에 추가해야하는 내용- NSPrivacyTracking: 추적을 위해 데이터를 사용하는지 여부를 나타내는 Boolean 값- NSPrivacyTrackingDomains: 추적에 사용되는 인터넷 도메인을 나열한 String 배열입니다.- NSPrivacyCol..
[iOS/Swift] Enum을 사용한 TabBar Item 관리 안녕하세요. 이번에는 Enum을 사용해서 TabBarViewController의 TabBarItem을 관리하는 방법을 소개하려고합니다. Storyboard를 사용하면 필요 없을 수도 있습니다. 그리고 더 좋은 방법이 있을 수 있습니다. 읽어보시다 별로면 새로운 방법을 추천해주세요.!! 저는 Storyboard 없이 코드 베이스로 작업을하고있었습니다. import UIKitclass BaseTabBarController: UITabBarController, UITabBarControllerDelegate { override func viewDidLoad() { super.viewDidLoad() sel..
[iOS/Swift] 앱에서 정적 라이브러리(.a)를 사용하는 분들이 있나요?? static library 안녕하세요. 이번에 갑자기 궁금한게 생겨서 글을 남깁니다. iOS 개발을 하면서 동적, 정적 라이브러리들을 사용할 수 있습니다. 그중에서 정적 라이브러리는 .a 파일 형식으로도 사용이 가능하지만 정보들이 많이 부족하여 얼마나 많은 분들이 사용하고 계신지 궁금하네요. framework는 많이 접해도 .a는 접할 일이 많이 없어서 검색해도 많은 정보를 얻지 못하는 단점도 있었던 것 같습니다. 프로젝트를 진행하면서 정적 라이브러리(.a)를 사용하신 경험이나 이유를 같이 공유해 주실 수 있나요?? 1. 이유:2. 사용 장점: 3. 사용 단점: 4. 상용 여부:5. 기타: 혹은 위 문항이 아..
safearea의 상단, 하단 insets을 구하는 코드 let scene = UIApplication.shared.connectedScenes.first as? UIWindowScene let topPadding = scene?.windows.first?.safeAreaInsets.top ?? .zero let bottomPadding = scene?.windows.first?.safeAreaInsets.bottom ?? .zero UIApplication을 통해서 top과 bottom의 safeAreaInsets을 구할 수 있다. connectedScenes는 iOS 13부터 사용할 수 있다. How can I get the safeAreaInsets i… | Apple Developer Forums..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/vd40C/btsGMAUwG3H/8reeTfhgjMYni2Bz1q4XG1/img.png)
시작한 프로젝트에 참여하게 되면 그 틀을 이어서 가면 좋겠지만, 새로 프로젝트를 구성하다 보면 폴더 구조를 어떻게 잡아나갈지 고민을 많이 하게 되는 것 같습니다. 저는 그래서 초반에는 프로젝트를 진행하면서도 구조를 많이 변경했었습니다. 근데 개인 프로젝트를 계속 하다보니 어느 정도 제 손에 맞는 구조를 찾게 되었고 지금은 아래와 같이 사용하고 있습니다. 처음에는 화면별로 구성요소들을 모아서 작업을했었는데, 공통적으로 사용하는 애들이 생기면서 그것을 또 따로 묶게 되고 하다가 각 Class 별로 크게 나누고 그 안에서 세부적으로 더 나누는 것을 선택하였습니다. 더 좋은 구조가 있을거라고 생각하지만 프로젝트를 진행하면서도 계속 변경되기도 할 것이고, 많이 나누는 것이, 적게 나누는 것이 어떤 것이 좋은지는 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/1xqf7/btsGB3aGJNp/jzb810t3GsIzKQnkCrkEA1/img.png)
MapKit에서 사용자가 화면을 드래그해서 이동하거나 핀치 줌을 통하여 확대 또는 축소를 하는 것을 감지해 주는 Delegate가 있습니다. self.mapView.delegate = self Delegate를 원하는 곳에서 채택해줍니다. func mapViewDidChangeVisibleRegion(_ mapView: MKMapView) { print("mapViewDidChangeVisibleRegion") } func mapView(_ mapView: MKMapView, regionWillChangeAnimated animated: Bool) { print("regionWillChangeAnimated") } func mapView(_ mapView: MKMapView, regionDidChange..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/czinhj/btsGAMOxmCP/oKZBTXchO9Ilq4MTjvWYgk/img.png)
애플에서 제공해 주는 MapKit을 추가하는 방법을 기록. 위와 같이 애플 지도를 화면에 띄우는 것이 목적입니다. 단순하게 보여주기 위한 것은 매우 간단하기 때문에 쉽게 따라 하실 수 있습니다. import MapKit 맵을 사용하기 위해서는 MapKit을 import해야합니다. 원하는 위치에 추가해 주세요. let mapView = MKMapView() MKMapView를 선언합니다. 변수는 간단하게 맵뷰로 하겠습니다. self.view.addSubview(self.mapView) 이제 선언된 맵뷰를 원하는 View에 추가를 해주세요. 저는 최상위 View에 추가를 했습니다. // Auto Layout 제약 설정 self.mapView.translatesAutoresizingMaskIntoConstra..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/8uSUg/btsGCtTId8k/io9vrDaSJhlJmBnXWtXto1/img.png)
[iOS/Swift] 구조체를 JSON 형태로 변환하기 struct to json 안녕하세요. 오늘은 Codable로 구성된 Struct를 JSON으로 변경해 보겠습니다. struct AllUsersModel: Codable { let users: [UserModel] } struct UserModel: Codable { let name: String let age: Int } 우선 간단하게 Model을 두 개 만들었습니다. 사용자 정보를 담는 UserModel과 사용자를 담는 AllUsersModel로 구성했습니다. Codable을 채택하여 encode 할 수 있게 준비를 합니다. let users: [UserModel] = [UserModel(name: "오바마", age: 34), UserModel..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ZCrqy/btsF4ZttvkC/B4JZSMMQ1x7ZXTgLgIHIX0/img.png)
여러분의 Apple Privacy Manifest 관련한 정보를 공유, 경험, 질문 등을 댓글로 남겨주세요. 앞으로 애플에서 적용될 정책 중 Privacy Manifest가 있습니다. 원래는 작년부터 심사 과정에서 Issue 메일을 보내주기로 했으나 별도에 공지를 하지 않고 올해까지 버티다가 3월 13일부터 메일을 발송하고 있습니다. 그리고 5월 1일부터는 애플이 원하는 대로 적용하지 않은 경우 심사에 영향이 미칠 수 있다고 합니다. Privacy Manifest에 입력해야 하는 내용은 아래와 같습니다. NSPrivacyTracking NSPrivacyTrackingDomains NSPrivacyCollectedDataTypes NSPrivacyAccessedAPITypes 위 목록에서 앱과 라이브러리 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cbNoky/btsFXMUGYpK/kI6rxckr0QPe2RnrxIFHh0/img.png)
Privacy Manifest 적용 유무를 확인하기 위해 메일을 받으려면 1. 테스트플라이트 외부 배포를 진행한다. - 외부 테스터에게 배포하는 빌드를 제출하는 경우 계속해서 메일 받을 수 있습니다. 2. 앱스토어 출시 심사 제출 - 출시를 위한 심사를 제출하고 취소하면서 계속 메일을 받을 수 있습니다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/QLrhA/btsFLrEfXJQ/lokJnNitFDBHsbJx9IMHkK/img.png)
[iOS/Xcode] 정적 라이브러리(Static Library) Privacy Manifest 추가하기 저는 회사에서 사용 중인 정적 라이브러리(Static Library) '.a' 파일이 있습니다. 근데 이번에 애플 뉴스에서는 라이브러리 혹은 앱에서 PrivacyManifest를 추가해야 한다고 했습니다. 이는 xprivacy라는 파일을 추가하고 안에 내용을 추가해야 합니다. 이것은 2024년 3월 13일부터 적용을 시작해야 합니다. 적용을 제대로 하지 않으면 메일을 받게 되고 2024년 5월 1일부터는 심사에 제한을 받게 됩니다. 적용이 필요한 Type - Privacy Nutrition Label Types - Privacy Accessed API Types - Privacy Tracking Do..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bFyUgn/btsFML2y6e6/2jXkKDr7fX8rBsXvEhgHY1/img.png)
테스트를 위해서 '수동 출시' 옵션을 설정하고 애플 심사를 제출하였습니다. 개인앱은 제출하고 1분 정도 지나니깐 문제 되는 항목들을 메일로 받았습니다. 일부러 대응하지 않은 버전을 올렸는데, Privacy Manifest 문제 메일을 원래 이렇게 빨리 보내주는지는 더 확인해봐야 할 것 같네요. 저 같은 경우 총 2개를 테스트했습니다. 개인앱 - 오픈소스만 존재함, - 오픈소스 개발자들이 대응해준게 있으면 일단 최신 버전으로 사용 - 앱에 대한 PrivacyManifest는 그냥 단순하게 PrivacyInfo만 추가만 한 상태, 완벽하게 내용을 채우지 않음 - 제출 후 심사 대기 상태에서 메일이 1분안에 날아왔음. - Privacy Nutrition Label Types도 안했는데 메일에 내용이 없음 결과..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Szofs/btsFHtWLpN4/O3Oe9aeLkUQKfX3Cr7AAYK/img.png)
Privacy Manifest 정책 애플 일정 뉴스 App Store 앱 제출을 위한 개인정보 보호 관련 업데이트 2024년 02월 29일 개발자는 자신의 앱에 포함된 모든 코드에 대한 책임이 있습니다. Apple은 WWDC23에서 널리 사용되는 타사 SDK를 위한 새로운 개인정보 보호 매니페스트 및 서명 기능을 발표했으며, 개발자가 앱의 개인정보 보호 매니페스트에서 일부 API 세트를 사용하는 데 대한 허용된 사유(영문)를 선언해야 함을 공지한 바 있습니다. 이러한 변경 사항은 개발자가 타사 SDK의 데이터 사용 방식, 소프트웨어 종속성 보안, 사용자 개인정보를 위해 제공되는 추가 보호 기능 등을 파악하는 데 도움이 됩니다. 3월 13일부터: App Store Connect에 사유가 필요한 API를 사..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/t4urG/btsFAfYk6pA/hwXNGcntkwgPBsSRc6MKz1/img.png)
[iOS/Xcode] Failed to load Info.plist from bundle 에러 해결하기 Xcode 업데이트 Xcode를 업데이트하고 나서 Failed to load Info.plist from bundle 에러가 발생했습니다. 저는 파이어베이스 버전이 문제였습니다. 파이어베이스를 사용하시는 분들은 한번 확인해 보세요. 10.22.0으로 변경. Firebase Apple SDK Release Notes (google.com) Firebase Apple SDK Release Notes Send feedback Firebase Apple SDK Release Notes Stay organized with collections Save and categorize content based on y..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/QWRlH/btsFqXiTmpp/qh7SNjoFRRSAzYkdmZ4vf1/img.png)
정적 라이브러리(Static Library, .a) Privacy Manifest 추가에 대한 생각 2024년 03월 13일 이후 최신 내용은 아래 링크 [iOS/Xcode] 정적 라이브러리(Static Library) Privacy Manifest 추가 (tistory.com) [iOS/Xcode] 정적 라이브러리(Static Library) Privacy Manifest 추가 [iOS/Xcode] 정적 라이브러리(Static Library) Privacy Manifest 추가하기 저는 회사에서 사용 중인 정적 라이브러리(Static Library) '.a' 파일이 있습니다. 근데 이번에 애플 뉴스에서는 라이브러리 혹은 앱에서 jiwift.tistory.com 2024년 03월 13일 이전 내용 스태틱..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lPwjD/btsFso7AnEF/xIgFbCxEPKFibrEu0NFp61/img.png)
Xcode15 iOS 앱 이름, 권한 동의, 메뉴 등 현지화를 위한 다국어 지원 앱 현지화를 위해서 String Catalog를 사용합니다. 파일을 생성할 때 이름을 정해주기만 하면 Xcode와 앱이 알아서 언어를 설정해 줍니다. String Catalog 이름은 위와 같이 설정해 주면 됩니다. Localizable: 앱 안에서 사용하는 String Catalog InfoPlist: 권한 동의나 앱 이름에서 사용하는 String Catalog 앱 안에서 사용하기 위한 String Catalog입니다. Key를 사용해서 설정된 언어를 불러옵니다. self.topTitleLabel.text = String(localized: "Key") 위와 같이 Key 자리에 미리 설정한 것을 입력해 주면 앱에서 알맞게 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/oUmjG/btsFm85JasG/e8f4kJaJxYqdHmmQRzWvTK/img.png)
Framework에 Privacy Manifest 추가 실험하기 애플에서 써드파티 라이브러리에 Privacy Manifest를 추가해야 한다는 뉴스를 접했습니다. 그래서 한번 실험 삼아 해보는 글입니다. 자세한 내용을 다루지 않습니다. Privacy Manifest를 추가하는 방법은 App 혹은 Framework 프로젝트에 PrivacyInfo 파일을 추가하고 안에 내용을 채워 넣는 것입니다. 앱에 적용하는 것은 대충 알겠는데 Framework에 추가해도 잘되는지 실험해보고 싶었습니다. 일단 임시로 Framework를 생성하고 PrivacyInfo를 추가하였습니다. 테스트를 진행할 앱 프로젝트에 'MyTest'라는 프레임워크를 추가하였습니다. 추가되었는지 확인하는 방법은 아카이브를 진행하고 Privacy..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/9YUbW/btsFm8Y3mxx/LIrWReaZINcU14JxlFM7J0/img.png)
Xcode Framework Dynamic과 Static 제일 기본적인 차이 기록 많은 것을 알아보기보다는 기본적인 차이점 조금 알아보도록 하겠습니다. Framework의 빌드 옵션에서 Dynamic과 Static을 나누어서 빌드가 가능합니다. 사용하고자 하는 앱의 프로젝트에서 Framework를 추가하고 import를 통하여 사용 가능합니다. Dynamic이던 Static이던 앱의 빌드는 성공합니다. 하지만 코드를 수행하는 곳에서 차이가 있습니다 Dynamic 프레임워크: [Embed & Sign, Embed Without Sign]으로 설정해야 코드 수행 가능 Static 프레임워크: [Embed & Sign, Embed Without Sign, Do Not Embed] 설정에서 모두 수행 가능 빌드..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c77qHF/btsFoaa40qB/L38pfT4jDvHeu2c9IQgA10/img.png)
Set Xcode Build Settings User-Defined CONFIGURATION_BUILD_DIR 설정 원하는 타겟을 선택하고 Build Setting으로 이동하고 상단에 위치한 '+'를 눌러줍니다. 그럼 이렇게 생긴 메뉴가 추가됩니다. 'Add User-Defined Setting' 선택 메뉴를 선택하면 사진 처럼 'User-Defined' 옵션칸에 새로운 setting이 추가됩니다. 저는 'CONFIGURATION_BUILD_DIR'를 추가하였습니다. ../원하는폴더이름/원하는폴더이름/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 값을 이런식으로 적용하면됩니다. ../폴더이름/라이브러리/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAM..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/clkN6c/btsD3lxHa65/drvqQVpXrnkV5Foq47TXCk/img.png)
Privacy Manifest에서 NSPrivacyTracking와 NSPrivacyTrackingDomains를 확인하기 위해서 애플에서 알려준 방법입니다. 원하는 프로젝트에서 Product -> Profile 선택해 주세요. 이러면 앱 빌드를 진행하고 완료되면 창이 하나 뜨게 됩니다. 여기서 Network를 선택해주세요. Network를 선택하면 창이 바뀌고 녹화하는 버튼을 선택할 수 있습니다. 여기서 녹화는 로그를 기록하는 것입니다. 결과를 저장할 수 있습니다. 이미 다른 녹화가 진행 중이라면 끝내고 실행할 수 있습니다. 녹화를 진행하면 문제가 되는 지점에서 표시가 됩니다. 사진을 보면 기록 화면 왼쪽에 'HTTP Traffic', 'Network Connections', Points of Inte..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nPHMQ/btsDZ3cLj3s/xelfbFNKU7NPquu5QNHk0k/img.png)
생각보다 중요한 내용인 것 같지만 경험해 본 자료도 없고 아직 PrivacyManifest를 제대로 하지 않았을 경우? 어떤 식으로 심사 과정이 진행되는지는 정보가 없어서 적용에 대한 방법들과 범위가 너무 궁금한데요… NSPrivacyTracking, NSPrivacyTrackingDomains, NSPrivacyCollectedDataTypes, NSPrivacyAccessedAPITypes 중에서 접촉되는 게 없는 타사 라이브러리도 PrivacyInfo를 추가해야하는 것인가?? https://developer.apple.com/support/third-party-SDK-requirements/ 에서 애플이 언급하지 않는 타사 라이브러리도 PrivacyInfo를 추가해야하는 것인가?? 내가 만든 정적 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/opctZ/btsDT4YdIf1/NyYCweX1VnKFMVgBzvRqUK/img.png)
[iOS/Swift] 'authorizationStatus()' was deprecated in iOS 14.0 초간단 해결 저는 위와 같이 코드를 사용해서 위치 권한 상태에 따른 팝업을 보여주도록 하였습니다. 하지만 iOS 14부터는 authorizationStatus()가 Deprecated 되기 때문에 수정을 진행하려고 합니다. 앱 최소 지원 iOS가 15이기 때문에 OS에 따른 분기는 없이 처리할 수 있습니다. CLLocationManager.authorizationStatus() 기존에는 이렇게 사용하던 코드를 CLLocationManager().authorizationStatus 이렇게 변경하면 됩니다. 소괄호를 CLLocationManager로 옮겨주기만 하면 됩니다. 아래는 사용 예시입니다..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wXFWx/btsCTwUZH6x/tGBH3uLhtqmjHUl1VADtL0/img.png)
Nams님의 프로젝트를 기반으로 수정을 진행한 코드입니다. [Swift] Multi Line Tag View 그리기 (tistory.com) [Swift] Multi Line Tag View 그리기 SwiftUI만 하다가 UIKit을 하게될 일이 생겼는데 요구사항중하나가 뷰를 크기에 맞게 여러줄로 표현해주는 뷰에요 테그를 표현하는 뷰같은 곳에 많이 쓰이는 UI로 알고있어요 결과물 부터 보시죠! nsios.tistory.com wlxo0401/MultiLineTagView: A Multi Line Tag View for iOS(Swift) (github.com) GitHub - wlxo0401/MultiLineTagView: A Multi Line Tag View for iOS(Swift) A Multi ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/BSlNZ/btsCOHa4XH5/fx0uokucJ7bJAy2d7XObk0/img.png)
SnapKit/SnapKit: A Swift Autolayout DSL for iOS & OS X (github.com) 2023년 12월 31일자로 PrivacyManifest 추가됨. 아래는 읽을 필요 없는 내용입니다. GitHub - SnapKit/SnapKit: A Swift Autolayout DSL for iOS & OS X A Swift Autolayout DSL for iOS & OS X. Contribute to SnapKit/SnapKit development by creating an account on GitHub. github.com Privacy Manifest를 필수 적용해야하는 대상들 중 하나는 SnapKit이다. 근데 이 라이브러리 마지막 업데이트는 2022년 4월이다. 인..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/biVhFH/btsCBKsqs03/smQYFKcr77e4kkJy7N47O1/img.png)
[iOS/Swift] 앱 스토어, 테스트플라이트 여러 개의 버전을 동시에 심사할 때 조심할 점 안녕하세요. 이번에는 필수적으로 알아갈 필요는 없지만 제가 겪은 일을 공유하려고 합니다. 우선 상황을 설명시켜 드리도록 하겠습니다. 저는 앱을 각각 3개의 버전을 준비하고 빌드와 제출 정보는 위와 같이 진행하였습니다. 하지만 애플 심사 과정에서 '2.0.1', '3.0.1'의 테스트 서버 ID가 로그인이 되지 않는다고 심사 반려를 당하였습니다. 처음에는 내가 빌드를 실수한 건가 생각하고 다시 빌드를 진행하고 깃에 태그도 남기고 브랜치도 따로 옮겨서 해당 빌드를 완전하게 기록했습니다. 그런데 다시 제출한 버전의 앱도 로그인이 되지 않는다고 합니다. 제 앱은 PROD, QA, DEV 이렇게 나누어진 상태인데,,, ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dcJ9IG/btsCBJ1nuUu/2KpBGOUFeRKS51H41ySCD0/img.png)
[iOS/Swift] 앱 스토어, 테스트플라이트 여러 개의 버전을 동시에 심사 제목은 위와 같이 적어 두었지만 상황을 다시 설명하자면.. 앱 스토어에 정식 버전을 제출한 상태에서 외부 테스트플라이트를 사용하기 위해 다른 버전들도 심사를 태워도 되는가?입니다. ChatGPT에게 물어본 결과 앱 스토어 심사와 테스트플라이트 심사는 따로 진행되는 것이라고 합니다. 그리고 이렇게 하시는 분들도 있다고 하여 저도 테스트를 해보았습니다. 위 사진과 같이 동시에 준비를 하였습니다. 동시에 제출 가능하다! 앱 스토어 심사는 제출을 완료하는 순간 '심사 대기 중'으로 변경되고 테스트플라이트는 외부 그룹에 넣는 순간 '심사 대기 중'으로 변경됩니다. 이로서 동시에 모두가 가능하다는 것도 알 수 있습니다. (안되면 이미 기..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/X9mhX/btsCEJGsqxL/jwHCgsOWV8PdQAa7uk4OiK/img.png)
아는 게 없어서 찾아본 내용을 정리하기 위해 작성합니다. 틀리거나, 새로 추가해야 할 내용이 있으면 댓글로 알려주시면 감사하겠습니다. 2023년 12월 25일 기준 글입니다. 현재 라이브러리들을 찾아보면 Privacy Manifest가 적용되어 있는 라이브러리들이 있습니다. 위와 같이 발빠르게 적용해 준 라이브러리들이 있습니다. 하지만 깃 커밋을 보고 제대로 되어있다고 방심하면 안 됩니다. 우선 제대로 적용이 되고있는지 확인하는 방법을 알아봅시다... 1. 프로젝트에 라이브러리를 설치하고 Archive 한다. 2. Organizer 화면에서 방금 Archive 한 빌드를 우클릭한다. 3. Privacy Report를 확인해 본다. MarqueeLabel 라이브러리 같은 경우는 깃에 커밋을 보고 설치를 했..