일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 개발
- Swift
- Chart
- 어플리케이션
- Xcode
- ios
- graph
- 라이브러리
- cocoapods
- kotlin
- Chrats
- Apple
- UITableView
- PyQt
- 개발자
- UIKit
- UIButton
- button
- library
- ui
- PyQt5
- charts
- Python
- 그래프
- Storyboard
- TableView
- Android
- modal
- androidstudio
- alamofire
- Today
- Total
목록나의 공부 (317)
Jiwift
안녕하세요. 이번에는 Xcode에서 iOS 프로젝트를 생성하도록 하겠습니다. Xcode를 처음 실행하면 버전과 프로젝트 생성 및 불러오기를 진행할 수 있습니다. 맨 위 프로젝트 생성 메뉴를 선택해서 넘어갑니다. 1. 새로운 프로젝트 생성 2. Git에서 프로젝트 Clone 3. 맥에 존재하는 프로젝트 불러오기 프로젝트 템플릿을 고를 수 있습니다. iOS, iPad 앱을 만들기 위해서는 iOS -> App을 선택해주세요. Product Name: 프로젝트 이름을 설정합니다. Team: 소속한 Team을 선택합니다. 애플 아이디가 로그인되어있다면 선택 가능한 팀이 보일 것 입니다. Organization Identifier: 보통 소속된 도메인에서 www를 빼고 역순으로 작성합니다. 없어도 비슷하게 양식 맞..
That $50,000 Mac Pro you bought in 2019 can’t make apps for the Vision Pro. - The Verge That $50,000 Mac Pro you bought in 2019 can’t make apps for the Vision Pro. - The Verge Developer Steve Troughton-Smith spotted a fun little note today on the download page for the Xcode 15.1 beta that says a Mac with Apple Silicon is required if you want to develop for visionOS. So alas, you can’t use a deck..
안녕하세요. 오늘은 직접 개발한 오토마우스 어플리케이션을 소개하려고합니다. 개발을 진행하고 첫 버전을 공유한지는 시간이 흘렀지만, 블로그에는 처음으로 작성하네요. 그냥 오토마우스가 필요해서 찾아보던 중에 맥에서 사용하기에 마음에 드는게 없어서 직접 개발해서 사용했던 것을 공유해보자라는 생각으로 공개했습니다. wlxo0401/MAutoClick: Auto Clicker for macOS the 'MAutoClick' (github.com) GitHub - wlxo0401/MAutoClick: Auto Clicker for macOS the 'MAutoClick' Auto Clicker for macOS the 'MAutoClick'. Contribute to wlxo0401/MAutoClick develo..
블로그를 시작한지 어느덧 1년이 다되간다. 처음에는 노션을 통해서 개발 블로그를 시작했으나 이것 저것 관리하는게 귀찮아서 티스토리로 이사를 완료했다. 월간 그래프를 보면 방문수가 초기에 비해서 많이 상승한 상태로 더 이상 오르지 않는 모습을 보여주고 있다. 만족은 하고있지만 더 이상 증가 하지 않는 모습은 많이 아쉽긴 하다. 일간 그래프를 보면 내 블로그 특징이 많이 나온다. 많은 사람들이 쉬는 날에는 코딩 관련해서 검색을 하지 않는 다는 것을 알 수 있다. 처음엔 그냥 우연인가 싶었으나 공휴일이 연속적으로 있거나 주말이 낀 날은 확실하게 차이가 심하다. 즉 평일에만 블로그 유입이 잘나온다는 소리다. 주말에도 들어와주시는 분들은 항상 감사하고 부지런 하시니 성공하실 겁니다 ㅎㅎ.. 개발 블로그를 운영하다..
해당 문제는 웹뷰에서 나이스 인증 화면을 window.open 방식을 통해서 구현하는 경우 발생하던 문제였다. 개발 환경 구현 방법에 따라서 문제가 해결 될 수 있고 아닐 수 있으니 빠르게 빠르게 시도해보고 아니라면 다른 방법을 시도해보자. 처음에는 App Transport Security Settings - Allow Arbitrary Loads 옵션을 YES로 설정하고 할때는 문제가 생기지 않았다. 후에 NO로 바꿔주니 나이스 화면이 보이지 않는 문제가 있었다. 그래서 예외 처리로 Exception Domains에 현재 프로젝트에서 사용하는 나이스 주소를 넣어주고 NSExceptionRequiresForwardSecrecy 옵션을 NO로 설정해주었다.
파이어 베이스 애플 로그인, 이메일 로그인, 구글 로그인 Swift 소스 코드 예제 코드는 깔끔하지는 않고 동작만 확인했습니다. 코드가 아니어도 따로 작업해야하는 것들이 많이 있습니다. 그 부분은 다른 블로그를 참고해주세요. 라이브러리는 spm으로 추가해두었습니다. 생각나는거 끄적임 1. 파이어베이스 프로젝트 생성 2. 파이어베이스 프로젝트에 추가 작업 (Firebase 라이브러리, info 파일 등등) 3. 구글 로그인 추가 (GoogleSignIn 라이브러리) 4. 애플 로그인 서비스 등록 (개발자 계정 필요) 5. 애플 로그인은 파이어베이스 콘솔에서 연동 필요 6. URL 스킴 등록 (구글 로그인 구현시 필요) 7. 코드 구현 등... SwiftExample/FirebaseAuthSample at ..
현재 Xcode 버전은 14.3.1이다. 인터넷에 나와있는 방법으로 지난 버전의 iOS 시뮬레이터를 설치하면 iOS 13.7까지는 설치가 되었다. 근데 나는 iOS13도 해보고 싶었는데, 다른 사람들이 알려준 방법들이 제대로 먹히질 않았다.. 한가지 의심은 버전 문제라고 생각하고 Xcode 버전을 낮추었다. 그래도 iOS 13은 찾을 수 없었다. 그래서 OS 버전도 낮추기로 결심했다. 현재 사용중인 맥은 Ventura였고 나는 Monterey로 낮출 생각으로 진행했다. 맥OS 버전 다운그레이드 설정 방법(이전 버전 macOS 되돌리는 방법) (tistory.com) 맥OS 버전 다운그레이드 설정 방법(이전 버전 macOS 되돌리는 방법) 애플의 macOS는 1년에 한 번씩 새로운 OS가 출시되는데요. 새..
글을 자주 올리지 않기 때문에 눈에 띄는 투데이 성장률을 보여주지는 않지만, 그래도 뭔가 들어오기는 한다. 결론은 전기세도 못 모으는 수준인 것 같다. 블로그 주제도 IT라서 단가도 낮을 것 같고.. 들어오자마자 바로 나가는 사람들이 대부분이라고 판단된다. 어떤 날은 클릭 없음에도 수익이 잘나오고 하는거보면 정말 알쏭달쏭하다. 투데이도 성장하다가 어느선에서 멈췄다. 이상태가 지속된다면 1년이 지나도 지금과 같은 수익이 될 것으로 예상된다.
블로그를 진행하면서 어차피 글을 계속 쓰는거 사탕값이라도 벌면 좋지 않을까? 라는 생각으로 광고를 붙여뒀다. 따로 스킨을 만지기도, 뭔가 고민하면서까지 설치하기에는 시간이 아깝다 느껴서 티스토리에서 지원해주는 기본 방법으로 적용을 해두었다.
이번에 공부를 하면서 우연찮게 iOS 13 버전을 설치해야하는 상황이 생겼다. 사용하는 라이브러리가 지원을 하는지 확인이 필요한 상황이지만 지난 iOS 기기를 가지고 있지 않아서,, 도큐멘트에 의존해서 진행을 하고 있기는 하다. 하지만 찾아보니 쉽게 Xcode에 지난 iOS 버전을 설치할 수 있다고 하더라. 하지만 사용하는 14.3.1버전의 Xcode는 iOS 13.7까지 지원해준다고한다. 이거라도 해주는게 어딘가.. 바로 시도해봐야겠다. 참고한 글 Xcode 시뮬레이터 추가 및 ios 버전 선택해서 설치하기 (tistory.com) Xcode 시뮬레이터 추가 및 ios 버전 선택해서 설치하기 1. Xcode 실행 2. 좌측 상단 메뉴에서 Preferences 선택 3. Components 메뉴에서 원하..
Xcode에서 UIColor 에셋 설정을 완료하고 다크모드와 라이트모드를 적용을 했으나를 사용하는 다크모드 혹은 라이트모드가 반영되지 않는 겨우가 있습니다. 분명 화면 모드를 변경했고 다른 애들은 다 바뀌었는데, 특정 누군가가 바뀌지 않는 경우를 저는 경험했습니다. 첫 번째로 확인해야하는 곳은 UIColor 에셋입니다. 여기도 문제가 없이 제대로 해두었다면, UIColor를 cgColor로 사용했는지 확인을 해야합니다. self.textFieldBoxView.layer.borderColor = UIColor(named: "surface200-Dark1")?.cgColor 위와 같이 UIColor를 cgColor로 적용하고있는 경우 변경이 적용되지 않습니다. 이유로는 cgColor가 다이나믹 컬러를 지원하..
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { if previousTraitCollection != nil { // 다크모드 라이트모드 변경후 수행 할 코드 if previousTraitCollection?.userInterfaceStyle == .dark { // 다크모드 상태입니다. } else { // 다트모드 상태가 아닙니다. } } } 다크모드를 변경을 감지하고 싶을때 사용하면 되는 코드입니다. UIView와 UIViewController를 상속받으면 사용 가능합니다.
내가 생각하고 내가 경험하고 작성하는 UITableView.. 들어가기 전 UI작업을 하다보면 실제 화면 사이즈보다 컨텐츠 내용이 더 많은 경우를 고려해서 작업을 해야합니다. 이런 경우 Scroll을 사용하게됩니다. iOS에서는 UIScrollView(UIKit), ScrollView(SwiftUI)가 우리를 도와주게 됩니다. 오늘 글은 UIScrollView와 비교를 통해서 UITableView를 알아보려고합니다. 제일 쉽게 접하는 곳은 웹툰이 있습니다. UIScrollView를 사용하면 다양한 해상도를 지원하기에도 좋습니다. UITableView를 왜 쓰는데? 위에서 설명한대로 Scroll 가능한 도구가있는데 왜 UITableView를 쓰는지 궁금할 수 있습니다. 실제로 UIScrollView와 UI..
앱에서 특정 사용자에게만 제공되는 정보가 있다거나, 유료 컨텐츠를 제공해야하는 상황에서 화면이 캡처되는 것은 서비스하는 입장에서 매우 큰 걸림돌입니다. 이번 글에서는 화면 캡처와 녹화를 방지하고 다른 화면이 캡처되는 동작까지 수행해보겠습니다. Apple은 iOS에서 화면 녹화, 화면 캡처를 공식적으로 만는 방법을 제공하지 않습니다. 하지만 TextField에 있는 isSecureTextEntry를 통해서 이 기능을 구현할 수 있습니다. extension UIView { func preventCapture() { DispatchQueue.main.async { let textField = UITextField() textField.isSecureTextEntry = true self.addSubview(t..
1. Xcode에서 Assets으로 이동 2. "+" 버튼을 누르고 Color Set을 추가 3. 색상을 원하는 이름으로 변경 4. 원하는 색상을 설정. - Appearance는 Any, Light, Dark로 나뉜다. - 위 사진 Any Appearance와 Dark를 설정하면 Light모드에서 Any Appearance 색상이, Dark모드에서 Dark 색상이 표시된다. 코드로 사용하기 위해서는 아래와 같이 적용하면된다. // 사용법 self.myView.backgroundColor = UIColor(named: Assets이름) // 실제 사용 self.myView.backgroundColor = UIColor(named: "myColor")
self.myView.backgroundColor = UIColor.red self.myView.backgroundColor = UIColor(named: "myColor") self.myView.backgroundColor = UIColor(red: 0.0824, green: 0, blue: 0.1765, alpha: 1.0) backgroundColor를 사용하면 UIView 색상을 변경할 수 있습니다. backgroundColor는 UIColor를 값으로 받는데 UIColor가 지원하는 다양한 방법으로 구현이 가능합니다.
// FCM Import import FirebaseMessaging Messaging.messaging().unsubscribe(fromTopic: "FCM TOPIC NAME") { error in if let error = error { print("토픽 구독 해제 실패: \(error.localizedDescription)") } else { print("토픽 구독 해제 성공 : FCM TOPIC NAME") } } fromTopic 자리에 구독한 Topic 이름 입력으로 구독해제 가능. [iOS/Swift] FCM(Firebase Cloud Messaging) - Topic(주제)를 구독하고 메세지 받기 (tistory.com) [iOS/Swift] FCM(Firebase Cloud Messag..
우선 브릿지 삭제 방법은 forName자리에 삭제하고 싶은 userContentController 입력 self.loginWKView.configuration.userContentController.removeScriptMessageHandler(forName: "bridge") 사실 이건 나만이 겪을 것 같은 상황이다. 다른분들은 이런 상황이 당연하게 없겠지만.. 혹시나 해서 기록 웹이 이미 개발이 완료된 상태였다. 그 와중에 나는 하나의 ViewController에서 두개의 Webkit을 사용해야했고, 브릿지 이름 또한 똑같은 두 화면이었다. 해보면 바로 알겠지만 userContentController는 같은 이름을 두개의 브릿지에 등록할 수 없다. self.oneWk.configuration.use..
세상에 많은 앱들은 네이티브 + 웹으로 구성되어있다. 코어한 부분은 네이티브로.. 수정이 많지만 배포를 줄이고 싶은 경우, 이미 웹으로 만들어서 두번 작업하기 싫은 경우. iOS에서는 WebKit을 사용해서 네이티브 앱 안에서 웹을 보여준다. 단순하게 보여주는 것 뿐만 아니라 서로 소통하게 도와준다. 그게 바로 userContentController다. 적용은 너무 간단하다. self.loginWebKitView.configuration.userContentController.add(self, name: "bridge") 원하는 WebKit에 위 코드를 통해서 등록한다. name 자리에 웹에서 전송하는 브릿지와 동일해야한다. 위를 등록해두면 bridge라는 이름으로 메세지가 들어오게되고 그 안에 데이터를..
정답이 아닐 수 있습니다. 각자 상황에 맞는 방법을 찾아서 사용하시면 됩니다. 인터넷을 하다보면 새로운 창이 필요할 때가 있습니다. Nice 본인인증과 같은 상황이조. 근데 우리가 사용하는 앱들은 창이 여러개가 보여지지 않습니다. 대부분 사용하는 앱들은 회원가입을 진행하거나 물건을 구매할때 순차적으로 진행되는 화면을 보게됩니다. PC 환경 처럼 새로운 창을 띄우는 경우는 드물다고 봅니다.(기획에 따라 다름) 근데.. 역시 예외 상황은 꼭 생기고 PC 환경 처럼 새로운 탭을 열어서 작업이 필요한 경우가 있습니다. 이유는 모릅니다. 한가지 상황을 생각해봅시다. 어딘가에 회원가입을 웹뷰로 만드는 서비스가 있다고 생각합니다. (회원가입 부분은 프론트엔드 개발자가, 네이티브 WebKit과 브릿지 확인은 iOS 개..
[Node] FCM Topic(주제)을 이용한 Push Notification 메세지 전송 노드는 하나도 모릅니다. Chat GPT를 통해서 테스트한 내용을 나중에 필요한 상황에 사용하려고 작성합니다. 일단 왜 내가 Node를 통해서 테스트를해야하는지 설명하자면.. 지금 하는 프로젝트 서버팀에서 FCM 메세지를 보내주는데, 서버에서 받은 내용을 토대로 파싱해 알림 제목과 내용을 만들어 뿌려야한다. 왜냐하면?? 서버에서 내려주는 알림에는 title과 body가 없기 때문이다. 여기서 문제는 iOS에서 푸시를 받으면 title과 body를 자동으로 읽어서 사용자에게 보여주는 것으로 알고있다. 그럼 어떻게 중간 단계에서 파싱을하지? 아니.. 앱이 실행중이지 않다면 불가능한게 아닌가?? 라는 생각이 들었다. 반..
처음 FCM을 접하면 Token을 사용한 방법으로 연습하게됩니다. 그래서 이번에는 Topic(주제)를 통한 메세지 처리를 알아보도록 합니다. 이미 알고 오신 분들은 코드만 필요하시니 먼저 코드를 보여주고 왜 사용하는지 정리하도록 하겠습니다. Messaging.messaging().subscribe(toTopic: "kimjitae") { error in if let error = error { print("구독 실패: \(error.localizedDescription)") } else { print("구독 성공") } } FCM Token을 사용한다면, 유저마다 토큰을 서버에서 알고있어야합니다. 서버는 원하는 상황에 타겟 유저의 토큰을 DB에서 읽고 Push를 보내게됩니다. 이런 방식을 사용하면 다양한..
애플페이 교통카드 지원 속도… 개발자 문서에 '티머니' 추가 | 서울경제 (sedaily.com) 애플페이 교통카드 지원 속도… 개발자 문서에 '티머니' 추가 애플 개발자 문서에 ‘티머니(tmoney·T머니)’ 항목을 추가했다. 애플은 국내에서 티머니와 애플페이의 교통카드 사용 필... www.sedaily.com 티머니 문서가 추가되었다는 뉴스. tmoney | Apple Developer Documentation tmoney | Apple Developer Documentation There's never been a better time to develop for Apple platforms. developer.apple.com 티머니 도큐먼트 해당 문서를 들어가보면 다른 회사들 도큐먼트도 존재하는..
[Python] FCM Topic(주제)을 이용한 Push Notification 메세지 전송 Push Notification을 받을 수 있는 웹, 앱 환경이 필요합니다. 순서 1. 비공개 키 생성 2. 라이브러리 설치 3. 코드 작성 4. 실행 파이어베이스 프로젝트 설정에 들어갑니다. [서비스 계정 -> Python -> 새 비공개 키 생성]을 순서대로 눌러줍니다. 그럼 json 파일을 하나 다운을 받을겁니다. Python 파일과 비공개 키 json 파일을 원하는 위치에 준비시킵니다. pip install firebase_admin python 필요 라이브러리를 설치해줍니다. import firebase_admin from firebase_admin import credentials from fireb..
[Python] FCM Token을 이용한 Push Notification 메세지 전송 Push Notification을 받을 수 있는 웹, 앱 환경이 필요합니다. 순서 1. 비공개 키 생성 2. 라이브러리 설치 3. 코드 작성 4. 실행 파이어베이스 프로젝트 설정에 들어갑니다. [서비스 계정 -> Python -> 새 비공개 키 생성]을 순서대로 눌러줍니다. 그럼 json 파일을 하나 다운을 받을겁니다. Python 파일과 json 파일을 원하는 위치에 준비시킵니다. pip install firebase_admin python 필요 라이브러리를 설치해줍니다. import firebase_admin from firebase_admin import credentials from firebase_admin ..
[iOS/Swift] 라이브러리 수정하고 Git + Pod으로 관리하기 | by 김지태 | Jun, 2023 | Medium 미디엄에 작성한 제 글을 티스토리로 이동했습니다. 들어가며 앱을 만들다보면 UI/UX에 대해서 많은 라이브러리를 사용하게됩니다. 단순한 라이브러리들은 기능만 잘 수행하면되는데, 차트와 캘린더같이 큰 라이브러리들은 다양한 꾸밈 옵션을 제공하기도합니다. 하지만 라이브러리는 불특정 다수를 위해 만들어젔기 때문에 우리 앱에서 필요한 기능을 충족하지 않는 경우가 생깁니다. (로직적 기능은 생각하는 수준에서 지원되지만, 디자인은 기존 기능으로 부족한 경우가 있습니다.) 예를들어 서비스 메인 기능이 [일기, ToDo, 가계부]면서 ‘우리만의 특별한 기능과 디자인을 넣어야겠다’는 생각이 있다면,..
카카오내비, TMAP(티맵)과 같은 볼륨 조절 iOS에서 어플리케이션을 만들다 볼륨을 조절해야하는 상황이 생겼다. 인터넷에서 제일 먼저 나오는 방법을 찾아서 적용하면 위 사진처럼 볼륨 조절 모양이 나오지만 원하는 결과는 이루었다. 하지만 기기 전체 볼륨이 조절되기 때문에 사용성에서는 많이 안좋다고 생각되어서 더 찾아보았다. class TTSManager { static let shared = TTSManager() private let synthesizer = AVSpeechSynthesizer() var volume: Float = 1.0 internal func play(_ string: String) { let utterance = AVSpeechUtterance(string: string) utt..
미디엄에 작성한 글을 옮겨왔습니다. iOS 1년 개발하고 느낀점. 글을 들어가기 전에 개발하면서 느낀점..이지 정답은 아니라는 점을 먼저… | by 김지태 | 월요일 오후 9시 | Apr, 2023 | Medium iOS 1년 개발하고 느낀점 글을 들어가기 전에 개발하면서 느낀점..이지 정답은 아니라는 점을 먼저 알리고 시작합니다. medium.com 글을 들어가기 전에 개발하면서 느낀점..이지 정답은 아니라는 점을 먼저 알리고 시작합니다. 안녕하세요. 저는 개발한지는 3년 Swift로 iOS 개발을 시작한지는 1년된 주니어 개발자입니다. 이번 시간에는 혼자서 개발을 진행하면서 너무 당연하지만 처음 시작할 땐 몰랐던 내용을 공유해드리려고합니다.(이미 많은분들이 알고 있을 수도 ㅎㅎ) 모르는게 생기면 커뮤..
[iOS/Swift] Swift OCR - TesseractOCRiOS를 이용한 글자 인식(Text Recognition) iOS Swift 환경에서 OCR을 적용해보려고 합니다. 정확한 이해보다는 실행에 중점을 두고 진행하겠습니다. 사용할 라이브러리 이름은 TesseractOCRiOS입니다. 진행 순서 1. 소개 2. 설치 3. 간단 사용법 4. traineddata 추가 5. 결과 gali8/Tesseract-OCR-iOS: Tesseract OCR iOS is a Framework for iOS7+, compiled also for armv7s and arm64. (github.com) GitHub - gali8/Tesseract-OCR-iOS: Tesseract OCR iOS is a Framew..
[iOS/Swift] Swift OCR - SwiftyTesseract iOS Swift 환경에서 OCR을 적용해보려고 합니다. 정확한 이해보다는 실행에 중점을 두고 진행하겠습니다. 사용할 라이브러리 이름은 SwiftyTesseract입니다. 진행 순서 1. 소개 2. 설치 3. 간단 사용법 4. traineddata 추가 5. 결과 SwiftyTesseract/SwiftyTesseract: A Swift wrapper around Tesseract for use in iOS, macOS, and Linux applications (github.com) GitHub - SwiftyTesseract/SwiftyTesseract: A Swift wrapper around Tesseract for use in..