안녕하세요. iOSangBong입니다.프로젝트를 진행하다보니 로그인 프로세스에생체인식(Face ID / Touch ID)을 적용해야됐었는데요!이때 겪었던 경험을 공유하고자 합니다.애플에서 제공하는 LocalAuthentication을 사용해보겠습니다.https://developer.apple.com/documentation/localauthentication/lacontext LAContext | Apple Developer DocumentationA mechanism for evaluating authentication policies and access controls.developer.apple.com일단 LocalAuthentication을 import 해줍니다.그 다음 생채인식을 사용하는 함수를..
안녕하세. iOSangBong입니다. 오늘은 Swift에서 쉐이크모션을 사용하는 방법에 대해 알아보겠습니다. 현재 카카오톡에서 흔들기 모션을 하면 여러 가지 기능을 설정해놓을 수 있는 화면으로 이동하고 있습니다. 이와같은 기능을 한번 알아보죠! shake 모션을 사용하려는 ViewController로 이동해서 viewDidLoad처럼 motion을 쳐보면 이와 같이 motionBegan, motionEnded, motionCancelled가 나옵니다. 딱 보면 어떤식으로 사용하는지 느낌이 오시죠? motionBegan: 모션 이벤트가 시작되었음을 알려줌 motionEnded: 모션 이벤트가 종료되었음을 알려줌 motionCancelled: 모션 이벤트가 취소되었음을 알려줌 여기서 간단하게 motion의 ..
안녕하세요. iOSangBong입니다. 오늘은 keyWindow가 deprecated 됐을때 해결해보겠습니다. keyWindow 및 window 를 유용하게 사용하고 있었는데 deprecated가 되어 이후 OS에서 이상하게 작동하신 경우가 있으실텐데요. 그때 간단하게 해결할 수 있는 방법이 있습니다. extension UIApplication { var getWindow: UIWindow? { connectedScenes .compactMap { $0 as? UIWindowScene } .flatMap { $0.windows } .first { $0.isKeyWindow } } } UIApplication Extension에다가 간단하게 getWindow를 선언해서 사용할 수 있습니다 사용은 UIApp..
안녕하세요. iOSangBong입니다. 저번 시간에는 FocusState에 대해 간단하게 알아봤는데요. https://iosangbong.tistory.com/12 [iOS][SwiftUI] @FocusState 간단하게 알아보기 안녕하세요. iOSangBong입니다. 오늘은 FocusState에 대해 알아보겠습니다. 일단 공식 문서를 보게되면 https://developer.apple.com/documentation/swiftui/focusstate FocusState | Apple Developer Documentation A property wrapper type iosangbong.tistory.com 오늘은 FocusState를 바인딩하는 방법에 대해 알아보겠습니다. 일단 바인딩 해줄자식뷰를 만..
안녕하세요. iOSangBong입니다. 오늘은 간단하게 네트워크를 감지하는 방법에 대해 알아볼것 입니다. iOS 12 부터는 다행히 내부 라이브러리를 사용하면 됩니다. https://developer.apple.com/documentation/network/nwpathmonitor NWPathMonitor | Apple Developer Documentation An observer that you use to monitor and react to network changes. developer.apple.com NWPathMonitor 바로 사용해보도록 하겠습니다. 일단 Network를 import 해줍니다. 그런 다음 NWPathMonitor를 선언해줍니다. 간단하게 NWPathMonitor를 선언해..
안녕하세요. iOSangBong 입니다. 오늘은 간단하게 MQTT를 연결해보겠습니다. 기존에는 Objc로 되어있는 MqttClient를 사용을 하고 있었지만 Swift로된 MQTT로 변경을 하는 과정에서 정리를 해놓겠습니다! 제가 사용한 라이브러리는 CocoaMQTT 입니다. https://github.com/emqx/CocoaMQTT GitHub - emqx/CocoaMQTT: MQTT 5.0 client library for iOS and macOS written in Swift MQTT 5.0 client library for iOS and macOS written in Swift - GitHub - emqx/CocoaMQTT: MQTT 5.0 client library for iOS and mac..
안녕하세요. iOSangBong 입니다. 오늘은 QRCode를 만들어보려고 합니다. QRCode 만드는 방법은 아~주 간단합니다. CIFilter 안에 qrCodeGenerator를 사용하면 되는데 1. 우선 CoreImage.CIFilterBuiltins를 import 해줍니다. import CoreImage.CIFilterBuiltins 2. 이미지 렌더링에 필요한 CIContext와 QR 코드 생성을 해주는 CIFilter.qrCodeGenerator()를 선언해줍니다. // 이미지 렌더링을 처리하는 부분 let context = CIContext() // QR 코드 생성기 필터 let filter = CIFilter.qrCodeGenerator() 3. QR Code에 원하는 데이터를 넣어줍니다...
현재 회사에서 앱을 여러개 관리하며 프로젝트 전역에서 사용되는 로직들을 모아둔 Util 클래스 뿐만 아니라 공통적인 모듈을 좀 더 쉽게 관리하기 위해 SPM을 사용하고 있다. 개인적으로도 SPM을 만들면 추후 내가 사용하기에도 좋을 것 같고 SPM으로 정리해 놓으면 깔끔할 것 같아 정리를 해보려고 한다. 1. Swift Package Manager? Cocoapods이나 Carthage와 같은 써드파티 툴이 아닌 퍼스트파티 툴(1st party tool)로 Apple에서 제공하는 종속성 관리를 위한 공식 도구 입니다. 패키지와 종속성을 관리할 수 있는 간단하고 효율적인 방법을 제공하여 서로 다른 프로젝트에서 코드를 쉽게 공유하고 재사용할 수 있습니다. 2. SPM 생성 Xcode>New>Package..
Xcode 프로젝트를 코드 없이 구현하려고 할때 하는 방법이다. 일단 내가 나중에 사용할 것 같아서 블로그로 정리해보려고 한다. 1. 프로젝트 만들기 일단 프로젝트를 만들어 준다. 위의 프로젝트를 생성하게 되면 이런 식으로 진입을 하게 되는데 왼쪽 상단에 있는 Info.plist를 들어가준다. ⭐️ 왼쪽에 있는 Main.storyboard 는 제거를 해도되고 안해도된다. ⭐️ 2. Info.plist의 Storyboard Name 제거 Info.plist에 진입해서 열고 열다보면 Stroyboard Name이 있는데... 마이너스를 눌러서 삭제 시킨다.. 삭제를 시키지 않으면... 이와 같이 Thread 1: "Invalid parameter not satisfying: [name length] > 0"..