일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Xcode
- charts
- ios
- 그래프
- modal
- button
- PyQt5
- androidstudio
- Storyboard
- UIKit
- alamofire
- Android
- Apple
- 개발
- graph
- Swift
- ui
- 라이브러리
- Chart
- PyQt
- 개발자
- 어플리케이션
- cocoapods
- UIButton
- library
- kotlin
- UITableView
- Python
- Chrats
- TableView
- Today
- Total
목록iOS Dev/iOS (43)
Jiwift
Notification Service Extension이 작동하지 않을 때 확인해야 하는 몇 가지 사항들을 정리하도록 하겠습니다. 우선 해당 Extension은 앱에서 받은 Push의 내용을 수정하기 위해서 사용합니다. 예시 사용법들은 Node 환경 Firebase로 테스트하고 작성되었습니다. 1. Extension 번들이 제대로 등록되었는지 확인- Xcode에서 Extension을 추가하면 Bundle identifier가 설정되었을 겁니다. 하지만 그게 애플 개발자 센터 Identifiers에 등록되지 않았을 수 있습니다. 확인을 통하여 추가를 해주세요. - 직접 추가하거나 아카이브 후 앱스토어 커넥트로 업로드하면 자동으로 가능합니다. 2. Push를 전송하는 서버와 앱과 연동이 제대로 되었는지 ..
Bundle Identifier와 CloudKit Containers는 변경되면 안된다. 한번 정하면 다신 변경할 일이 없지만 혹시나 기록. Containers를 고정한 상태로 Bundle Indentifier를 변경해보았는데, iCloud에서 데이터를 읽지 못한다. 너무나 당연한 이야기.
앱을 애플 앱스토어에 제출하는 과정은 여러 단계입니다. 각 단계는 앱의 현재 상태를 나타내며, 심사 상태를 이해하고 적절히 대응하는 것이 중요합니다. 아래는 일반적인 진행 상황과 예외 상황에 대한 설명입니다.일반적인 진행 상황제출 준비중설명: App Store Connect에 앱을 생성하였을 때의 기본적인 상태입니다.대응 방법: 앱의 기본 정보를 입력하고, 제출 준비를 진행합니다.심사 준비됨설명: 제출을 위한 준비를 마친 상태로, App Store Connect에서 “심사에 추가” 버튼을 누른 상황입니다.대응 방법: 모든 제출 서류와 요구사항을 확인하고, 심사에 필요한 모든 정보를 입력합니다.심사 대기중설명: “앱 심사에 제출” 버튼을 눌러 애플 심사원이 심사를 해주기를 기다리는 단계입니다.대응 방법: ..
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] 앱에서 정적 라이브러리(.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..
시작한 프로젝트에 참여하게 되면 그 틀을 이어서 가면 좋겠지만, 새로 프로젝트를 구성하다 보면 폴더 구조를 어떻게 잡아나갈지 고민을 많이 하게 되는 것 같습니다. 저는 그래서 초반에는 프로젝트를 진행하면서도 구조를 많이 변경했었습니다. 근데 개인 프로젝트를 계속 하다보니 어느 정도 제 손에 맞는 구조를 찾게 되었고 지금은 아래와 같이 사용하고 있습니다. 처음에는 화면별로 구성요소들을 모아서 작업을했었는데, 공통적으로 사용하는 애들이 생기면서 그것을 또 따로 묶게 되고 하다가 각 Class 별로 크게 나누고 그 안에서 세부적으로 더 나누는 것을 선택하였습니다. 더 좋은 구조가 있을거라고 생각하지만 프로젝트를 진행하면서도 계속 변경되기도 할 것이고, 많이 나누는 것이, 적게 나누는 것이 어떤 것이 좋은지는 ..
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..
애플에서 제공해 주는 MapKit을 추가하는 방법을 기록. 위와 같이 애플 지도를 화면에 띄우는 것이 목적입니다. 단순하게 보여주기 위한 것은 매우 간단하기 때문에 쉽게 따라 하실 수 있습니다. import MapKit 맵을 사용하기 위해서는 MapKit을 import해야합니다. 원하는 위치에 추가해 주세요. let mapView = MKMapView() MKMapView를 선언합니다. 변수는 간단하게 맵뷰로 하겠습니다. self.view.addSubview(self.mapView) 이제 선언된 맵뷰를 원하는 View에 추가를 해주세요. 저는 최상위 View에 추가를 했습니다. // Auto Layout 제약 설정 self.mapView.translatesAutoresizingMaskIntoConstra..
여러분의 Apple Privacy Manifest 관련한 정보를 공유, 경험, 질문 등을 댓글로 남겨주세요. 앞으로 애플에서 적용될 정책 중 Privacy Manifest가 있습니다. 원래는 작년부터 심사 과정에서 Issue 메일을 보내주기로 했으나 별도에 공지를 하지 않고 올해까지 버티다가 3월 13일부터 메일을 발송하고 있습니다. 그리고 5월 1일부터는 애플이 원하는 대로 적용하지 않은 경우 심사에 영향이 미칠 수 있다고 합니다. Privacy Manifest에 입력해야 하는 내용은 아래와 같습니다. NSPrivacyTracking NSPrivacyTrackingDomains NSPrivacyCollectedDataTypes NSPrivacyAccessedAPITypes 위 목록에서 앱과 라이브러리 ..
[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..
정적 라이브러리(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일 이전 내용 스태틱..
Privacy Manifest에서 NSPrivacyTracking와 NSPrivacyTrackingDomains를 확인하기 위해서 애플에서 알려준 방법입니다. 원하는 프로젝트에서 Product -> Profile 선택해 주세요. 이러면 앱 빌드를 진행하고 완료되면 창이 하나 뜨게 됩니다. 여기서 Network를 선택해주세요. Network를 선택하면 창이 바뀌고 녹화하는 버튼을 선택할 수 있습니다. 여기서 녹화는 로그를 기록하는 것입니다. 결과를 저장할 수 있습니다. 이미 다른 녹화가 진행 중이라면 끝내고 실행할 수 있습니다. 녹화를 진행하면 문제가 되는 지점에서 표시가 됩니다. 사진을 보면 기록 화면 왼쪽에 'HTTP Traffic', 'Network Connections', Points of Inte..
생각보다 중요한 내용인 것 같지만 경험해 본 자료도 없고 아직 PrivacyManifest를 제대로 하지 않았을 경우? 어떤 식으로 심사 과정이 진행되는지는 정보가 없어서 적용에 대한 방법들과 범위가 너무 궁금한데요… NSPrivacyTracking, NSPrivacyTrackingDomains, NSPrivacyCollectedDataTypes, NSPrivacyAccessedAPITypes 중에서 접촉되는 게 없는 타사 라이브러리도 PrivacyInfo를 추가해야하는 것인가?? https://developer.apple.com/support/third-party-SDK-requirements/ 에서 애플이 언급하지 않는 타사 라이브러리도 PrivacyInfo를 추가해야하는 것인가?? 내가 만든 정적 ..
[iOS/Swift] 'authorizationStatus()' was deprecated in iOS 14.0 초간단 해결 저는 위와 같이 코드를 사용해서 위치 권한 상태에 따른 팝업을 보여주도록 하였습니다. 하지만 iOS 14부터는 authorizationStatus()가 Deprecated 되기 때문에 수정을 진행하려고 합니다. 앱 최소 지원 iOS가 15이기 때문에 OS에 따른 분기는 없이 처리할 수 있습니다. CLLocationManager.authorizationStatus() 기존에는 이렇게 사용하던 코드를 CLLocationManager().authorizationStatus 이렇게 변경하면 됩니다. 소괄호를 CLLocationManager로 옮겨주기만 하면 됩니다. 아래는 사용 예시입니다..
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월이다. 인..
[iOS/Swift] 앱 스토어, 테스트플라이트 여러 개의 버전을 동시에 심사할 때 조심할 점 안녕하세요. 이번에는 필수적으로 알아갈 필요는 없지만 제가 겪은 일을 공유하려고 합니다. 우선 상황을 설명시켜 드리도록 하겠습니다. 저는 앱을 각각 3개의 버전을 준비하고 빌드와 제출 정보는 위와 같이 진행하였습니다. 하지만 애플 심사 과정에서 '2.0.1', '3.0.1'의 테스트 서버 ID가 로그인이 되지 않는다고 심사 반려를 당하였습니다. 처음에는 내가 빌드를 실수한 건가 생각하고 다시 빌드를 진행하고 깃에 태그도 남기고 브랜치도 따로 옮겨서 해당 빌드를 완전하게 기록했습니다. 그런데 다시 제출한 버전의 앱도 로그인이 되지 않는다고 합니다. 제 앱은 PROD, QA, DEV 이렇게 나누어진 상태인데,,, ..
[iOS/Swift] 앱 스토어, 테스트플라이트 여러 개의 버전을 동시에 심사 제목은 위와 같이 적어 두었지만 상황을 다시 설명하자면.. 앱 스토어에 정식 버전을 제출한 상태에서 외부 테스트플라이트를 사용하기 위해 다른 버전들도 심사를 태워도 되는가?입니다. ChatGPT에게 물어본 결과 앱 스토어 심사와 테스트플라이트 심사는 따로 진행되는 것이라고 합니다. 그리고 이렇게 하시는 분들도 있다고 하여 저도 테스트를 해보았습니다. 위 사진과 같이 동시에 준비를 하였습니다. 동시에 제출 가능하다! 앱 스토어 심사는 제출을 완료하는 순간 '심사 대기 중'으로 변경되고 테스트플라이트는 외부 그룹에 넣는 순간 '심사 대기 중'으로 변경됩니다. 이로서 동시에 모두가 가능하다는 것도 알 수 있습니다. (안되면 이미 기..
아는 게 없어서 찾아본 내용을 정리하기 위해 작성합니다. 틀리거나, 새로 추가해야 할 내용이 있으면 댓글로 알려주시면 감사하겠습니다. 2023년 12월 25일 기준 글입니다. 현재 라이브러리들을 찾아보면 Privacy Manifest가 적용되어 있는 라이브러리들이 있습니다. 위와 같이 발빠르게 적용해 준 라이브러리들이 있습니다. 하지만 깃 커밋을 보고 제대로 되어있다고 방심하면 안 됩니다. 우선 제대로 적용이 되고있는지 확인하는 방법을 알아봅시다... 1. 프로젝트에 라이브러리를 설치하고 Archive 한다. 2. Organizer 화면에서 방금 Archive 한 빌드를 우클릭한다. 3. Privacy Report를 확인해 본다. MarqueeLabel 라이브러리 같은 경우는 깃에 커밋을 보고 설치를 했..
아는 게 없어서 찾아본 내용을 정리하기 위해 작성합니다. 틀리거나, 새로 추가해야 할 내용이 있으면 댓글로 알려주시면 감사하겠습니다. 2023년 12월 24일 기준 글입니다. Upcoming third-party SDK requirements - Support - Apple Developer Upcoming third-party SDK requirements - Support - Apple Developer Feedback Assistant Submit feedback, report bugs, and request enhancements to APIs and developer tools. Send us feedback developer.apple.com Privacy Manifest와 함께 서명을 추가해..
아는 게 없어서 찾아본 내용을 정리하기 위해 작성합니다. 틀리거나, 새로 추가해야 할 내용이 있으면 댓글로 알려주시면 감사하겠습니다. 2023년 12월 24일 기준 글입니다. [iOS/Swift] Privacy Manifest Describing use of required reason API Describing use of required reason API | Apple Developer Documentation Describing use of required reason API | Apple Developer Documentation Ensure your use of covered API is consistent with policy. developer.apple.com 이것은 무엇인가.. Priv..
아는 게 없어서 찾아본 내용을 정리하기 위해 작성합니다. 틀리거나, 새로 추가해야 할 내용이 있으면 댓글로 알려주시면 감사하겠습니다. 2023년 12월 24일 기준 글입니다. Alamofire 깃 허브 이슈를 보던 중에 Privacy Manifest라는 것을 보았다.. 이게 뭘까 뭔지 몰라도 귀찮고 어떻게 보면 큰 일일수도 있을 것 같은 녀석이다.. Get started with privacy manifests - WWDC23 - Videos - Apple Developer Get started with privacy manifests - WWDC23 - Videos - Apple Developer Meet privacy manifests: a new tool that helps you accuratel..
iOS 프로젝트를 개발하면서 웹킷에서 정적웹이라도 보여야하는 경우가 있습니다. 상황마다 다를 수 있겠지만.. 쉽게 말하면 웹 서버 없이 HTML 파일을 가지고 웹킷에서 바로 사용 가능한 경우에 쓰입니다. 우선 웹을 띄운다는 소리는 웹의 구성 파일들이 있을 것입니다. 저는 web이라는 폴더 안에 폰트, 이미지, index 등을 넣어두었습니다. 이제 이 폴더를 iOS 프로젝트로 옮겨야합니다. - Copy items if needed - Create folder references ("Create groups"는 하면 안됩니다.) - Add to targets 위의 옵션으로 폴더를 가지고 옵니다. . └── TestEx/ └── TestEx/ ├── web/ │ ├── index.html │ ├── imag..
이번에는 iOS에서 주소 검색 기능을 구현하도록 하겠습니다. 무료 사용을 위해서 다음(카카오)에서 제공해 주는 API를 사용하도록 하겠습니다. [Open API] 카카오(다음) 주소 검색 API 사용 (tistory.com) [Open API] 카카오(다음) 주소 검색 API 사용 서비스에서 주소 검색이 필요한 경우에 사용하기 좋은 무료 API를 소개합니다. 다음에서 제공해 주는 API를 사용하면 쉽게 웹과 앱에서 주소 검색 기능을 구현할 수 있습니다. Key를 발급받을 필요 jiwift.tistory.com 우선 위에 글을 통해서 다음 주소 검색 API를 사용하기 위한 웹을 준비합니다. 위 글에는 iOS에서 사용하기 위한 다음 주소 검색 웹 코드와 적용법이 있습니다. // 네이티브 앱 코드 호출 let..
[iOS/Swift] Xcode 15 신기능 Assets 바로 사용하기 이미지, 색상 정의 (tistory.com) [iOS/Swift] Xcode 15 신기능 Assets 바로 사용하기 이미지, 색상 정의 급하게 작성하는 글... 불과 몇 시간 전에 [iOS/Swift] 색상 정의하고 관리하기 Assets, Enum, Extension (tistory.com) [iOS/Swift] 색상 정의하고 관리하기 Assets, Enum, Extension 앱 개발을 하다 보면 색상을 매번 적 jiwift.tistory.com Xcode 15 이상 버전을 사용하시는 분들은 최신 기능을 사용해보세요. 위에 글에서 정리되어있습니다.!! 기존에 방법이 궁금하신 분들은 아래 내용을 끝가지 읽어주세요.!! 앱 개발을 하다..
안녕하세요. 이번에는 iOS 앱의 처음 실행하는 경우에만 실행하는 로직들을 다루기 위한 글을 작성하려고 합니다. 이게 말이 iOS이지 사실 어느 프로그래밍을 하던 사용되는 방식을 비슷할 것이라고 봅니다. 다양한 방법이 있겠지만, 저는 UserDefatuls를 사용한 방법으로 진행할 것입니다. // 결과를 저장하는 함수 static func setIsFirstLaunch() { // UserDefaults에 값을 저장 let defaults = UserDefaults.standard defaults.set(true, forKey: "isFirstLaunch") } // 결과를 받아오는 함수 static func getIsFirstLaunch() -> Bool { let defaults = UserDefau..
UIPasteboard.general.string = "저장 내용" 정말 간단한 코드면 원하는 내용을 복사할 수 있습니다. 원하는 버튼을 선택했을 때, 원하는 로직이 동작했을 때 위 코드를 사용해서 내용을 복사를 구현할 수 있습니다. UIPasteboard.general.image = UIImage(systemName: "car") 원하는 이미지도 이렇게 해서 복사 가능합니다.
[iOS/Swift] Xcode 계속 로딩 빌드가 안 끝날 때, 디바이스 등록 확인 정 - 말 많은 원인들이 있겠지만 생각나는 거 하나 적어보겠습니다. 사실 별거 없습니다. 정말 간단하지만 크게 신경 안 쓰다 보면 다른 곳에서 원인을 찾고 있을 것 같은 것 중 하나를 작성합니다. Xcode가 빌드가 계속 로딩 상태에 빠저 있는 듯한 느낌을 받을 때가 있는데, 사실 자주는 없습니다. 언제냐 하면 새로운 디바이스를 연결했을 때입니다. 누구나 알고 있지만 어쩌다 한번 일어나기 때문에 까먹을 때도 있으니 Xcode 로딩이 안 끝날 때는 프로비저닝 뭐 문구가 있는지.. 디바이스 등록은 했는지.. 확인을 해봅시다. 등록이 제대로 되었는지는 개발자 센터에서 확인합니다. 개발자 센터에서 기기를 들어가 주세요. 그럼 이..
[iOS/Swift] TestFlight 이전 빌드 다시 받기 [iOS/Swift] 테스트플라이트 이전 빌드 다시 받기 이번에는 TestFlight된 이전 빌드를 다시 받아 보려고 합니다. 생각보다 TestFlight 앱을 자세하게 보시는 분들이 없는 것을 알고 글을 작성하였습니다. 사실 정말 간단하기 때문에 그렇게 긴글이 되지 않습니다. 저는 하급 노동자이기 때문에 TestFlight에 있는 앱은 모자이크 처리하는 점 양해 부탁드립니다. 테스트플라이트를 접속하면 내가 속했던 테스트 앱들이 나오게 됩니다. 거기서 이전 빌드를 '원하는 앱'을 선택해주고 메뉴에서 '이전 빌드'를 선택해서 들어가주세요. '이전 빌드'를 들어오게되면 테스트가 등록된 버전들이 나오게 됩니다. 여기서 원하는 버전을 선택해서 들어가..
iOS가 업데이트되면서 개발자 모드를 사용하기 위해서 설정에서 활성화를 해야 하는 단계가 추가되었습니다. 어렵진 않으나 어쩌다 한번 설정하기 때문에 헷갈리는 경우가 있어 블로그에 저장하도록 하겠습니다. 아이폰 설정 -> 개인정보 보호 및 보안 -> 개발자 모드 -> 활성화 위 순서대로 개발자 모드를 활성화합니다. 여기서부터는 애플이 하라는 대로 수행하면 되기 때문에 따로 알아볼 필요는 없습니다. 혹시 모르니 일단 다음 절차들이 궁금하신 분들은 계속 읽어주세요. 개발자모드를 활성화하면 재시동을 요구합니다. 아이폰이 재시동하면 Alert으로 한번 더 확인하고 단말기에 비밀번호가 설정된 경우 암호를 입력하면 됩니다. 이로서 개발자 모드를 활성화를 완료했습니다.