[1] 단축어 만들고 싶은 이유 XCode에서 빌드를 돌리면 ~/Library/Developer/Xcode/DerivedData 에 빌드결과를 저장합니다. (xcode build cache 라고 생각하면 됩니다) 컴파일이 안될 경우, 보통 3단계를 합니다. 1) Clean build Command + Shift + K 를 눌러서 클린빌드합니다. DerivedData > 프로젝트 > Build 안의 폴더를 깨끗하게 비워줍니다. 클린빌드 하기 전, 클린빌드 한 후 2) Clean build folder 클린빌드를 했는데도 컴파일이 안된다!! 할때, 2번을 하게 됩니다. Command + Shift + Option + K 누르면 됩니다. Build 폴더를 아예 지워버립니다. 클린 빌드 폴더 하기 전, 클린 빌..
[1] 전처리문이란전처리문(PREPROCESSOR STATEMENT)은 말그대로 컴파일 이전에 미리 처리되는 문장을 의미합니다. 전처리문은 #로 시작합니다. 종류도 여러가지가 있는데요, 상수(constant)를 정의하는 전처리문#define PI 3.14 파일을 포함시키는 전처리문#include 파일이름 참거짓을 판별해서 어떤 코드를 컴파일 할지말지 결정하는 전처리문 #if 조건문 source code.. #endif등등이 있습니다. 참고로 #define이랑 #include는 스위프트에서 못써요-!! 위의 예제는 C에서 주로 쓰이는 것 가져왔습니다. [2] Swift에서 전처리문을 쓴 경우 iOS 개발하다가 쓰는 경우는보통 release와 debug를 구분하거나 #if DEBUG print("DEBUG에..
[WidgetKit] 위젯만들기 포스팅에서는 StaticConfiguration을 사용하였는데요, 위의 움짤처럼 Edit Widget 기능을 추가해주기 위해 IntentConfiguration을 사용해보겠습니다. 참고로 Making a Configurable Widget 문서를 보고 알게 되었는데, 저렇게 Editable한 위젯을 Configurable Widget이라고 부릅니다-! 우선 Intent가 필요합니다. Widget extension 타겟으로 SiriKit Intent Definition File을 추가해주세요 (저는 파일이름 WidgetIntents로 해줬습니다.) Intent 파일을 클릭하고 + 눌러서 New Intent 해주세요 저는 PRList라고 이름을 지었습니다. Intent 카테고..
[1] Black Screen이 되어버렸을때 접근성 테스트하다가 소리는 나는데, 화면이 black screen으로 되어버린 적이 있었습니다. 그럴때는 손가락 세개로 홈 스크린을 빠르게 세번 누르면 화면이 다시 등장합니다.. (quickly triple-tap the screen) 출처: discussions.apple.com/thread/250398181 Accessibility dark screen - Apple Community I’m working with the accessibility voice over. I haven’t had this problem previously. When I turn voice over in, the home screen is dark even when I push ..
애플에서 예제로 보여준 Fruta 앱 처럼 macOS, iOS, and iPadOS에서 하나의 코드베이스로 다 동작하는 앱을 만들 수 있게 되었습니다. 👏 (iOS 14, XCode 12에서부터, SwiftUI를 이용해서) [1] Multi-platform 프로젝트 만들기 Xcode 12 베타버전을 열어주세요 새 프로젝트 만들기를 누르면 Multiplatform이라는 탭이 생겨있습니다. 거기서 App을 눌러주세요 프로젝트 이름을 입력해주고 프로젝트를 만들면 Shared, iOS, macOS 라는 그룹이 생겨져있습니다. 저는 test도 체크해서 저렇게 Tests iOS, Tests macOS라는 그룹도 생겼어요 그리고 iOS 또는 macOS로 돌려볼 수 있게 되어있어요 (mac OS는 빅서로 올려야지 돌리..
이번 WWDC 2020에서 Build an Action Classifier with Create ML 을 재밌게 봐서 따라해보기-! 우선 Create ML은 이 경로로 들어갈 수 있고 ML 모델 만들어주는 앱입니다. 새로 나온 Mac OS Big Sur에 Action Classification이라는 템플릿이 추가되었어요-! Action classification은 이름그대로 트레이닝 데이터로 넣은 비디오들의 액션을 캡쳐해서 모델을 트레이닝 시켜주는 템플릿입니다. 이번에 Vision에 human body pose를 detect하는 기능이 추가되어서 이런게 가능해졌다고 합니다. (참고로 동물이랑 물건 동작 인식은 안되고 사람만 됩니다.) 만든 모델에 인풋으로 액션 넣으면 이 액션(몸동작)은 여기 그룹에 속하..
App과 AppExtension (Today Extension, Widget Extension, Siri Extension 등..)은 UserDefaults를 공유하지 않습니다. 그 이유를 살펴볼게요 App Extension Programming Guide 를 보면 App과 App Extension의 관계가 나옵니다. Extension은 App안에 있지만 두개는 각각 다른 container를 가지고 있습니다. 그래서 기본적으로 둘 사이의 데이터는 공유되지 않습니다. 그래서 UserDefaults는 공유되지 않습니다. 하지만 위의 그림처럼 shared container를 사용해서 UserDefaults를 공유할 수 있어요 [1] App Group 설정 Capability에 AppGroup를 추가하고 App..
이런 플로우로 되어있는 PR 보여주는 앱을 예제로 하나 만들었습니다. 그리고 위젯을 만들어보겠습니다..! [ 유의사항 ] 1) Xcode 버전 Xcode 베타 버전(+iOS 베타 버전)에서 버그가 짱 많습니다. 위젯 갤러리에 위젯이 안뜰때도 있었고 (iOS 14 beta2에서는 해결되었다고 합니다.) extension으로 돌리면 크래쉬나는 경우도 있었고 (Xcode beta3에서 해결되었다고 합니다.) Xcode beta릴리즈노트들을 보면 위젯 관련 이슈들이 되게 많아요 😓 이 글을 쓰고 있는 시점에 beta3 까지 나왔는데, 더 있다가 개발하기를 추천드립니다. 지금도 XCode 껐다키면 빌드 성공하고 위젯갤러리에 위젯이 안나오는데 폰 껐다가 다시 켜서 앱 지우고 다시 깔면 나오고... 이런 현상들이 많..
위젯의 Configuration은 UI 담당 ViewContent와 리프레시 로직 담당 Provider가 있습니다. 코드로 보면 여기 들어가는 provider..! 저는 폴더 구조도 저렇게 구성했어요-! Provider에 대해서 자세히 알아볼게요 :-) [1] TimelineProvider, Timeline, TimelineEntry TimelineProvider는 이름 그대로 Timeline을 제공하여서 위젯킷에게 언제 위젯을 업데이트하고 싶은 지 알려주는 친구입니다. 특정한 시간에 WidgetKit은 Provider의 메소드를 호출하여서 새로운 Timeline을 요구합니다. (이건 아래서 자세하게 설명할게요) 그럼 Timeline이란 무엇일까요?! Timeline은 TimelineEntry 로 이루어..
Authorizing OAuth Apps 문서를 보고 따라한 기록-!! 저는 Github API를 이용해서 private repo에 접근하려고 (풀리퀘 등등 얻어오기 위함) Github OAuth Access Token이 필요해서 따라하게 되었습니다 :-) [ 순서 ] 1) OAuth application 등록하고 client_id 랑 client_secret 값을 알아낸다. 2) 사용자를 로그인 시켜서 임시 토큰이라고 할 수 있는 code 값을 받는다. 3) code값을 이용하여 access_token을 구한다. [1] OAuth application 등록하고 client-id & client-secret 값 얻기 register 에 들어가서 깃헙 로그인을 할 자신의 앱을 등록해주세요 제 프로젝트 이름..
- Total
- Today
- Yesterday
- PencilKit
- Django FCM
- flutter build mode
- DRF APIException
- drf custom error
- Flutter getter setter
- 구글 Geocoding API
- Dart Factory
- Django Heroku Scheduler
- flutter dynamic link
- github actions
- Watch App for iOS App vs Watch App
- Flutter Clipboard
- Python Type Hint
- ribs
- 플러터 얼럿
- Flutter Spacer
- 장고 Custom Management Command
- 장고 URL querystring
- flutter deep link
- flutter 앱 출시
- Flutter 로딩
- Flutter Text Gradient
- METAL
- 플러터 싱글톤
- Sketch 누끼
- ipad multitasking
- cocoapod
- SerializerMethodField
- Django Firebase Cloud Messaging
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |