일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kotlin
- 개발
- ui
- alamofire
- Python
- charts
- 개발자
- 어플리케이션
- library
- 라이브러리
- PyQt
- Apple
- PyQt5
- ios
- UIButton
- modal
- UITableView
- Swift
- androidstudio
- UIKit
- Chart
- cocoapods
- Storyboard
- Chrats
- 그래프
- Android
- Xcode
- TableView
- graph
- button
- Today
- Total
목록전체 글 (271)
Jiwift
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..
[iOS/Swift] 카카오 공유 SDK 라이브러리 피드(Feed) 탬플릿 간단한 조사 Image, Title, Description, Button 추가 가능합니다. Title이 생략되지 않는 최대 글자 수 숫자, 영문, 한글 길이가 다르므로 사용하시는 제목에 맞춰 테스트 해봐야합니다. Description이 생략되지 않는 최대 글자 수 텍스트 타입으로 메시지 발송하시면 200자까지 가능하나 Feed은 두줄만 가능합니다. 기기 해상도, 글자 크기에 따라서 다르게 보일 수 있지만 최대 두줄까지만 가능합니다. Title과 Description에서 특장 문자를 강조하기 텍스트 커스터마이징은 불가능합니다. ex) 굵기, 강조 등 카카오톡에 정해진 양식을 사용해야합니다. 우리가 JSON 형태를 넘기면 카카오톡 앱..
[iOS/Swift] Charts, DGCharts 차트 라이브러리 그래프를 만들기 위한 라이브러리를 이름을 소개하고 정리하는 글입니다. ChartsOrg/Charts: Beautiful charts for iOS/tvOS/OSX! The Apple side of the crossplatform MPAndroidChart. (github.com) GitHub - ChartsOrg/Charts: Beautiful charts for iOS/tvOS/OSX! The Apple side of the crossplatform MPAndroidChart. Beautiful charts for iOS/tvOS/OSX! The Apple side of the crossplatform MPAndroidChart. - ..
[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..
[iOS/Swift] 카카오 공유(Share) SDK 라이브러리 간단한 조사 KakaoSDKShare, KakaoSDKTemplate, KakaoSDKCommon 설치 필요 필수 라이브러리입니다. KakaoSDKShare만 설치해도 나머지 두개가 같이 설치됩니다. Package에서 dependencies 정보를 통해 추가 라이브러리 자동 설치됩니다. Info.plist 파일 Queried URL Schemes 추가 적용 필요 kakaokompassauth, kakaolink URL Schemes 추가 적용 필요 kakao네이티브Key 추가합니다. 만약 네이티브 key가 ‘1438’ 이라면 ‘kakao1438’로 추가 KakaoSDKShare, KakaoSDKTemplate, KakaoSDKCommon 사..
[iOS] Guideline 4.2 - Design - Minimum Functionality 어플을 만들 때 고민하지 않고 일단 만들기로 결심하고 나서 생각나면 일단 만들고 최소 기능으로 제출을 진행하고 있다. 이번 앱은 불안 불안했지만 역시나 기능이 부족하여 리젝을 받았다. 예상한 결과였지만 회신을 하지 않고 기능을 새롭게 추가하여 다시 제출하였다. 근데 역시나 같은 이유로 반려.. 처음부터 기능이 부족한 앱이었기 때문에 추가를 진행해도 큰 변화가 없었던 이유인 것 같다. 그래서 그냥 이 앱은 제출을 하지 않기로 했다. 다른 아이디어의 앱을 다시 만드는 게 더 빠를 것 같아서 다른 앱 제작을 시작했다.
Kakao SDK를 설치하고 사용하기 전에 간단하게 알아보는 시간입니다. 내용은 문서, 깃, 직접 질문을 통해서 알아보았습니다. https://github.com/kakao/kakao-ios-sdk SDK 다운로드 가능합니다. 개발자 센터 문서에 branch를 master로 설치하라고 되어있지만 Exact Version해도 문제는 없습니다. 2.22.0부터 Privacy Manifest 적용되었습니다. Xcode 15.3부터는 2.21.1 미만 버전에서 AppStore Connect 업로드 에러 발생합니다. ex) KakaoSDKCertCore, KakaoSDKFriendCore 라이브러리 종류가 많기 때문에 잘 골라서 설치를 해야 할 것 같습니다. KakaoSDK를 선택하면 모든 라이브러리가 설치됩니다..
여러분의 Apple Privacy Manifest 관련한 정보를 공유, 경험, 질문 등을 댓글로 남겨주세요. 앞으로 애플에서 적용될 정책 중 Privacy Manifest가 있습니다. 원래는 작년부터 심사 과정에서 Issue 메일을 보내주기로 했으나 별도에 공지를 하지 않고 올해까지 버티다가 3월 13일부터 메일을 발송하고 있습니다. 그리고 5월 1일부터는 애플이 원하는 대로 적용하지 않은 경우 심사에 영향이 미칠 수 있다고 합니다. Privacy Manifest에 입력해야 하는 내용은 아래와 같습니다. NSPrivacyTracking NSPrivacyTrackingDomains NSPrivacyCollectedDataTypes NSPrivacyAccessedAPITypes 위 목록에서 앱과 라이브러리 ..
Privacy Manifest 적용 유무를 확인하기 위해 메일을 받으려면 1. 테스트플라이트 외부 배포를 진행한다. - 외부 테스터에게 배포하는 빌드를 제출하는 경우 계속해서 메일 받을 수 있습니다. 2. 앱스토어 출시 심사 제출 - 출시를 위한 심사를 제출하고 취소하면서 계속 메일을 받을 수 있습니다.
[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..
테스트를 위해서 '수동 출시' 옵션을 설정하고 애플 심사를 제출하였습니다. 개인앱은 제출하고 1분 정도 지나니깐 문제 되는 항목들을 메일로 받았습니다. 일부러 대응하지 않은 버전을 올렸는데, Privacy Manifest 문제 메일을 원래 이렇게 빨리 보내주는지는 더 확인해봐야 할 것 같네요. 저 같은 경우 총 2개를 테스트했습니다. 개인앱 - 오픈소스만 존재함, - 오픈소스 개발자들이 대응해준게 있으면 일단 최신 버전으로 사용 - 앱에 대한 PrivacyManifest는 그냥 단순하게 PrivacyInfo만 추가만 한 상태, 완벽하게 내용을 채우지 않음 - 제출 후 심사 대기 상태에서 메일이 1분안에 날아왔음. - Privacy Nutrition Label Types도 안했는데 메일에 내용이 없음 결과..
Privacy Manifest 정책 애플 일정 뉴스 App Store 앱 제출을 위한 개인정보 보호 관련 업데이트 2024년 02월 29일 개발자는 자신의 앱에 포함된 모든 코드에 대한 책임이 있습니다. Apple은 WWDC23에서 널리 사용되는 타사 SDK를 위한 새로운 개인정보 보호 매니페스트 및 서명 기능을 발표했으며, 개발자가 앱의 개인정보 보호 매니페스트에서 일부 API 세트를 사용하는 데 대한 허용된 사유(영문)를 선언해야 함을 공지한 바 있습니다. 이러한 변경 사항은 개발자가 타사 SDK의 데이터 사용 방식, 소프트웨어 종속성 보안, 사용자 개인정보를 위해 제공되는 추가 보호 기능 등을 파악하는 데 도움이 됩니다. 3월 13일부터: App Store Connect에 사유가 필요한 API를 사..
앱을 만들면서 설정 메뉴를 어떻게 구성하고 만들어 나가야 하는지 생각을 공유 앱 더 보기(설정) 메뉴는 어떤 것들이 필요할까? with 복붙태그 # '복붙태그' 앱은 출시 목적도 있으나 제가 배운 것들을 배포하여 테스트하는 목적을 가지고 있습니다. 그렇기 때문에 보시기에는 기능을 개발 추가하는 데 있어 계속 돌아 돌아간다는 느낌을 받으실 수 있다는 점 양해 부탁드립니다. 안녕하세요. 앱을 만들다 보면 메뉴는 어떻게 구성하고 설정은 어떻게 해야 하는지 고민할 때가 많은 것 같습니다. 저 같은 경우는 디자인을 잘하지 못하기 때문에 기본적인 구성을 갖춘 앱처럼 보이기 위해서 '더 보기' 메뉴를 추가해서 허전함과 구색을 갖추었습니다. 초기에 메뉴입니다. 하단 탭바는 어느 정도 구성을 갖춘 것 같으나, 설정에서는..
[SPM] Swift Package 라이브러리 02 - Privacy Manifest(PrivacyInfo) 추가 1. PrivacyInfo 파일 추가 배포하려는 라이브러리의 Package에 'App Privacy'를 추가해 줍니다. ' 2. PrivacyInfo 내용 추가 추가된 PrivacyInfo 파일의 이름은 변경하지 않아야 합니다. 그리고 +버튼을 누르면 리스트가 나오는데 추가해 주면 됩니다. '+' 버튼을 눌러서 입력이 필요한 내용을 추가합니다. 자동 완성이 되니깐 일단 추가합니다. 3. Package 설정 package.swift로 이동해서 target의 설정을 변경합니다. 기본적으로는 name만 있을 텐데, 저는 path와 resoureces를 추가하였습니다. path는 설정하지 않아도 되..
[SPM] Swift Package 라이브러리 01 - 생성하는 법 1. Git 생성 및 Clone SPM 라이브러리를 저장하고 배포하기 위한 TestSPM Git을 생성합니다. 원하는 위치에 Clone을 수행합니다. ignore 파일이 필요한 경우 저는 이걸 사용했습니다. 2. Swift Package 생성 swift package init 터미널로 'TestSPM' 폴더로 이동하고 'swift package init'을 해줍니다. 그러면 이렇게 Package 파일들이 생성되는데 이 상태로 깃에 한번 올려봅니다. 3. 코드 작성 public class TestSPM { public init() { } public func sayHello(name: String) { print("\(name) Hello..
[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..
SPM Privacy Manifest 추가를 까먹지 않기 위해 간단하게 메모한 글입니다. 다음에 더 자세하게 다루겠습니다. Privacy Manifest를 공부하다가 SPM을 통한 라이브러리 배포를 진행하고 Privacy Manifest까지 적용했습니다. 테스트를 위해서 앱을 만들어서 배포를 할 정도로 직접 하지 않으면 만족하지 못해서 간단하게 라이브러리를 하나 만들어서 깃으로 배포하고 테스트를 진행해 보았습니다. 방법을 간단하게 말하면 Package를 열어서 리소스에 xcprivacy만 잘 연결해 주면 적용이 됩니다. 이전에는 Target 설정도 중요한 줄 알았는데, 아니었습니다. 그냥 Package 설정만 잘하면 됩니다. 다음에 더 자세히 다루겠습니다. 테스트를 위한 라이브러리 wlxo0401/JDr..
정적 라이브러리(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일 이전 내용 스태틱..
Xcode15 iOS 앱 이름, 권한 동의, 메뉴 등 현지화를 위한 다국어 지원 앱 현지화를 위해서 String Catalog를 사용합니다. 파일을 생성할 때 이름을 정해주기만 하면 Xcode와 앱이 알아서 언어를 설정해 줍니다. String Catalog 이름은 위와 같이 설정해 주면 됩니다. Localizable: 앱 안에서 사용하는 String Catalog InfoPlist: 권한 동의나 앱 이름에서 사용하는 String Catalog 앱 안에서 사용하기 위한 String Catalog입니다. Key를 사용해서 설정된 언어를 불러옵니다. self.topTitleLabel.text = String(localized: "Key") 위와 같이 Key 자리에 미리 설정한 것을 입력해 주면 앱에서 알맞게 ..
Framework에 Privacy Manifest 추가 실험하기 애플에서 써드파티 라이브러리에 Privacy Manifest를 추가해야 한다는 뉴스를 접했습니다. 그래서 한번 실험 삼아 해보는 글입니다. 자세한 내용을 다루지 않습니다. Privacy Manifest를 추가하는 방법은 App 혹은 Framework 프로젝트에 PrivacyInfo 파일을 추가하고 안에 내용을 채워 넣는 것입니다. 앱에 적용하는 것은 대충 알겠는데 Framework에 추가해도 잘되는지 실험해보고 싶었습니다. 일단 임시로 Framework를 생성하고 PrivacyInfo를 추가하였습니다. 테스트를 진행할 앱 프로젝트에 'MyTest'라는 프레임워크를 추가하였습니다. 추가되었는지 확인하는 방법은 아카이브를 진행하고 Privacy..
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] 설정에서 모두 수행 가능 빌드..
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..
String Catalog를 사용해서 앱 다국어 지원 완료 String Catalog를 사용해서 앱 다국어를 추가한 모습입니다. 퇴근하고 개발하다 보니 시간이 많이 부족하여 화면과 문구를 특정 문자로 정의하는 부분은 스킵하였습니다. 그래서 Key를 표현하고자 하는 문자 그대로를 사용하기로 했습니다.. 다른 사람들과 공유하는 프로젝트가 아니기 때문에 특정 규칙 없이 문자 그대로를 사용해도 적용해야 하는 위치와 내용을 알 수 있을 것 같았기 때문입니다. (기능이 많아지면 문제가 생길 것 같음) 그럼에도 불구하고 나 혼자서도 혼란이 생길 수 있는 부분은 KEY 문자 앞에 구분을 위해 "태그 그룹", "태그"와 같은 문구를 추가하여 구분 지을 수 있게 했습니다. String Catalog를 사용하면 앱 다국..
이번에는 앱의 다국어 지원을 추가해보려고 합니다. 앱이 기능이 더 추가된다고 생각하면 지금 타이밍에 하는 게 맞는 것 같아서 추가를 해둬야겠습니다. 영어와 한글 두개를 먼저 지원하는 방향으로 가야겠습니다. 다국어 지원을 하기 위해 찾아본 링크만을 위한 글입니다. iOS Localization. Xcode 15 신기능 스트링 카탈로그 | by woozoobro | Medium Swift) Localizing - 다국어 처리하기 (tistory.com) Swift) Localizing - 다국어 처리하기 안녕하세요 :-) 소들입니다 오늘은 Swift에서는 다국어를 어떻게 처리하는지에 대해 공부할 거예여! 다국어 처리가 무엇이냐 하면 우리가 화면에 다음과 같은 Label을 하나 만들고 text를 지정했어 ba..
iOS 앱 데이터 서버 없이 백업과 복원을 무료로 하는 법 (tistory.com) iOS 앱 데이터 서버 없이 백업과 복원을 무료로 하는 법iOS 환경의 앱을 Swift로 구현하면서 앱 데이터 백업과 복원을 무료로 하는 방법과 생각을 공유합니다. 개인이 앱을 만들다 보면 서버 없이 구현하는 경우가 많습니다. 이런 경우 DB는 다양한 라이jiwift.tistory.com 지난번에 위와 같은 글을 작성한 적이 있습니다. 일단 생각한대로 개발을 진행했고 생각한대로 동작하는 것까지 완료했습니다. 하지만 압축 과정에서 사용한 ZIPFoundation 라이브러리가 패스워드를 지원하지 않았기 때문에 압축에 비밀번호는 못 걸었습니다. 더 좋은 백업 방법이 있겠지만 왜 이 방법을 선택했냐면.. 그냥 해보고 싶었기 때문..
애플 Privacy Manifest 관련 메일을 받아보신 분이 있나요?? 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 2023년에 발표된 내용에 Privacy Manifest가 있습니다. 그 발표 후로 문제가 되는 앱에 대해서는 메일을 통해 알려주겠다고 나와있고, 2024년 봄부터는 앱 심사에도 영향이 간다고 공지가 되어있습니다. 혹시 위 내용과 관련해서 메일을 받..
Privacy Manifest를 앱에 추가해 보신 분 있나요?? 앱과 라이브러리에 PrivacyInfo를 추가해야 하는 것으로 알고 있는데, 앱에는 어떻게 추가해야 할까요?? 오픈 소스 라이브러리들이 하는 방식과 동일하게 그냥 추가하면 되는 것인지... 의견을 공유해 주시면 감사하겠습니다.