일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UIKit
- kotlin
- Storyboard
- library
- PyQt5
- Python
- TableView
- Apple
- charts
- 그래프
- button
- Android
- 개발
- modal
- 개발자
- androidstudio
- Chrats
- UIButton
- Swift
- graph
- UITableView
- Xcode
- alamofire
- 어플리케이션
- ui
- cocoapods
- Chart
- 라이브러리
- ios
- PyQt
- Today
- Total
목록전체 글 (276)
Jiwift
macOS 맥 Sonoma 시작프로그램 관리 추가 제거 맥에서 시스템 부팅시 자동 실행되는 앱들을 추가하고 제거하는 방법 우선 "시스템 설정"을 실행합니다. "일반 -> 로그인 항목"으로 이동을 해줍니다. 여기서 "로그인 시 열기" 항목을 추가하고 제거할 수 있습니다. 추가하고 싶은 항목은 응용프로그램에서 앱을 선택하면 가능합니다.
안녕하세요. 이번에는 아이폰에서 웹 서버를 열 수 있게 해주는 GCDWebServer를 알아보려고 합니다. 사실 저도 많이 제대로 알지는 못하지만, 조금이나마 정보를 공유해 누군가는 필요할 수 있게 하려고 글을 작성하고 있습니다. swisspol/GCDWebServer: The #1 HTTP server for iOS, macOS & tvOS (also includes web based uploader & WebDAV server) (github.com) GitHub - swisspol/GCDWebServer: The #1 HTTP server for iOS, macOS & tvOS (also includes web based uploader & WebDAV server) The #1 HTTP serve..
[iOS/Swift] Firebase Crashlytics 에러 로그 수집 Apple, Android, Flutter, Unity를 위한 강력한 비정상 종료 보고 솔루션으로 앱 문제에 대한 명확하고 활용 가능한 분석 정보를 확인해 보세요. 구글 Firebase 상품 안에는 Crashlytics라는 에러 로그 수집 서비스가 있습니다. 가벼운 실시간 비정상 종료 보고 도구로 앱 품질을 저하하는 안정성 문제를 추적하고 우선순위를 지정하고 문제를 해결하는 데 도움이 됩니다 이미 구글 문서도 잘 되어 있지만 사진과 함께 설치와 사용법을 알아보도록 하겠습니다. 우선 파이어베이스와 앱을 연동하지 않은 분들은 앞에 글을 읽어주시기 바랍니다. 글 순서 1. 설정 2. 사용법 3. 안될 때 SPM을 사용해서 설치하도록 하..
[iOS/Swift] Firebase - 앱과 기본 연동하기(콘솔, info.plist) 구글 Firebase 기능을 사용하기 위해서는 콘솔을 통해서 앱을 연결시켜주어야 합니다. 어떤 기능을 사용하던 제일 첫 단계이니 모두 공통적으로 적용됩니다. 앱과 파이어베이스를 연동하기 위해서는 Bundle identifier를 필요로 합니다. Xcode에서 프로젝트 타겟으로 이동하여 번들을 확인하고 복사해 주세요. 현재 글 기준으로는 'com.jitaekim.FFFCCCMMM'입니다. 구글 파이어베이스 사이트로 이동합니다. Firebase Console (google.com) 여기서는 프로젝트를 생성할 수 있는데, 우선 적용하고자 하는 서비스 이름으로 프로젝트를 생성하고 나면 위 사진과 같은 프로젝트 페이지가 나옵..
Realm이라는 라이브러리를 SPM을 통해서 설치하려고 했는데, Could not be resolved 라는 메시지가 발생했습니다.. Add Anyway가 있긴 했지만 뭔~가 찜찜했습니다. 찾아보니 CocoaPods을 사용하라는 말도 있긴했는데, 저는 설치 버전 바꿔줌으로써 해결했습니다. 라이브러리들 같은 경우 깃허브를 통해서도 버전을 볼 수 있으니 확인해 보세요. Dependency Rule 수정을 통해 해결
[iOS/Swift] Xcode 계속 로딩 빌드가 안 끝날 때, 디바이스 등록 확인 정 - 말 많은 원인들이 있겠지만 생각나는 거 하나 적어보겠습니다. 사실 별거 없습니다. 정말 간단하지만 크게 신경 안 쓰다 보면 다른 곳에서 원인을 찾고 있을 것 같은 것 중 하나를 작성합니다. Xcode가 빌드가 계속 로딩 상태에 빠저 있는 듯한 느낌을 받을 때가 있는데, 사실 자주는 없습니다. 언제냐 하면 새로운 디바이스를 연결했을 때입니다. 누구나 알고 있지만 어쩌다 한번 일어나기 때문에 까먹을 때도 있으니 Xcode 로딩이 안 끝날 때는 프로비저닝 뭐 문구가 있는지.. 디바이스 등록은 했는지.. 확인을 해봅시다. 등록이 제대로 되었는지는 개발자 센터에서 확인합니다. 개발자 센터에서 기기를 들어가 주세요. 그럼 이..
맥용 카카오톡에 지문인식 기능이 추가되어서 바로 사용해보았다. 우선 카카오톡을 실행하고 좌측 하단 버튼을 누르고 환경설정에 들어간다. 그럼 누구나 바로 알아볼 수 있게 Touch ID 사용 체크박스가 보인다. 과감하게 선택해준다. 지문인식을 사용하기 위해서 암호를 사용하던 지문을 사용하던 본인인증을 해준다. 카카오톡을 다시 실행해보면 위와 같이 Touch ID로 잠금 해제 버튼이 나온다. 실행하자마자 지문을 물어보면 편리할 것 같은데 버튼을 눌러야하는게 아쉽다. 따로 키보드나 마우스 없이 맥북 키보드와 터치패드를 사용하는 입장에선 마우스로 버튼 누르고 손가락 지문인식하는 시간보다 타자를 치는 시간이 더 빠르다..
짧고 간결하게 알아보는 Alamofire 개발하다가 Body와 Query를 동시에 전송해야하는 일이 있었습니다. 근데 제 머리로는 간편하게 하는 방법이 생각나지 않았으나 그래도 먼길 돌아 해결한 것 같아 공유하려고합니다. func dictionaryToJsonString(dictionary: [String: Any]) -> String? { do { let jsonData = try JSONSerialization.data(withJSONObject: dictionary, options: []) if let jsonString = String(data: jsonData, encoding: .utf8) { return jsonString } } catch { print("Error converting di..
짧고 간결하게 알아보는 Alamofire 서버와 데이터를 주고받는 방식은 다양하게 있습니다. 이번에는 URL에 데이터를 담아서 보내도록 하겠습니다. let headers: HTTPHeaders = ["Content-Type": "application/json", "Accept": "application/json"] let parameters: Parameters = ["userId": "swift", "name": "kimjitae", "amount": 1000, "age": 27] AF.request(url, method: .get, parameters: parameters, encoding: URLEncoding.queryString, headers: headers) .validate(statusCo..
짧고 간결하게 알아보는 Alamofire 서버와 데이터를 주고받는 방식은 다양하게 있습니다. 이번에는 Body에 데이터를 담아서 보내도록 하겠습니다. let headers: HTTPHeaders = ["Content-Type": "application/json", "Accept": "application/json"] let parameters: Parameters = ["userId": "swift", "name": "kimjitae", "amount": 1000, "age": 27] AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers) .validate(statusCod..
짧고 간결하게 알아보는 Alamofire 파라메터란? HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법 중 하나 Alamofire의 Request는 위와 같이 생겼습니다. let parameters: Parameters = ["userId": "swift", "name": "kimjitae", "amount": 1000, "age": 27] AF.request(url, method: .post, parameters: parameters) .validate(statusCode: 200..
[iOS/Swift] Alamofire Header 적용 HTTPHeaders 사용 헤더 짧고 간결하게 알아보는 Alamofire 간단하게 Alamofire Header 적용하는 방법 Http Header란? HTTP 헤더는 클라이언트와 서버가 요청 또는 응답으로 부가적인 정보를 전송할 수 있도록 해준다. Alamofire에서 Request를 사용하는 방법은 위와 같습니다. 우리는 위 양식에 맞게 Header를 넣어주면 됩니다. let headers: HTTPHeaders = ["Content-Type": "application/json", "Accept": "application/json"] AF.request(url, method: .get, headers: headers) .validate(stat..
기존에 UIKit에서 Preview 기능을 사용하려면 어렵진 않지만 코드 여러 줄 작성해야 했습니다. 하지만 이번에 Xcode15에서는 매우 간단하게 사용할 수 있습니다. #Preview { RouletteViewController() } 이 코드 처럼 Preview 매크로를 선언하고 원하는 화면을 넣어주면 Canvas가 나오면서 미리 보기가 활성화됩니다. 다만 빌드 시간이 오래 걸리기도 하고 아직 저는 미숙해서 그런지 가끔 무한 로딩에 빠지는 화면도 있고, 에러가 발생하는 화면도 있더라고요.
[iOS/Swift] Xcode 빌드 성공 후 앱 실행 안될 때 간혹 가다 Xcode에서 빌드는 성공했으나 앱이 실행 안 되는 경우가 있습니다. 에러도 없고 다 괜찮은데 왜 그럴까요?? 1. 빌드 대상 타겟이 앱이 맞는지 제대로 확인한다. 여러 라이브러리가 섞여있는 경우 실수로 타겟이 변경되어 앱이 실행되지 않는 경우가 있습니다. 이럴 땐 다시 타겟을 앱으로 바꾸어 빌드하면 실행됩니다. ' 2. Scheme 설정의 Executable이 None인 경우 타겟도 제대로 했으나 왜 실행이 안될까요? 그럴 땐 Scheme 설정을 확인해보세요. Executable가 None이라면 눌러서 앱으로 바꿔주면 빌드 성공 후 앱이 제대로 실행될 것입니다. 가끔 이런 실수들로 별것도 아닌 일에 걱정하게 되고 쓸데없이 다른 ..
[iOS/Swift] Toss Payments - 자동 결제(빌링) 연동하기 (정기 구독, 구독제) 지난 시간에는 정기 결제를 이해하는 글을 작성했습니다. 이번에는 연동하는 방법을 알아보도록 하겠습니다. 우선 이 글은 SDK가 아닌 웹뷰 방식으로 연동하는 점을 참고하고 글을 읽어주세요. 코드가 이해가 안 가시는 분은 다 읽고 맨 아래 전체 코드를 참고해 주세요. 웹뷰 방식을 연동하기 위해서는 WebKit View를 사용해야 합니다. Storyboard 혹은 코드를 통해서 선언해 주세요. 저는 Storyboard를 통해서 하겠습니다. Storyboard로 진행하시는 분들은 위와 같이 연결과 webkit을 import 해주세요. 다음은 웹뷰를 띄어야 합니다. 저 같은 경우는 따로 웹을 구축하지 않고 위 HT..
이번에는 Toss 정기 결제를 연동하기 앞서 정기 결제가 어떤 식으로 진행이 되는지, 알아보도록 하겠습니다. 우선 아래 내용은 모두 토스 페이먼츠 개발자 센터에 있는 내용으로 정확한 내용을 원하시는 분들은 개발자 센터를 방문해 주세요. 자동결제(빌링) 이해하기 | 토스페이먼츠 개발자센터 (tosspayments.com) 자동결제(빌링) 이해하기 | 토스페이먼츠 개발자센터 자동결제는 정기 배송, 음악 스트리밍과 같은 구독형 서비스에서 사용하는 결제 방식입니다. 자동결제(빌링)의 개념과 과정을 설명합니다. docs.tosspayments.com 저는 공부와 기억을 하기 위해서 작성하도록 하겠습니다. 우선 정기 결제 흐름을 알고 가야 서버와 작업할 때 대화하기가 좋습니다. 저는 머리가 나빠서 그런지 API 문..
우리는 지난 글에서 Alamofire를 통해서 간단하게 데이터를 파싱 하는 방법을 알아보았습니다. 이번 시간에는 복수의 데이터가 들어오는 경우를 가지고 이야기하겠습니다. 사용하는 데이터는 지난번과 같지만 Array로 반복적으로 들어오는 데이터입니다. Model은 그대로 사용해도 됩니다. 해당 방법은 struct뿐만 아니라 Int, String 타입들도 동일합니다. 위 사진에서 보시는 것처럼 특정 JSON 양식이 반복되는 것을 볼 수 있습니다. 이런 경우에는 정말 간단한 방법으로 처리가 가능한데요. 바로 지난번 코드를 수정해서 보도록 하조 let url: String = "https://jsonplaceholder.typicode.com/todos" AF.request(url, method: .get) ...
Alamofire 글을 오랜만에 작성합니다. 우리는 Alamofire를 통해서 데이터를 주고받을 수 있습니다. 오늘 서버에서 응답된 결과를 쉽게 받아서 사용하는 방법을 알아보려고 합니다. 기존에 Alamofire에서는 응답온 결과를 JSON으로 변환하는 코드를 직접적으로 작성했던 것으로 기억합니다. (기억도 잘 안 나요..) 하지만 지금은 'responseDecodable'라는 메서드가 struct 타입으로 편리하게 변경해 줍니다. 그렇다고 해서 data를 json으로 바꾸고 하는 작업들이 안 쓰이는 것은 아닙니다. 어떤 경우에는 사용이 필요한 경우도 있으니 알아두는 것도 좋습니다. { "userId": 1, "id": 1, "title": "delectus aut autem", "completed": ..
처음 개발하다 보면 API 통신을 어떻게 호출하고 어떻게 받아야 하는지 생각보다 이해하기가 어렵다. 그럴 때를 대비해서 친절하게 무료로 API를 만들어주시는 착한 형님들이 존재하는데, 그중 하나를 소개하려고 한다. JSONPlaceholder - Free Fake REST API (typicode.com) JSONPlaceholder - Free Fake REST API {JSON} Placeholder Free fake API for testing and prototyping. Powered by JSON Server + LowDB. Tested with XV. Serving ~2 billion requests each month. jsonplaceholder.typicode.com 위 사이트를 들어가..
2023년 10월 24일 처음으로 투데이 300을 돌파했다. 물론 매일 그런건 아니고 한시적이었지만 앞으로 점점 더 방문자가 늘어나길 기대하고있다. 뭔가 뿌듯해지는 기분이 점점 늘어난다.
토스 페이먼츠에는 멀티 결제 UI라는 기능이 있습니다. 상품에 따라서 결제 방법을 다르게 한다는 기능인데, 커스터 마이징이 간편하다는 마케팅을 하는 서비스인 만큼 화면도 간편하게 변화를 줄 수 있는 건 좋은 것 같습니다. (사실 다른 회사들은 어떤지 모름.) 결제 화면을 꾸밀 수 있는 결제 UI 설정 메뉴에서 UI 추가하기 버튼을 누르면 커스터 마이징이 가능한가 봅니다. 저는 안 해봤기 때문에 얼마나 편리한지는 모르겠지만 앱에서 적용하는 건 정-말 간단합니다. 지난 글을 읽고 오신분들은 사실 이미 알고 있는 방법이기도 합니다. 바로 variantKey를 활용하는 것인데요. 새로운 UI를 추가할 때 variantKey도 같이 생성하게 됩니다. (제가 직접 해본 건 아니고 토스 말대로는 그래요..) // 결..
토스에서 제공해 주는 솔루션 중 '브랜드 페이'라는 것이 있습니다. 서비스만의 간편 결제를 지원한다고 합니다. 카드와 계좌를 추가하고 관리할 수 있게 됩니다. 토스 개발자 센터에서 있는 내용을 기반으로 작성되어 많은 내용이 중복됩니다. 저는 브랜드 페이를 사용하지 않아서 화면 연동만 수행하는 것까지 진행해 보겠습니다. 토스에서 주장하는 기능 1. 결제수단 등록 및 관리(카드/계좌 2. 결제수단 별명 설정 3. 결제 관리 4. UI 커스터 마이징 5. 자동결제 브랜드페이에서 Access Token이란? 브랜드페이는 고객 정보와 관련된 API를 사용할 때 Bearer 인증과 Access Token을 사용해요. Access Token은 고객을 식별하고 보호된 고객 정보에 접근할 때 필요한 토큰이에요. 예를 들..
티스토리 투데이 버그현상을 공유하려고 한다. 투데이를 증가시키는 그런 내용이 아닌 진짜 버그이다. 이게 원래 그런지는 모르겠지만, 같은 시간에 찍은 투데이를 보았을 때 관리 화면은 71이고 블로그에서 본 화면은 17이다. 새로고침을 해보아도 마찬가지였다. (사진으로 1분 차이가 있지만 캡처 당시에는 바로바로 찍은 사진입니다.) 이게 티스토리 정책상 블로그 화면에 투데이를 업데이트하는 주기가 있는지는 모르겠지만.. 일단!.. 은 표시가 다르게 되는 버그가 있다고 판단했다. 시간이 흘러 관리자 화면 투데이가 89가 되었음에도 블로그 화면에서는 17로 나왔다 CSS 에러인지 아니면 진짜 업데이트하는 주기가 있는지는 기다려봐야 알 것 같다. (아시는 분 있으면 알려주세요 ㅎㅎ..) 블로그 글을 예약으로 작성하기..
우리는 지난 글에서 토스 페이먼츠의 '결제 위젯'을 화면에 표시하는 방법을 알아보았습니다. 그 상태로도 결제가 진행되는 결제 수단들이 존재하기도 하지만(like toss...) 아닌 수단들도 존재합니다. 예를 들어 제가 사용하는 현대 카드 같은 경우는 앱을 실행해주어야 하는데 지난 글에서 진행한 상태로는 앱 실행이 아닌 앱스토어로 유도되는 기능만 하지 결제 정보가 넘어가지 않았습니다. 이 부분은 제가 참고한 토스 벨로그에도 따로 언급이 없어서 제가 잘 못한 것일 수도 있지만 방법은 언제나 존재했습니다. 해당 내용은 토스 개발자 센터에 '웹뷰 연동하기'에서 찾을 수 있는데, '우리는 SDK 연동이니깐'라고 해서 무시하고 지나가면 안 됩니다. 중간에 보면 앱 스킴 목록이 나옵니다. *우선 위 설명은 웹뷰 과..
이번 시간에는 Toss Payments의 결제 위젯 SDK를 연동하도록 하겠습니다. 사실 이미 토스 패이먼츠 개발자 블로그나 개발자 센터에 방법이 다 나와있기는 합니다. 하지만 정리하고 넘어가기 위해서 글을 작성해 보도록 하겠습니다. *진행을 하기 위해서는 토스 서버와 연결 작업이 완료된 서버가 있다는 가정하에 앱 부분만 설명하도록 하겠습니다. *이 글에서는 Storyboard가 아닌 코드를 통한 UI 구현으로 진행하겠습니다. 1. 초기 선언 작업 2. 위젯 UI 보이기 3. 사용자 구매 정보 입력 및 결제 진행 4. Delegate를 통해 결과받고 처리하기 앱에서 결제를 처리하기 위한 단계로는 크게 4가지로 볼 수 있습니다. 결제에 필요한 초기 선언과 init 작업들을 진행하고, 위젯 UI를 출력한 후..
[iOS/Swift] TestFlight 이전 빌드 다시 받기 [iOS/Swift] 테스트플라이트 이전 빌드 다시 받기 이번에는 TestFlight된 이전 빌드를 다시 받아 보려고 합니다. 생각보다 TestFlight 앱을 자세하게 보시는 분들이 없는 것을 알고 글을 작성하였습니다. 사실 정말 간단하기 때문에 그렇게 긴글이 되지 않습니다. 저는 하급 노동자이기 때문에 TestFlight에 있는 앱은 모자이크 처리하는 점 양해 부탁드립니다. 테스트플라이트를 접속하면 내가 속했던 테스트 앱들이 나오게 됩니다. 거기서 이전 빌드를 '원하는 앱'을 선택해주고 메뉴에서 '이전 빌드'를 선택해서 들어가주세요. '이전 빌드'를 들어오게되면 테스트가 등록된 버전들이 나오게 됩니다. 여기서 원하는 버전을 선택해서 들어가..
[iOS/Swift] Toss Payments - 결제 솔루션 알아보기 자료 출처 : 토스 페이먼츠 오늘은 토스 결제 솔루션인 Toss Payments를 알아보도록 하겠습니다. 이름에 맞게 솔루션은 결제를 담당하며 UI와 API를 제공해 줍니다. 토스답게 찾아보면 개발자 사이트도 정리가 잘되어있어서 보기 좋지만 iOS만을 위한 정보와 경험으로 정리해 보도록 하겠습니다. 이번에는 크게 3가지로 분류되는 결제 서비스 종류를 소개하겠습니다. 결제 위젯(단건 결제) 토스페이먼츠가 제공하는 기본 결제 서비스 결제수단 추가 및 제거 가능 신용/체크카드, 각종 간편 결제 시스템과 연동 특별한 사유가 없으면 해당 솔루션을 사용 토스는 결제 위젯을 위와 같이 설명하고 있습니다. 쉽게 생각해서 우리가 사용하는 PG 기능을..
할 줄 아는 건 원카드와 롤토체스 밖에 모르는 사람의 강원랜드 두 번째 방문기 내부에서는 사진을 찍을 수 없어 올릴 사진이 없다. 도박을 하면 가정이 망할 수 있습니다. 위치 위치는 "강원특별자치도 정선군 사북읍 하이원길 265"이다. 서울에서 가려면 진짜 멀다. 강릉, 양양, 속초에서도 진짜 멀다... 한번 가려면 마음먹고 가야 한다. 사실 위치 때문에도 중독되기가 힘든데, 도박 중독에 빠지는 사람들은 진짜 대단하다... 가는 방법은 운전으로 가는 게 대부분일탠데,,, 정말 정말 마음먹고 가야 한다. 방문 이유 방문 이유는 하이원 리조트에 있는 루지를 탑승하기 위해서 갔다가 시간이 남아서 강원랜드를 방문하게 되었다... 애초에 돈을 걸고 도박하는 것을 싫어하는 성격이기도 하고 룰을 하나도 모르는 데다가..
iOS가 업데이트되면서 개발자 모드를 사용하기 위해서 설정에서 활성화를 해야 하는 단계가 추가되었습니다. 어렵진 않으나 어쩌다 한번 설정하기 때문에 헷갈리는 경우가 있어 블로그에 저장하도록 하겠습니다. 아이폰 설정 -> 개인정보 보호 및 보안 -> 개발자 모드 -> 활성화 위 순서대로 개발자 모드를 활성화합니다. 여기서부터는 애플이 하라는 대로 수행하면 되기 때문에 따로 알아볼 필요는 없습니다. 혹시 모르니 일단 다음 절차들이 궁금하신 분들은 계속 읽어주세요. 개발자모드를 활성화하면 재시동을 요구합니다. 아이폰이 재시동하면 Alert으로 한번 더 확인하고 단말기에 비밀번호가 설정된 경우 암호를 입력하면 됩니다. 이로서 개발자 모드를 활성화를 완료했습니다.
[iOS] 아이폰 사파리(Safari) 동작 안 할 때 혹은 결제, 본인인증 창 안 뜰 때 아이폰을 사용하다 보면 혹은 웹을 개발하다 보면 Safari에서 원하는 동작을 하지 않을 수 있습니다. 버튼이 안 눌러지거나, 결제 화면이 안 뜨거나 본인인증이 안 뜨거나와 같은 상황입니다. 이런 경우 정말 버그일 수 있지만 우선적으로 설정을 먼저 확인해봐야 합니다. 아이폰 설정 -> 고급 -> JavaScript 위 설정이 어떻게 되어있느냐에 따라서 웹이 동작하거나 안 할 수 있습니다. 이미 활성화되어있는 경우 다른 문제가 있을 수 있지만, 비활성화 상태라면 상태를 변경하고 웹에서 동작을 다시 한번 확인해 보세요.