I'm a Developer/iOS & macOS
-
NotificationI'm a Developer/iOS & macOS 2020. 3. 2. 15:48
Notification에 대해 글을 쓸까 합니다. iOS에서 Notification은 크게 3가지로 볼 수 있습니다. 1. Notification 하나의 프로그램내에서 객체들이 주고 받는 메시지 특정 이벤트에 대해 옵저버를 등록하고 이벤트가 호출되면 옵저버에 등록해놓은 이벤트 핸들러를 호출합니다. 눈에 보이지 않습니다. Foundation 프레임워크에서 NotificationCenter 객체를 주로 사용 별도의 권한이 필요없습니다. 2. Local Notification 지정된 시간에 로컬 Device(스마트폰)에서 사용자에게 알람을 전달하는 기능입니다. 알림으로 보여집니다. UserNotification 프레임워크에서 제공 별도의 권한이 필요없습니다. 3. Remote Notification 대표적으로..
-
[iOS] 안전한 로그인을 위한 키체인(Keychain)과 FaceID/TouchID - 원문 해석본I'm a Developer/iOS & macOS 2020. 2. 4. 15:43
본 글은 Tim Mitra라는 개발자의 "How To Secure iOS User Data: The Keychain and Biometrics – Face ID or Touch ID" 라는 주제의 글입니다. iOS에서 유저의 데이터를 안전하게 관리하기 위한 코드 작성에 대한 튜토리얼로 키체인과 생체정보(FaceID, TouchID)를 활용하여 구현하는 예제 입니다. 본 글의 원문은 Raywenderlich에 있으니 정확한 text는 원문을 참고하시기 바랍니다. 로그인 화면으로 앱을 보호하는 것은 사용자 데이터를 보호하는 좋은 방법입니다. iOS에 내장 된 키 체인을 사용하여 데이터를 안전하게 유지할 수 있습니다. Apple은 또한 Face ID 및 Touch ID로 또 다른 보호 계층을 제공합니다. iP..
-
[iOS] SceneDelegate/UISceneSession 가장 깔끔하게 없애는 방법 - 'UISceneSession' is only available in iOS 13.0 or newerI'm a Developer/iOS & macOS 2020. 2. 4. 11:13
지난 WWDC2019에서는 SwiftUI와 더불어 iOS 13으로의 업데이트와 함께 새로운 프로젝트를 생성할 때, SceneDelegate를 무조건 생성하게 됩니다. 하지만 아직까지는 iOS13 버전보다 낮은 버전을 지원해야할 때이고, SwiftUI를 쓰지않고 개발하는 경우가 더 많기 때문에(또 인터넷에 있는 대부분의 예제들이 SceneDelegate없이 동작하기 때문에) 이를 제거하고 기존의 방법대로 프로젝트를 가동시키는 것을 설명하고자 합니다. 순서는 다음과 같습니다. SceneDelegate 제거 AppDelegate에 window객체 추가하기 AppDelegate에서 UISceneSession 관련 메소드 제거 .plist에서 SceneDelegate관련 속성 제거 -- 1. SceneDelega..
-
API Timeout 처리 (with. RxSwift)I'm a Developer/iOS & macOS 2020. 1. 15. 11:18
API Request를 보낼때 일반적으로 Request에 대한 부분은 미리 작성된 공통의 네트워크 코드에 넣어 놓는 경우가 많습니다. 이를테면 URLRequest의 timeoutInterval 속성에 몇 초 뒤에 timeout을 발생시킬 것인지에 대해 정의해 놓게 됩니다. 그런데 어떤 경우에는 특정 API 하나에서만 timeout이 더 짧은 시간이 필요한 경우가 있습니다. 이를 위해 공통으로 정의된 timeout 시간을 바꾸는 것은 바람직 하지 않습니다. 이럴 때는 API 콜을 하고 반환되는 observable에 아래의 메소드를 써주면 someObservable .timeout(2.0, scheduler: ConcurrentDispatchQueueScheduler.init(qos: .background)..
-
Xib(Nib)으로 outlet변수를 연결할 때, 크래시가 발생하는 현상I'm a Developer/iOS & macOS 2020. 1. 15. 08:06
iOS에서 커스텀 뷰를 사용하기 위해 Xib를 많이 사용하실텐데 이런 에러 많이 접하셨을 거에요. reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key ****.' 여기서 ###### 은 해당 커스텀 View의 클래스 이름이고 ****은 잘못 연결된 outlet변수입니다. 이 에러는 결과적으로 UILabel의 outlet을 잘못된 녀석이 소유하게 되어 발생하는 것입니다. 그래서 실제 CustomView에 연결이 안되었기 때문에 이런 에러가 발생하게 됩니다. 자 이제부터 해결해볼게요. UILabel의 outlet을 먼저 코드에 연결시켜보겠습니다. 그럼 위 그림과 같이 뜰거에요 File's ..
-
[CocoaPods Library pod repo push 에러] The validator used Swift 3.2 by default because no Swift version was specified.I'm a Developer/iOS & macOS 2019. 4. 4. 14:46
최근 XCode 10.2로 업데이트를 하고 나서(정확히는 Swift 5를 지원하기 시작하면서) CocoaPods 라이브러리를 pod에 push 하려고 하니까 다음과 같은 에러를 마주하였습니다. The validator used Swift 3.2 by default because no Swift version was specified. To specify a Swift version during validation, add the `swift_version` attribute in your podspec. Note that usage of the `--swift-version` parameter or a `.swift-version` file is now deprecated. 이건 사실 정확히는 모르겠지만..
-
Git 초기 설정하기. (iOS 앱개발 프로젝트)I'm a Developer/iOS & macOS 2018. 5. 7. 02:43
오늘은 iOS 앱 프로젝트 설정시 git 초기 설정에 대해 알아보겠습니다. 이번 내용은 Git 사용에 대해 익숙하지 않은 분들을 위해 준비했습니다. 앱 프로젝트를 처음 만들고 나서, 4 steps만 기억합시다. 1. git init하기 2. gitignore 3. git 원격 저장소 생성 4. 로컬 저장소를 원격 저장소로 설정하기 1. git init 자 그럼 첫번째 git init부터 알아보겠습니다. Xcode를 사용할때, git init을 터미널에서 명령어가 아니라 프로젝트 생성 시 쉽게 설정할 수 있습니다. 프로젝트를 생성하면서 보셨던 화면입니다. 저 체크박스를 체크하면 terminal에서 git init 명령어를 친 것과 같은 효과를 가집니다. 이 과정은 자신의 로컬환경에 git 저장소를 생성하는..
-
Outlet 변수와 Action 메소드 명 바꾸기 팁I'm a Developer/iOS & macOS 2018. 4. 9. 15:48
최근에 공부하다가 새로운 것을 알아냈습니다. 기존에는 항상 outlet변수나 action 메소드 명이 마음에 안들면 1.코드에서 이름 삭제 2.storyboard에서 컨트롤 우클릭 후, 참조하고 있는 녀석 제거 3. 재연결따위의 방법을 사용했었습니다. (혹은 뭐 코드에서 이름 변경해서 storyboard에서 연결해주는 방법 등) 그런데.. storyboard와 연결된 이름을 이런 귀찮은 작업없이 그리고 에러없이 다이렉트로 바꾸는 법을 발견했습니다. 그 방법은 Refactor - Rename 기능을 사용 하는 것입니다. 자 그럼 스크린샷으로 보여드리겠습니다. 1. 저는 bottonConstraint라는 변수명이 마음에 들지 않았습니다.(사실 bottom으로 하려다가 오타를 냈죠 ㅎㅎ) 2. storyboa..